//UNTESTED: add personal jumppads

This commit is contained in:
Lemon 2019-02-09 14:45:37 +05:00
parent 7c6c407f78
commit b4bb2cf4d8
2 changed files with 51 additions and 46 deletions

View File

@ -9,7 +9,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) @CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Manage jumppads", usage = "/<command> <on | off | info | sideways <on | off> | strength <strength (1-10)>>", aliases = "launchpads,jp") @CommandParameters(description = "Manage jumppads", usage = "/<command> <on | off | info | sideways <on | off>>", aliases = "launchpads,jp")
public class Command_jumppads extends FreedomCommand public class Command_jumppads extends FreedomCommand
{ {
@ -25,28 +25,37 @@ public class Command_jumppads extends FreedomCommand
{ {
if (args[0].equalsIgnoreCase("info")) if (args[0].equalsIgnoreCase("info"))
{ {
msg("Jumppads: " + (plugin.jp.getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE); msg("Jumppads: " + (plugin.jp.players.get(playerSender).isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
msg("Sideways: " + (plugin.jp.getMode() == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE); msg("Sideways: " + (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
msg("Strength: " + (plugin.jp.getStrength() * 10 - 1), ChatColor.BLUE);
return true; return true;
} }
if ("off".equals(args[0])) if ("off".equals(args[0]))
{ {
FUtil.adminAction(sender.getName(), "Disabling Jumppads", false); if(plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.OFF)
plugin.jp.setMode(Jumppads.JumpPadMode.OFF); {
msg("Your jumppads are already disabled.");
return true;
}
msg("Disabled your jumppads.", ChatColor.GRAY);
plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.OFF);
} }
else else
{ {
FUtil.adminAction(sender.getName(), "Enabling Jumppads", false); if(plugin.jp.players.get(playerSender) != Jumppads.JumpPadMode.OFF)
plugin.jp.setMode(Jumppads.JumpPadMode.MADGEEK); {
msg("Your jumppads are already enabled.");
return true;
}
msg("Enabled your jumpppads.", ChatColor.GRAY);
plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK);
} }
} }
else else
{ {
if (plugin.jp.getMode() == Jumppads.JumpPadMode.OFF) if (plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.OFF)
{ {
msg("Jumppads are currently disabled, please enable them before changing jumppads settings."); msg("Your jumppads are currently disabled, please enable them before changing jumppads settings.");
return true; return true;
} }
@ -54,43 +63,30 @@ public class Command_jumppads extends FreedomCommand
{ {
if ("off".equals(args[1])) if ("off".equals(args[1]))
{ {
FUtil.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false); if(plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.MADGEEK)
plugin.jp.setMode(Jumppads.JumpPadMode.MADGEEK); {
msg("Your jumppads are already set to normal mode.");
return true;
}
msg("Set Jumppads mode to: Normal", ChatColor.GRAY);
plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.MADGEEK);
} }
else else
{ {
FUtil.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false); if(plugin.jp.players.get(playerSender) == Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS)
plugin.jp.setMode(Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS);
}
}
else if (args[0].equalsIgnoreCase("strength"))
{ {
final float strength; msg("Your jumppads are already set to normal and sideways mode.");
try
{
strength = Float.parseFloat(args[1]);
}
catch (NumberFormatException ex)
{
msg("Invalid Strength");
return true; return true;
} }
msg("Set Jumppads mode to: Normal and Sideways", ChatColor.GRAY);
if (strength > 10 || strength < 1) plugin.jp.players.put(playerSender, Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS);
{
msg("Invalid Strength: The strength may be 1 through 10.");
return true;
} }
FUtil.adminAction(sender.getName(), "Setting Jumppads strength to: " + String.valueOf(strength), false);
plugin.jp.setStrength((strength / 10) + 0.1F);
} }
else else
{ {
return false; return false;
} }
} }
return true; return true;
} }
} }

View File

@ -1,6 +1,7 @@
package me.totalfreedom.totalfreedommod.fun; package me.totalfreedom.totalfreedommod.fun;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -10,6 +11,7 @@ import me.totalfreedom.totalfreedommod.util.MaterialGroup;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
@ -22,10 +24,8 @@ public class Jumppads extends FreedomService
// //
@Getter @Getter
@Setter @Setter
private JumpPadMode mode = JumpPadMode.MADGEEK; private double strength = 1 + 0.1F;
@Getter public HashMap<Player, JumpPadMode> players = new HashMap<>();
@Setter
private double strength = 0.4;
public Jumppads(TotalFreedomMod plugin) public Jumppads(TotalFreedomMod plugin)
{ {
@ -44,10 +44,19 @@ public class Jumppads extends FreedomService
} }
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event)
{
if(!players.containsKey(event.getPlayer()))
{
players.put(event.getPlayer(), JumpPadMode.OFF);
}
}
@EventHandler @EventHandler
public void onPlayerMove(PlayerMoveEvent event) public void onPlayerMove(PlayerMoveEvent event)
{ {
if (mode == JumpPadMode.OFF) if (players.get(event.getPlayer()) == JumpPadMode.OFF)
{ {
return; return;
} }
@ -56,7 +65,7 @@ public class Jumppads extends FreedomService
final Block block = event.getTo().getBlock(); final Block block = event.getTo().getBlock();
final Vector velocity = player.getVelocity().clone(); final Vector velocity = player.getVelocity().clone();
if (mode == JumpPadMode.MADGEEK) if (players.get(event.getPlayer()) == JumpPadMode.MADGEEK)
{ {
Boolean canPush = pushMap.get(player); Boolean canPush = pushMap.get(player);
if (canPush == null) if (canPush == null)
@ -84,7 +93,7 @@ public class Jumppads extends FreedomService
velocity.add(new Vector(0.0, strength, 0.0)); velocity.add(new Vector(0.0, strength, 0.0));
} }
if (mode == JumpPadMode.NORMAL_AND_SIDEWAYS) if (players.get(event.getPlayer()) == JumpPadMode.NORMAL_AND_SIDEWAYS)
{ {
if (MaterialGroup.WOOL_COLORS.contains(block.getRelative(1, 0, 0).getType())) if (MaterialGroup.WOOL_COLORS.contains(block.getRelative(1, 0, 0).getType()))
{ {
@ -118,10 +127,10 @@ public class Jumppads extends FreedomService
public static enum JumpPadMode public static enum JumpPadMode
{ {
OFF(false), NORMAL(true), NORMAL_AND_SIDEWAYS(true), MADGEEK(true); OFF(false), NORMAL_AND_SIDEWAYS(true), MADGEEK(true);
private final boolean on; private final boolean on;
private JumpPadMode(boolean on) JumpPadMode(boolean on)
{ {
this.on = on; this.on = on;
} }