diff --git a/src/main/java/com/graywolf336/jail/beans/Jail.java b/src/main/java/com/graywolf336/jail/beans/Jail.java index 00bbcb8..31d09dd 100644 --- a/src/main/java/com/graywolf336/jail/beans/Jail.java +++ b/src/main/java/com/graywolf336/jail/beans/Jail.java @@ -150,6 +150,11 @@ public class Jail { return this.cells.get(name); } + /** Removes the cell from the jail. */ + public void removeCell(String name) { + this.cells.remove(name); + } + /** Returns the cell which the given player name is jailed in, null if not. */ public Cell getCellPrisonerIsIn(String name) { for(Cell c : cells.values()) diff --git a/src/main/java/com/graywolf336/jail/command/commands/JailCheckCommand.java b/src/main/java/com/graywolf336/jail/command/commands/JailCheckCommand.java index 9bae4b5..0f9d7e1 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/JailCheckCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/JailCheckCommand.java @@ -9,7 +9,7 @@ import com.graywolf336.jail.command.CommandInfo; @CommandInfo( maxArgs = 1, minimumArgs = 0, - needsPlayer = true, + needsPlayer = false, pattern = "jailcheck|jcheck", permission = "jail.command.jailcheck", usage = "/jailcheck (Player name)" diff --git a/src/main/java/com/graywolf336/jail/command/commands/JailCommand.java b/src/main/java/com/graywolf336/jail/command/commands/JailCommand.java index 666fbee..85900e3 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/JailCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/JailCommand.java @@ -100,16 +100,17 @@ public class JailCommand implements Command { //Check if the cell is defined, and if so check to be sure it exists. if(!params.cell().isEmpty()) { if(jm.getJail(params.jail()).getCell(params.cell()) == null) { - sender.sendMessage(ChatColor.RED + "The cell provided does not exist."); + //There is cell by that name + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOCELL, new String[] { params.cell(), params.jail() })); return true; }else if(jm.getJail(params.jail()).getCell(params.cell()).hasPrisoner()) { //If the cell has a prisoner, don't allow jailing them to that particular cell - sender.sendMessage(ChatColor.RED + "The destination cell already has a prisoner in it."); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.CELLNOTEMPTY, params.cell())); Cell suggestedCell = jm.getJail(params.jail()).getFirstEmptyCell(); if(suggestedCell != null) { - sender.sendMessage(ChatColor.RED + "We found an empty cell in the same jail (" + params.jail() + ") with the name: " + suggestedCell.getName()); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.SUGGESTEDCELL, new String[] { params.jail(), suggestedCell.getName() })); }else { - sender.sendMessage(ChatColor.RED + "We didn't find any empty cells, this jail's (" + params.jail() + ") cells appear to be full"); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOEMPTYCELLS, params.jail())); } return true; @@ -141,7 +142,7 @@ public class JailCommand implements Command { //check if the event is cancelled if(event.isCancelled()) { if(event.getCancelledMessage().isEmpty()) - sender.sendMessage(ChatColor.RED + "Jailing " + params.player() + " was cancelled by another plugin and they didn't leave you a message."); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.CANCELLEDBYANOTHERPLUGIN, params.player())); else sender.sendMessage(event.getCancelledMessage()); diff --git a/src/main/java/com/graywolf336/jail/command/commands/JailListCellsCommand.java b/src/main/java/com/graywolf336/jail/command/commands/JailListCellsCommand.java index 6e5f3ba..f8b862e 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/JailListCellsCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/JailListCellsCommand.java @@ -8,6 +8,7 @@ import com.graywolf336.jail.beans.Cell; import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; +import com.graywolf336.jail.enums.LangString; @CommandInfo( maxArgs = 1, @@ -36,15 +37,15 @@ public class JailListCellsCommand implements Command { } if(message.isEmpty()) { - sender.sendMessage(ChatColor.RED + "There are no cells for the jail '" + args[0] + "'."); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOCELLS, j.getName())); }else { sender.sendMessage(ChatColor.GREEN + message); } }else { - sender.sendMessage(ChatColor.RED + "No jail by the name of '" + args[0] + "'."); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOJAIL, args[0])); } }else { - sender.sendMessage(ChatColor.RED + " There are no jails."); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOJAILS)); } sender.sendMessage(ChatColor.AQUA + "-------------------------"); diff --git a/src/main/java/com/graywolf336/jail/command/commands/JailListCommand.java b/src/main/java/com/graywolf336/jail/command/commands/JailListCommand.java index d4cd32d..e7bba19 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/JailListCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/JailListCommand.java @@ -7,6 +7,7 @@ import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; +import com.graywolf336.jail.enums.LangString; @CommandInfo( maxArgs = 0, @@ -27,7 +28,7 @@ public class JailListCommand implements Command { sender.sendMessage(ChatColor.BLUE + " " + j.getName() + " (" + j.getAllPrisoners().size() + ")"); } }else { - sender.sendMessage(ChatColor.RED + " There are no jails."); + sender.sendMessage(" " + jm.getPlugin().getJailIO().getLanguageString(LangString.NOJAILS)); } sender.sendMessage(ChatColor.AQUA + "-------------------------"); diff --git a/src/main/java/com/graywolf336/jail/command/commands/JailRemoveCellCommand.java b/src/main/java/com/graywolf336/jail/command/commands/JailRemoveCellCommand.java index 0a47672..4f2ba46 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/JailRemoveCellCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/JailRemoveCellCommand.java @@ -3,23 +3,47 @@ package com.graywolf336.jail.command.commands; import org.bukkit.command.CommandSender; import com.graywolf336.jail.JailManager; +import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; +import com.graywolf336.jail.enums.LangString; @CommandInfo( maxArgs = 2, - minimumArgs = 1, - needsPlayer = true, + minimumArgs = 2, + needsPlayer = false, pattern = "jailremovecell|jrcell", permission = "jail.command.jailremovecell", usage = "/jailremovecell [Jail Name] (Cell Name)" ) public class JailRemoveCellCommand implements Command{ - // Remove the specified Cell from the Specified Jail, if no cell specified will delete nearest cell + // Remove the specified Cell from the Specified Jail public boolean execute(JailManager jm, CommandSender sender, String... args) { - return true; //If they made it this far, the command is intact and ready to be processed. :) + Jail j = jm.getJail(args[0]); + + if(j != null) { + if(!j.getCells().isEmpty()) { + if(j.getCell(args[1]) != null) { + //remove it! + j.removeCell(args[1]); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.CELLREMOVED, + new String[] { args[1], args[0] })); + }else { + //No cell by that name + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOCELL, + new String[] { args[1], args[0] })); + } + }else { + //No cells in this jail + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOCELLS, args[0])); + } + }else { + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOJAIL, args[0])); + } + + return true; } } diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java index 0dadccd..dd33a98 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java @@ -8,6 +8,7 @@ import com.graywolf336.jail.JailManager; import com.graywolf336.jail.beans.Jail; import com.graywolf336.jail.command.Command; import com.graywolf336.jail.command.CommandInfo; +import com.graywolf336.jail.enums.LangString; @CommandInfo( maxArgs = 1, @@ -20,12 +21,19 @@ import com.graywolf336.jail.command.CommandInfo; public class UnjailCommand implements Command { public boolean execute(JailManager jm, CommandSender sender, String... args) { + //Check if the player is jailed if(jm.isPlayerJailed(args[0])) { + Jail j = jm.getJailPlayerIsIn(args[0]); Player p = jm.getPlugin().getServer().getPlayerExact(args[0]); + + //Check if the player is on the server or not if(p == null) { - sender.sendMessage(ChatColor.RED + "Offline unjailing is not implemented yet."); + //The player is not, so we'll set the remaining time to zero and do it when they login next + j.getPrisoner(args[0]).setRemainingTime(0L); + j.getPrisoner(args[0]).setOfflinePending(true); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.WILLBEUNJAILED, args[0])); }else { - Jail j = jm.getJailPlayerIsIn(args[0]); + //Player is online, so let's try unjailing them try { jm.getPlugin().getPrisonerManager().unJail(j, j.getCellPrisonerIsIn(args[0]), p, j.getPrisoner(args[0])); } catch (Exception e) { @@ -33,7 +41,8 @@ public class UnjailCommand implements Command { } } }else { - sender.sendMessage(ChatColor.RED + "That player is not jailed."); + //The player is not currently jailed + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOTJAILED, args[0])); } return true; diff --git a/src/main/java/com/graywolf336/jail/enums/LangString.java b/src/main/java/com/graywolf336/jail/enums/LangString.java index 09db4ee..f98bef4 100644 --- a/src/main/java/com/graywolf336/jail/enums/LangString.java +++ b/src/main/java/com/graywolf336/jail/enums/LangString.java @@ -20,8 +20,12 @@ public enum LangString { BROADCASTMESSAGEFOREVER ("jailing"), /** The message sent when we broadcast/log the message for any time above -1. */ BROADCASTMESSAGEFORMINUTES ("jailing"), + /** The message sent to the sender when trying to jail someone and a plugin cancels it but doesn't leave a message why. */ + CANCELLEDBYANOTHERPLUGIN ("jailing"), /** The message sent when trying to jail someone who can't be jailed by permission. */ CANTBEJAILED ("jailing"), + /** The message sent to the sender when they are trying to jail into a cell which is not empty. */ + CELLNOTEMPTY ("jailing"), /** The message sent when someone is jailed without a reason. */ DEFAULTJAILEDREASON ("jailing"), /** The message sent when players are jailed without a reason. */ @@ -30,12 +34,20 @@ public enum LangString { JAILEDWITHREASON ("jailing"), /** The message sent when players are jailed and they try to talk. */ MUTED ("jailing"), + /** The message sent when the sender tries to jail someone in a cell and there aren't any cells to suggest. */ + NOEMPTYCELLS ("jailing"), + /** The message sent when a player is not jailed and the sender is trying to see/do something about it. */ + NOTJAILED ("jailing"), /** The message sent to the prisoner when they try to do something but it is protected. */ PROTECTIONMESSAGE ("jailing"), /** The message sent to the prisoner when they try to do something and it is protected, but no penalty. */ PROTECTIONMESSAGENOPENALTY ("jailing"), + /** The message sent to the sender of a command when suggesting a cell. */ + SUGGESTEDCELL ("jailing"), /** The message sent when players are released from jail. */ UNJAILED ("jailing"), + /** The message went when an offline player is unjailed. */ + WILLBEUNJAILED ("jailing"), //Handcuffing section @@ -58,6 +70,14 @@ public enum LangString { /** Part message of any messages which require 'all the jails' or such. */ ALLJAILS ("general"), + /** The message sent whenever a cell is successfully removed. */ + CELLREMOVED ("general"), + /** The message sent whenever a jail is successfully removed. */ + JAILREMOVED ("general"), + /** Message sent when doing something that requires a cell but the given name of a cell doesn't exist. */ + NOCELL ("general"), + /** Message sent when needing a cell or something and there are no cells. */ + NOCELLS ("general"), /** The message sent whenever the sender does something which the jail does not found. */ NOJAIL ("general"), /** The message sent whenever the sender does something and there are no jails. */ diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index 41d90e8..b770fd1 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -5,6 +5,10 @@ language: command: 'trying to use a command' general: alljails: 'all the jails' + cellremoved: '&9Cell %0% has been successfully removed from the jail %1%.' + jailremoved: '&9Jail %0% has been successfully removed.' + nocell: '&cNo cell found by the name of &0& in the jail %1%.' + nocells: '&cNo cells found in the jail %0%.' nojail: '&cNo jail found by the name of %0%.' nojails: '&cThere are currently no jails.' nopermission: '&cInsufficient permission.' @@ -18,14 +22,20 @@ language: alreadyjailed: '&cThat player is already jailed.' broadcastmessageforever: '&9%0% has been jailed forever.' broadcastmessageforminutes: '&9%0% has been jailed for %1% minutes.' + cancelledbyanotherplugin: '&cJailing %0% was cancelled by another plugin and they did not leave you a message.' cantbejailed: '&cThat player can not be jailed.' + cellnotempty: '&cThe destination cell, %0%, already has a prisoner in it.' defaultjailedreason: 'Breaking the rules.' jailed: '&cYou have been jailed!' jailedwithreason: '&cYou have been jailed for: %0%' muted: '&cStop talking, you are in jail.' + noemptycells: '&cNo empty cells were found for %0%, all them appear to be full.' + notjailed: '&c%0% is not jailed.' protectionmessage: '&c%0% minutes has been added to your time for %1%.' protectionmessagenopenalty: '&cProtection enabled for %0%, do not do it again.' + suggestedcell: '&cAn empty cell in the same jail, %0%, was found: %1%' unjailed: '&2You have been released! Please respect the server rules.' + willbeunjailed: '&2%0% will be released the next time they log on.' handcuffing: cantbehandcuffed: '&9%0% &ccan not be handcuffed.' currentlyjailed: '&9%0% &cis currently jailed, you can not handcuff a prisoner.'