diff --git a/src/main/java/com/Acrobot/ChestShop/Commands/AddAccessor.java b/src/main/java/com/Acrobot/ChestShop/Commands/AddAccessor.java index 8d39f3f8f..d2431f862 100644 --- a/src/main/java/com/Acrobot/ChestShop/Commands/AddAccessor.java +++ b/src/main/java/com/Acrobot/ChestShop/Commands/AddAccessor.java @@ -2,7 +2,8 @@ import static com.Acrobot.ChestShop.Permission.ADMIN; -import org.bukkit.Bukkit; +import java.util.UUID; + import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.command.Command; @@ -14,6 +15,7 @@ import com.Acrobot.ChestShop.Permission; import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Signs.ChestShopSign; +import com.Acrobot.ChestShop.UUIDs.NameManager; /** * @author Acrobot @@ -53,12 +55,17 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } String playerName = args[0]; - Player newAccessor = Bukkit.getPlayer(playerName); + UUID newAccessor = NameManager.getUUIDFor(playerName); if (newAccessor == null) { sender.sendMessage(Messages.prefix(Messages.UNKNOWN_PLAYER)); return true; } + if (ChestShopSign.isAccessor(newAccessor, sign)) { + sender.sendMessage(Messages.prefix(Messages.ACCESSOR_ALREADY_ADDED)); + return true; + } + ChestShopSign.addAccessor(newAccessor, sign); sender.sendMessage(Messages.prefix(Messages.NEW_ACCESSOR_ADDED)); return true; diff --git a/src/main/java/com/Acrobot/ChestShop/Commands/RemoveAccessor.java b/src/main/java/com/Acrobot/ChestShop/Commands/RemoveAccessor.java index 2a5788731..0188b7a65 100644 --- a/src/main/java/com/Acrobot/ChestShop/Commands/RemoveAccessor.java +++ b/src/main/java/com/Acrobot/ChestShop/Commands/RemoveAccessor.java @@ -2,7 +2,8 @@ import static com.Acrobot.ChestShop.Permission.ADMIN; -import org.bukkit.Bukkit; +import java.util.UUID; + import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.command.Command; @@ -14,6 +15,7 @@ import com.Acrobot.ChestShop.Permission; import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Signs.ChestShopSign; +import com.Acrobot.ChestShop.UUIDs.NameManager; /** * @author Acrobot @@ -53,12 +55,17 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } String playerName = args[0]; - Player accessorToRemove = Bukkit.getPlayer(playerName); + UUID accessorToRemove = NameManager.getUUIDFor(playerName); if (accessorToRemove == null) { sender.sendMessage(Messages.prefix(Messages.UNKNOWN_PLAYER)); return true; } + if (!ChestShopSign.isAccessor(accessorToRemove, sign)) { + sender.sendMessage(Messages.prefix(Messages.ACCESSOR_NOT_ADDED)); + return true; + } + ChestShopSign.removeAccessor(accessorToRemove, sign); sender.sendMessage(Messages.prefix(Messages.ACCESSOR_REMOVED)); return true; diff --git a/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java b/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java index 8e2f8e5cb..d963f4dca 100644 --- a/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java +++ b/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java @@ -90,7 +90,9 @@ public class Messages { @PrecededBySpace public static final String UNKNOWN_PLAYER = "Player not found."; public static final String NEW_ACCESSOR_ADDED = "New accessor added."; - public static final String ACCESSOR_REMOVED = "New accessor removed."; + public static final String ACCESSOR_ALREADY_ADDED = "Accessor already added."; + public static final String ACCESSOR_REMOVED = "Accessor removed."; + public static final String ACCESSOR_NOT_ADDED = "Player isn't a accessor."; public static String prefix(String message) { return PREFIX + message; diff --git a/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java b/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java index 2aa35c70b..0e8e698aa 100644 --- a/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java +++ b/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java @@ -168,15 +168,20 @@ public static Collection getAccessors(Sign sign) { return new HashSet<>(Arrays.asList(split)); } - public static void addAccessor(OfflinePlayer player, Sign sign) { + public static void addAccessor(UUID player, Sign sign) { Collection accessors = getAccessors(sign); - accessors.add(player.getUniqueId().toString()); + accessors.add(player.toString()); saveAccessors(accessors, sign); } - public static void removeAccessor(OfflinePlayer player, Sign sign) { + public static boolean isAccessor(UUID player, Sign sign) { Collection accessors = getAccessors(sign); - accessors.remove(player.getUniqueId().toString()); + return accessors.contains(player.toString()); + } + + public static void removeAccessor(UUID player, Sign sign) { + Collection accessors = getAccessors(sign); + accessors.remove(player.toString()); saveAccessors(accessors, sign); }