From 7668af15b03bdf64ec985320d5b4a0126a200390 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Mon, 3 Oct 2011 03:40:42 -0500 Subject: [PATCH 1/7] Fires an event before "killing." Can be made cancel-able. Could also be written to add "suicide" (if sender == player) --- .../src/com/earth2me/essentials/commands/Commandkill.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java index 03afeadc4..0b403ca7d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java @@ -23,6 +23,10 @@ public class Commandkill extends EssentialsCommand for (Player p : server.matchPlayer(args[0])) { + EntityDamageEvent ede = new EntityDamageEvent(p, EntityDamageEvent.DamageCause.CUSTOM, 1000); + server.getPluginManager().callEvent(ede); + //if (ede.isCancelled()) return; + p.setHealth(0); sender.sendMessage(Util.format("kill", p.getDisplayName())); } From 4c0fc6e52fc9ca035b16ee0065dfdccbb9a9b68c Mon Sep 17 00:00:00 2001 From: feildmaster Date: Mon, 3 Oct 2011 03:45:38 -0500 Subject: [PATCH 2/7] Edited Priority to "High" Adds compatibility to plugins that adds text to the current "format." --- .../src/com/earth2me/essentials/chat/EssentialsChat.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java index 20b3756d0..7a10d9a92 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java @@ -25,7 +25,7 @@ public class EssentialsChat extends JavaPlugin chatListener = new HashMap(); final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer(), ess, chatListener); - pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this); + pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.High, this); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { LOGGER.log(Level.WARNING, Util.i18n("versionMismatchAll")); From 16384159e7bde8fb895f1b6c26e7fbf8a3a3f259 Mon Sep 17 00:00:00 2001 From: zzbomb Date: Sat, 8 Oct 2011 10:04:07 -0300 Subject: [PATCH 3/7] Improved to operate like.. "banip " bans the specified IP or the IP of the user specified. --- .../essentials/commands/Commandbanip.java | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java index 3301afc87..dff0edcbd 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java @@ -3,24 +3,40 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.Util; import org.bukkit.Server; import org.bukkit.command.CommandSender; - +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Commandbanip extends EssentialsCommand { - public Commandbanip() - { - super("banip"); - } + public Commandbanip() + { + super("banip"); + } - @Override - public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception - { - if (args.length < 1) - { - throw new NotEnoughArgumentsException(); - } - - ess.getServer().banIP(args[0]); - sender.sendMessage(Util.i18n("banIpAddress")); - } + @Override + public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception + { + if (args.length < 1) + { + throw new NotEnoughArgumentsException(); + } + + if ( isIPAddress(args[0]) { + ess.getServer().banIP(args[0]); + sender.sendMessage(Util.i18n("banIpAddress")); + } + else { + User u = ess.getUser(p); + ess.getServer().banIP(u.getAddress().getAddress().toString()); + sender.sendMessage(Util.i18n("banIpAddress")); + } + } + + private boolean isIPAddress(String str) { + String expression = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"; + Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(str); + + return matcher.matches(); + } } From 5984cd58356b554e19c1e0342f91f06508ecfdb6 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:43:58 +0200 Subject: [PATCH 4/7] Fix pull request of damage request --- .../earth2me/essentials/commands/Commandkill.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java index 0b403ca7d..e976faa42 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.Util; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent; public class Commandkill extends EssentialsCommand @@ -23,10 +24,13 @@ public class Commandkill extends EssentialsCommand for (Player p : server.matchPlayer(args[0])) { - EntityDamageEvent ede = new EntityDamageEvent(p, EntityDamageEvent.DamageCause.CUSTOM, 1000); - server.getPluginManager().callEvent(ede); - //if (ede.isCancelled()) return; - + final EntityDamageEvent ede = new EntityDamageEvent(p, sender instanceof Player && ((Player)sender).getName().equals(p.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, 1000); + server.getPluginManager().callEvent(ede); + if (ede.isCancelled() && !sender.hasPermission("essentials.kill.force")) + { + continue; + } + p.setHealth(0); sender.sendMessage(Util.format("kill", p.getDisplayName())); } From a9a87710f3a7ddabf22ac524ccd8de764d97e5d7 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:44:35 +0200 Subject: [PATCH 5/7] Easier version of /banip username --- .../essentials/commands/Commandbanip.java | 59 +++++++++---------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java index dff0edcbd..591542bcb 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandbanip.java @@ -1,42 +1,37 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import org.bukkit.Server; import org.bukkit.command.CommandSender; -import java.util.regex.Matcher; -import java.util.regex.Pattern; + public class Commandbanip extends EssentialsCommand { - public Commandbanip() - { - super("banip"); - } + public Commandbanip() + { + super("banip"); + } - @Override - public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception - { - if (args.length < 1) - { - throw new NotEnoughArgumentsException(); - } - - if ( isIPAddress(args[0]) { - ess.getServer().banIP(args[0]); - sender.sendMessage(Util.i18n("banIpAddress")); - } - else { - User u = ess.getUser(p); - ess.getServer().banIP(u.getAddress().getAddress().toString()); - sender.sendMessage(Util.i18n("banIpAddress")); - } - } - - private boolean isIPAddress(String str) { - String expression = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"; - Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE); - Matcher matcher = pattern.matcher(str); - - return matcher.matches(); - } + @Override + public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception + { + if (args.length < 1) + { + throw new NotEnoughArgumentsException(); + } + + final User u = ess.getUser(args[0]); + + if (u == null) + { + ess.getServer().banIP(args[0]); + sender.sendMessage(Util.i18n("banIpAddress")); + } + else + { + ess.getServer().banIP(u.getAddress().getAddress().getHostAddress()); + sender.sendMessage(Util.i18n("banIpAddress")); + } + } } From cf59a90c520216c1504e87e7430e77a287132372 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:53:01 +0200 Subject: [PATCH 6/7] Throw RuntimeException instead of NPE, if the api is called before Essentials is loaded. --- .../src/com/earth2me/essentials/api/Economy.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/api/Economy.java b/Essentials/src/com/earth2me/essentials/api/Economy.java index 940207a6f..b0a267345 100644 --- a/Essentials/src/com/earth2me/essentials/api/Economy.java +++ b/Essentials/src/com/earth2me/essentials/api/Economy.java @@ -21,6 +21,7 @@ public final class Economy } private static final Logger logger = Logger.getLogger("Minecraft"); private static IEssentials ess; + private static final String noCallBeforeLoad = "Essentials API is called before Essentials is loaded."; /** * @param aEss the ess to set @@ -66,6 +67,10 @@ public final class Economy private static User getUserByName(String name) { + if (ess == null) + { + throw new RuntimeException(noCallBeforeLoad); + } User user; Player player = ess.getServer().getPlayer(name); if (player != null) @@ -176,6 +181,10 @@ public final class Economy */ public static void resetBalance(String name) throws UserDoesNotExistException, NoLoanPermittedException { + if (ess == null) + { + throw new RuntimeException(noCallBeforeLoad); + } setMoney(name, ess.getSettings().getStartingBalance()); } @@ -231,6 +240,10 @@ public final class Economy */ public static String format(double amount) { + if (ess == null) + { + throw new RuntimeException(noCallBeforeLoad); + } return Util.formatCurrency(amount, ess); } From 81994160e89c30aa870bc196e8ac38185e2b9974 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 17:06:32 +0200 Subject: [PATCH 7/7] Allow players with essentials.signs.trade.override permission break invalid trade signs. --- .../earth2me/essentials/signs/SignTrade.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index bf85d827c..c19d19178 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -10,7 +10,6 @@ import org.bukkit.inventory.ItemStack; public class SignTrade extends EssentialsSign { - public SignTrade() { super("Trade"); @@ -40,11 +39,11 @@ public class SignTrade extends EssentialsSign substractAmount(sign, 1, stored, ess); stored.pay(player); Trade.log("Sign", "Trade", "OwnerInteract", username, null, username, stored, sign.getBlock().getLocation(), ess); - } + } catch (SignException e) { throw new SignException(Util.i18n("tradeSignEmptyOwner")); - } + } } else { @@ -67,11 +66,22 @@ public class SignTrade extends EssentialsSign if ((sign.getLine(3).length() > 3 && sign.getLine(3).substring(2).equalsIgnoreCase(username)) || player.isAuthorized("essentials.signs.trade.override")) { - final Trade stored1 = getTrade(sign, 1, true, false, ess); - final Trade stored2 = getTrade(sign, 2, true, false, ess); - stored1.pay(player); - stored2.pay(player); - Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, sign.getBlock().getLocation(), ess); + try + { + final Trade stored1 = getTrade(sign, 1, true, false, ess); + final Trade stored2 = getTrade(sign, 2, true, false, ess); + stored1.pay(player); + stored2.pay(player); + Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, sign.getBlock().getLocation(), ess); + } + catch (SignException e) + { + if (player.isAuthorized("essentials.signs.trade.override")) + { + return true; + } + throw e; + } return true; } else