diff --git a/src/main/java/com/graywolf336/jail/JailMain.java b/src/main/java/com/graywolf336/jail/JailMain.java
index b10fa16..0bdbe55 100644
--- a/src/main/java/com/graywolf336/jail/JailMain.java
+++ b/src/main/java/com/graywolf336/jail/JailMain.java
@@ -78,7 +78,6 @@ public class JailMain extends JavaPlugin {
cmdHand = new CommandHandler(this);
jh = new JailHandler(this);
pm = new PrisonerManager(this);
- jsm = new JailStickManager(this);
PluginManager plm = this.getServer().getPluginManager();
plm.registerEvents(new BlockListener(this), this);
@@ -101,6 +100,10 @@ public class JailMain extends JavaPlugin {
plm.registerEvents(this.mpl, this);
}
+ if(getConfig().getBoolean(Settings.JAILSTICKENABLED.getPath())) {
+ jsm = new JailStickManager(this);
+ }
+
jt = new JailTimer(this);
reloadJailPayManager();
@@ -188,9 +191,11 @@ public class JailMain extends JavaPlugin {
/** Reloads the Jail Sticks, so the new ones can be loaded from the config. */
public void reloadJailSticks() {
- this.jsm.removeAllStickUsers();
- this.jsm = null;
- this.jsm = new JailStickManager(this);
+ if(getConfig().getBoolean(Settings.JAILSTICKENABLED.getPath())) {
+ this.jsm.removeAllStickUsers();
+ this.jsm = null;
+ this.jsm = new JailStickManager(this);
+ }
}
/**
diff --git a/src/main/java/com/graywolf336/jail/JailManager.java b/src/main/java/com/graywolf336/jail/JailManager.java
index 071a5ae..ad0b899 100644
--- a/src/main/java/com/graywolf336/jail/JailManager.java
+++ b/src/main/java/com/graywolf336/jail/JailManager.java
@@ -101,7 +101,7 @@ public class JailManager {
* @return The {@link Jail} with the given name, if no jail found this will return null.
*/
public Jail getJail(String name) {
- return this.jails.get(name);
+ return name.isEmpty() ? this.jails.values().iterator().next() : this.jails.get(name);
}
/**
diff --git a/src/main/java/com/graywolf336/jail/JailStickManager.java b/src/main/java/com/graywolf336/jail/JailStickManager.java
index fa00124..41cf706 100644
--- a/src/main/java/com/graywolf336/jail/JailStickManager.java
+++ b/src/main/java/com/graywolf336/jail/JailStickManager.java
@@ -2,10 +2,9 @@ package com.graywolf336.jail;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.UUID;
import org.bukkit.Material;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
import com.graywolf336.jail.beans.Stick;
import com.graywolf336.jail.enums.Settings;
@@ -19,47 +18,61 @@ import com.graywolf336.jail.enums.Settings;
*
*/
public class JailStickManager {
- private ArrayList stickers;
+ private ArrayList stickers;
private HashMap sticks;
public JailStickManager(JailMain plugin) {
- this.stickers = new ArrayList();
+ this.stickers = new ArrayList();
this.sticks = new HashMap();
this.loadJailSticks(plugin);
}
private void loadJailSticks(JailMain pl) {
- FileConfiguration config = pl.getConfig();
-
//item name,time,jail name,reason
- for(String s : config.getStringList(Settings.JAILSTICKSTICKS.getPath())) {
- pl.debug(s);
- String[] a = s.split(",");
-
- //Check if the jail given, if any, exists
- if(!a[2].isEmpty()) {
- if(!pl.getJailManager().isValidJail(a[2])) {
+ if(pl.getJailManager().getJails().size() == 0) {
+ pl.getLogger().warning("Can't have jail sticks without any jails.");
+ }else {
+ for(String s : pl.getConfig().getStringList(Settings.JAILSTICKSTICKS.getPath())) {
+ pl.debug(s);
+ String[] a = s.split(",");
+ String jail = a[2];
+
+ //Check if the jail given, if any, exists
+ if(jail.isEmpty()) {
+ jail = pl.getJailManager().getJail("").getName();
+ }else {
+ if(!pl.getJailManager().isValidJail(jail)) {
+ pl.getLogger().severe(s);
+ pl.getLogger().severe("The above jail stick configuration is invalid and references a jail that doesn't exist.");
+ continue;
+ }
+ }
+
+ Material m = Material.getMaterial(a[0].toUpperCase());
+ if(this.sticks.containsKey(m)) {
pl.getLogger().severe(s);
- pl.getLogger().severe("The above jail stick configuration is invalid and references a jail that doesn't exist.");
+ pl.getLogger().severe("You can not use the same item for two different Jail Sticks. This already exists as a Jail Stick: " + a[0]);
+ continue;
+ }
+
+ long time = 5;
+ try {
+ time = Util.getTime(a[1]);
+ } catch (Exception e) {
+ pl.getLogger().severe(s);
+ pl.getLogger().severe("The time format on the above jail stick configuration is incorrect.");
+ continue;
+ }
+
+ try {
+ this.sticks.put(m, new Stick(jail, a[3], time, Double.valueOf(a[4])));
+ }catch (Exception e) {
+ e.printStackTrace();
+ pl.getLogger().severe(s);
+ pl.getLogger().severe("Unable to create a new stick for " + a[0] + ", see the exception above for details.");
continue;
}
- }
-
- Material m = Material.getMaterial(a[0].toUpperCase());
- if(this.sticks.containsKey(m)) {
- pl.getLogger().severe(s);
- pl.getLogger().severe("You can not use the same item for two different Jail Sticks. This already exists as a Jail Stick: " + a[0]);
- continue;
- }
-
- try {
- this.sticks.put(m, new Stick(a[2], a[3], Long.valueOf(a[1]), Double.valueOf(a[4])));
- }catch (Exception e) {
- e.printStackTrace();
- pl.getLogger().severe(s);
- pl.getLogger().severe("Unable to create a new stick for " + a[0] + ", see the exception above for details.");
- continue;
}
}
@@ -83,91 +96,53 @@ public class JailStickManager {
}
/**
- * Adds a player to be using a jail stick, with the player instance.
+ * Adds a player to be using a jail stick, with the uuid of the player.
*
- * @param player to add
+ * @param id of the player to add
*/
- public void addUsingStick(Player player) {
- this.stickers.add(player.getName());
+ public void addUsingStick(UUID id) {
+ this.stickers.add(id);
}
/**
- * Adds a player to be using a jail stick, with their username.
+ * Removes a player from using a jail stick, with the uuid of the player.
*
- * @param name of the player to add
+ * @param id of the player to remove using a jail stick
*/
- public void addUsingStick(String name) {
- this.stickers.add(name);
- }
-
- /**
- * Removes a player from using a jail stick, with the player instance.
- *
- * @param player to remove using a jail stick
- */
- public void removeUsingStick(Player player) {
- this.stickers.remove(player.getName());
- }
-
- /**
- * Removes a player from using a jail stick, with their username.
- *
- * @param name of the player to remove using a jail stick
- */
- public void removeUsingStick(String name) {
- this.stickers.remove(name);
+ public void removeUsingStick(UUID id) {
+ this.stickers.remove(id);
}
/**
* Returns whether or not the player is using a jail stick.
*
- * @param player to check if using one
+ * @param id of the player to check if using one
* @return true if the player is using a jail stick, false if not
*/
- public boolean isUsingJailStick(Player player) {
- return this.stickers.contains(player.getName());
- }
-
- /**
- * Returns whether or not the player is using a jail stick.
- *
- * @param name of the player to check if using one
- * @return true if the player is using a jail stick, false if not
- */
- public boolean isUsingJailStick(String name) {
- return this.stickers.contains(name);
+ public boolean isUsingJailStick(UUID id) {
+ return this.stickers.contains(id);
}
/**
* Toggles whether the player is using a jail stick, returning the true if enabled false if disabled.
*
- * @param player to toggle using a stick
+ * @param id of the player to toggle using a stick
* @return true if we enabled it, false if we disabled it.
*/
- public boolean toggleUsingStick(Player player) {
- return this.toggleUsingStick(player.getName());
- }
-
- /**
- * Toggles whether the player is using a jail stick, returning the true if enabled false if disabled.
- *
- * @param name of the person to toggle
- * @return true if we enabled it, false if we disabled it.
- */
- public boolean toggleUsingStick(String name) {
- if(this.stickers.contains(name)) {
- this.stickers.remove(name);
+ public boolean toggleUsingStick(UUID id) {
+ if(this.stickers.contains(id)) {
+ this.stickers.remove(id);
return false;
}else {
- this.stickers.add(name);
+ this.stickers.add(id);
return true;
}
}
/** Removes all the users currently using the sticks. */
public void removeAllStickUsers() {
- for(String s: stickers) {
- this.removeUsingStick(s);
+ for(UUID id : stickers) {
+ this.removeUsingStick(id);
}
}
}
diff --git a/src/main/java/com/graywolf336/jail/command/JailHandler.java b/src/main/java/com/graywolf336/jail/command/JailHandler.java
index 8ae545d..1e3719c 100644
--- a/src/main/java/com/graywolf336/jail/command/JailHandler.java
+++ b/src/main/java/com/graywolf336/jail/command/JailHandler.java
@@ -27,6 +27,7 @@ import com.graywolf336.jail.command.subcommands.JailPayCommand;
import com.graywolf336.jail.command.subcommands.JailRecordCommand;
import com.graywolf336.jail.command.subcommands.JailReloadCommand;
import com.graywolf336.jail.command.subcommands.JailStatusCommand;
+import com.graywolf336.jail.command.subcommands.JailStickCommand;
import com.graywolf336.jail.command.subcommands.JailStopCommand;
import com.graywolf336.jail.command.subcommands.JailTeleInCommand;
import com.graywolf336.jail.command.subcommands.JailTeleOutCommand;
@@ -190,6 +191,7 @@ public class JailHandler {
load(JailRecordCommand.class);
load(JailReloadCommand.class);
load(JailStatusCommand.class);
+ load(JailStickCommand.class);
load(JailStopCommand.class);
load(JailTeleInCommand.class);
load(JailTeleOutCommand.class);
diff --git a/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java b/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java
index 8ca1eb2..0d8aa1c 100644
--- a/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java
+++ b/src/main/java/com/graywolf336/jail/command/subcommands/JailStickCommand.java
@@ -1,6 +1,7 @@
package com.graywolf336.jail.command.subcommands;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
import com.graywolf336.jail.JailManager;
import com.graywolf336.jail.command.Command;
@@ -19,7 +20,7 @@ import com.graywolf336.jail.enums.Settings;
public class JailStickCommand implements Command {
public boolean execute(JailManager jm, CommandSender sender, String... args) throws Exception {
if(jm.getPlugin().getConfig().getBoolean(Settings.JAILSTICKENABLED.getPath())) {
- boolean using = jm.getPlugin().getJailStickManager().toggleUsingStick(sender.getName());
+ boolean using = jm.getPlugin().getJailStickManager().toggleUsingStick(((Player) sender).getUniqueId());
if(using) {
sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.JAILSTICKENABLED));
diff --git a/src/main/java/com/graywolf336/jail/listeners/PlayerListener.java b/src/main/java/com/graywolf336/jail/listeners/PlayerListener.java
index c09f2db..5ff6a7a 100644
--- a/src/main/java/com/graywolf336/jail/listeners/PlayerListener.java
+++ b/src/main/java/com/graywolf336/jail/listeners/PlayerListener.java
@@ -211,7 +211,7 @@ public class PlayerListener implements Listener {
Player attacker = (Player) event.getDamager();
Player player = (Player) event.getEntity();
- if(pl.getJailStickManager().isUsingJailStick(attacker)) {
+ if(pl.getJailStickManager().isUsingJailStick(attacker.getUniqueId())) {
if(pl.getJailStickManager().isValidStick(attacker.getItemInHand().getType())) {
if(attacker.hasPermission("jail.usejailstick." + attacker.getItemInHand().getType().toString().toLowerCase())) {
//The person the attacker is trying to jail stick is already jailed, don't handle that
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 916b409..81c28c1 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -77,4 +77,4 @@ jailpay:
priceInfinite: 10000
jailstick:
enabled: true
- sticks: ["stick,30,,Running away,-1", "blaze_rod,15,,Having too much fun,6"]
\ No newline at end of file
+ sticks: ["stick,30m,,Running away,-1", "blaze_rod,15m,,Having too much fun,6"]
\ No newline at end of file