From 0ceef58e735e5e42ec03dc49347a15688da57f57 Mon Sep 17 00:00:00 2001 From: graywolf336 Date: Tue, 31 Dec 2013 13:20:39 -0600 Subject: [PATCH 1/2] Move the restore method to the util, makes more sense there. --- .../com/graywolf336/jail/PrisonerManager.java | 41 +------------------ src/main/java/com/graywolf336/jail/Util.java | 38 +++++++++++++++++ 2 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/graywolf336/jail/PrisonerManager.java b/src/main/java/com/graywolf336/jail/PrisonerManager.java index d8111bd..5c47a40 100644 --- a/src/main/java/com/graywolf336/jail/PrisonerManager.java +++ b/src/main/java/com/graywolf336/jail/PrisonerManager.java @@ -1,7 +1,5 @@ package com.graywolf336.jail; -import java.io.IOException; - import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -342,51 +340,16 @@ public class PrisonerManager { chest.clear(); }else { - restoreInventory(player, prisoner); + Util.restoreInventory(player, prisoner); } pl.getJailIO().removePrisoner(jail, cell, prisoner); cell.removePrisoner(); }else { - restoreInventory(player, prisoner); + Util.restoreInventory(player, prisoner); pl.getJailIO().removePrisoner(jail, prisoner); jail.removePrisoner(prisoner); } } - - private void restoreInventory(Player player, Prisoner prisoner) { - try { - Inventory content = Util.fromBase64(prisoner.getInventory()); - ItemStack[] armor = Util.itemStackArrayFromBase64(prisoner.getArmor()); - - for(ItemStack item : armor) { - if(item == null) - continue; - else if(item.getType().toString().toLowerCase().contains("helmet")) - player.getInventory().setHelmet(item); - else if(item.getType().toString().toLowerCase().contains("chestplate")) - player.getInventory().setChestplate(item); - else if(item.getType().toString().toLowerCase().contains("leg")) - player.getInventory().setLeggings(item); - else if(item.getType().toString().toLowerCase().contains("boots")) - player.getInventory().setBoots(item); - else if (player.getInventory().firstEmpty() == -1) - player.getWorld().dropItem(player.getLocation(), item); - else - player.getInventory().addItem(item); - } - - for(ItemStack item : content.getContents()) { - if(item == null) continue; - else if(player.getInventory().firstEmpty() == -1) - player.getWorld().dropItem(player.getLocation(), item); - else - player.getInventory().addItem(item); - } - } catch (IOException e) { - e.printStackTrace(); - pl.getLogger().severe("Unable to restore " + player.getName() + "'s inventory."); - } - } } diff --git a/src/main/java/com/graywolf336/jail/Util.java b/src/main/java/com/graywolf336/jail/Util.java index a79c7bc..2a94217 100644 --- a/src/main/java/com/graywolf336/jail/Util.java +++ b/src/main/java/com/graywolf336/jail/Util.java @@ -11,6 +11,7 @@ import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; @@ -20,6 +21,8 @@ import org.bukkit.util.io.BukkitObjectInputStream; import org.bukkit.util.io.BukkitObjectOutputStream; import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; +import com.graywolf336.jail.beans.Prisoner; + /** * Provides a variety of methods, static, that are used throughout the plugin. * @@ -265,4 +268,39 @@ public class Util { throw new IOException("Unable to decode class type.", e); } } + + public static void restoreInventory(Player player, Prisoner prisoner) { + try { + Inventory content = Util.fromBase64(prisoner.getInventory()); + ItemStack[] armor = Util.itemStackArrayFromBase64(prisoner.getArmor()); + + for(ItemStack item : armor) { + if(item == null) + continue; + else if(item.getType().toString().toLowerCase().contains("helmet")) + player.getInventory().setHelmet(item); + else if(item.getType().toString().toLowerCase().contains("chestplate")) + player.getInventory().setChestplate(item); + else if(item.getType().toString().toLowerCase().contains("leg")) + player.getInventory().setLeggings(item); + else if(item.getType().toString().toLowerCase().contains("boots")) + player.getInventory().setBoots(item); + else if (player.getInventory().firstEmpty() == -1) + player.getWorld().dropItem(player.getLocation(), item); + else + player.getInventory().addItem(item); + } + + for(ItemStack item : content.getContents()) { + if(item == null) continue; + else if(player.getInventory().firstEmpty() == -1) + player.getWorld().dropItem(player.getLocation(), item); + else + player.getInventory().addItem(item); + } + } catch (IOException e) { + e.printStackTrace(); + Bukkit.getLogger().severe("Unable to restore " + player.getName() + "'s inventory."); + } + } } From 506ab26858ebf5b94daf2af351dec7f0e3e78eae Mon Sep 17 00:00:00 2001 From: graywolf336 Date: Tue, 31 Dec 2013 13:25:06 -0600 Subject: [PATCH 2/2] Send the unjail message and also execute the commands on releasing --- README.md | 1 + src/main/java/com/graywolf336/jail/PrisonerManager.java | 9 +++++++++ src/main/java/com/graywolf336/jail/enums/Settings.java | 1 + 3 files changed, 11 insertions(+) diff --git a/README.md b/README.md index 0d58750..4e70d4d 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Done * Config value ``jailing.during.maxFoodLevel`` is now used in one part * Config value ``jailing.during.minFoodLevel`` is now used in one part * Config value ``jailing.release.teleport`` is used in unjailing +* Config value ``jailing.release.commands`` is now used [Jail 3.0 JavaDoc](http://ci.graywolf336.com/job/Jail/javadoc) ==== \ No newline at end of file diff --git a/src/main/java/com/graywolf336/jail/PrisonerManager.java b/src/main/java/com/graywolf336/jail/PrisonerManager.java index 5c47a40..a94174c 100644 --- a/src/main/java/com/graywolf336/jail/PrisonerManager.java +++ b/src/main/java/com/graywolf336/jail/PrisonerManager.java @@ -351,5 +351,14 @@ public class PrisonerManager { pl.getJailIO().removePrisoner(jail, prisoner); jail.removePrisoner(prisoner); } + + //Get the commands to execute prisoners are unjailed + //replace all of the %p% so that the commands can have a player name in them + for(String command : pl.getConfig().getStringList(Settings.COMMANDSONRELEASE.getPath())) { + command = command.replaceAll("%p%", player.getName()); + pl.getServer().dispatchCommand(pl.getServer().getConsoleSender(), command); + } + + player.sendMessage(pl.getJailIO().getLanguageString(LangString.UNJAILED)); } } diff --git a/src/main/java/com/graywolf336/jail/enums/Settings.java b/src/main/java/com/graywolf336/jail/enums/Settings.java index 4b3d7d9..5b65d22 100644 --- a/src/main/java/com/graywolf336/jail/enums/Settings.java +++ b/src/main/java/com/graywolf336/jail/enums/Settings.java @@ -3,6 +3,7 @@ package com.graywolf336.jail.enums; public enum Settings { BROADCASTJAILING("jailing.jail.broadcastJailing"), COMMANDSONJAIL("jailing.jail.commands"), + COMMANDSONRELEASE("jailing.release.commands"), DEBUG("system.debug"), DEFAULTJAIL("jailing.jail.defaultJail"), DELETEINVENTORY("jailing.jail.deleteInventory"),