From d0e41ed908858629dc31ec10cb48ac04e565c02a Mon Sep 17 00:00:00 2001 From: graywolf336 Date: Mon, 3 Feb 2014 18:44:38 -0600 Subject: [PATCH] Add the unjailforce command --- .../com/graywolf336/jail/JailManager.java | 12 ++++++ .../com/graywolf336/jail/PrisonerManager.java | 7 ++++ .../jail/command/CommandHandler.java | 6 ++- ...{UnjailCommand.java => UnJailCommand.java} | 2 +- .../command/commands/UnJailForceCommand.java | 37 +++++++++++++++++++ src/main/resources/en.yml | 2 +- 6 files changed, 62 insertions(+), 4 deletions(-) rename src/main/java/com/graywolf336/jail/command/commands/{UnjailCommand.java => UnJailCommand.java} (95%) create mode 100644 src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java diff --git a/src/main/java/com/graywolf336/jail/JailManager.java b/src/main/java/com/graywolf336/jail/JailManager.java index 70f311b..2018e84 100644 --- a/src/main/java/com/graywolf336/jail/JailManager.java +++ b/src/main/java/com/graywolf336/jail/JailManager.java @@ -137,6 +137,18 @@ public class JailManager { return this.jails.get(name) != null; } + /** + * Gets the {@link Jail jail} the given prisoner is in. + * + * @param prisoner The prisoner data for the prisoner we are checking + * @return The jail the player is in, CAN BE NULL. + */ + public Jail getJailPrisonerIsIn(Prisoner prisoner) { + if(prisoner == null) return null; + + return getJailPlayerIsIn(prisoner.getName()); + } + /** * Gets the {@link Jail jail} the given player is in. * diff --git a/src/main/java/com/graywolf336/jail/PrisonerManager.java b/src/main/java/com/graywolf336/jail/PrisonerManager.java index 7044025..ace1713 100644 --- a/src/main/java/com/graywolf336/jail/PrisonerManager.java +++ b/src/main/java/com/graywolf336/jail/PrisonerManager.java @@ -390,6 +390,13 @@ public class PrisonerManager { player.sendMessage(pl.getJailIO().getLanguageString(LangString.UNJAILED)); } + /** Forcefully releases a {@link Prisoner prisoner} from {@link Jail}. */ + public void forceRelease(Prisoner prisoner) { + Jail j = pl.getJailManager().getJailPrisonerIsIn(prisoner); + forceUnJail(j, j.getCellPrisonerIsIn(prisoner.getName()), pl.getServer().getPlayerExact(prisoner.getName()), prisoner); + } + + /** Forcefully unjails a {@link Prisoner prisoner} from {@link Jail}. */ public void forceUnJail(Jail jail, Cell cell, Player player, Prisoner prisoner) { if(player == null) { //Player is offline, we just forcefully remove them from the database diff --git a/src/main/java/com/graywolf336/jail/command/CommandHandler.java b/src/main/java/com/graywolf336/jail/command/CommandHandler.java index c59e78e..aed961e 100644 --- a/src/main/java/com/graywolf336/jail/command/CommandHandler.java +++ b/src/main/java/com/graywolf336/jail/command/CommandHandler.java @@ -12,7 +12,8 @@ import com.graywolf336.jail.JailMain; import com.graywolf336.jail.JailManager; import com.graywolf336.jail.command.commands.HandCuffCommand; import com.graywolf336.jail.command.commands.UnHandCuffCommand; -import com.graywolf336.jail.command.commands.UnjailCommand; +import com.graywolf336.jail.command.commands.UnJailForceCommand; +import com.graywolf336.jail.command.commands.UnJailCommand; import com.graywolf336.jail.enums.LangString; /** @@ -138,7 +139,8 @@ public class CommandHandler { private void loadCommands() { load(HandCuffCommand.class); load(UnHandCuffCommand.class); - load(UnjailCommand.class); + load(UnJailCommand.class); + load(UnJailForceCommand.class); } private void load(Class c) { diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java similarity index 95% rename from src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java rename to src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java index 7c006f9..e6b89c3 100644 --- a/src/main/java/com/graywolf336/jail/command/commands/UnjailCommand.java +++ b/src/main/java/com/graywolf336/jail/command/commands/UnJailCommand.java @@ -20,7 +20,7 @@ import com.graywolf336.jail.enums.Settings; permission = "jail.command.unjail", usage = "/unjail [player]" ) -public class UnjailCommand implements Command { +public class UnJailCommand implements Command { public boolean execute(JailManager jm, CommandSender sender, String... args) { //Check if the player is jailed diff --git a/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java b/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java new file mode 100644 index 0000000..e90a6b7 --- /dev/null +++ b/src/main/java/com/graywolf336/jail/command/commands/UnJailForceCommand.java @@ -0,0 +1,37 @@ +package com.graywolf336.jail.command.commands; + +import org.bukkit.command.CommandSender; + +import com.graywolf336.jail.JailManager; +import com.graywolf336.jail.command.Command; +import com.graywolf336.jail.command.CommandInfo; +import com.graywolf336.jail.enums.LangString; +import com.graywolf336.jail.enums.Settings; + +@CommandInfo( + maxArgs = 1, + minimumArgs = 1, + needsPlayer = false, + pattern = "unjailforce|ujf", + permission = "jail.command.unjailforce", + usage = "/unjailforce [player]" + ) +public class UnJailForceCommand implements Command { + + public boolean execute(JailManager jm, CommandSender sender, String... args) { + //Check if the player is jailed + if(jm.isPlayerJailed(args[0])) { + jm.getPlugin().getPrisonerManager().forceRelease(jm.getPrisoner(args[0])); + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.FORCEUNJAILED, args[0])); + + if(jm.getPlugin().getConfig().getBoolean(Settings.LOGJAILING.getPath())) { + jm.getPlugin().getLogger().info(jm.getPlugin().getJailIO().getLanguageString(LangString.BROADCASTUNJAILING, new String[] { args[0], sender.getName() })); + } + }else { + //The player is not currently jailed + sender.sendMessage(jm.getPlugin().getJailIO().getLanguageString(LangString.NOTJAILED, args[0])); + } + + return true; + } +} diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index 9d2cb83..23c0f4b 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -32,7 +32,7 @@ language: cantbejailed: '&cThat player can not be jailed.' cellnotempty: '&cThe destination cell, %0%, already has a prisoner in it.' defaultjailedreason: 'Breaking the rules.' - forceunjailed: '&c%0% was jailed but never came online and was forcefully unjailed.' + forceunjailed: '&c%0% was forcefully unjailed.' jailed: '&cYou have been jailed!' jailedwithreason: '&cYou have been jailed for: %0%' muted: '&cStop talking, you are in jail.'