From 9e97c93fa1c39406501c79aadc34848723ed0323 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Mon, 3 Oct 2011 03:40:42 -0500 Subject: Fires an event before "killing." Can be made cancel-able. Could also be written to add "suicide" (if sender == player) --- Essentials/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())); } -- cgit v1.2.3 From c2c4ee93a1922be3e3948bbf27c0407c0a4479f9 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Mon, 3 Oct 2011 03:45:38 -0500 Subject: Edited Priority to "High" Adds compatibility to plugins that adds text to the current "format." --- EssentialsChat/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")); -- cgit v1.2.3 From dc0bf293ecd48df0aa9799edab348ecbacbf81bc Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 4 Oct 2011 23:06:06 +0200 Subject: Register 1.5 --- .../essentials/register/payment/Method.java | 17 ++++++++++ .../essentials/register/payment/Methods.java | 3 +- .../essentials/register/payment/methods/BOSE6.java | 23 +++++++++++++ .../essentials/register/payment/methods/BOSE7.java | 23 +++++++++++++ .../essentials/register/payment/methods/MCUR.java | 12 +++++++ .../essentials/register/payment/methods/iCo4.java | 38 ++++++++++++++++++++++ .../essentials/register/payment/methods/iCo5.java | 27 +++++++++++++++ .../essentials/register/payment/methods/iCo6.java | 20 ++++++++++++ 8 files changed, 162 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Method.java b/Essentials/src/com/earth2me/essentials/register/payment/Method.java index f8bd814ef..ea4477077 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Method.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Method.java @@ -90,6 +90,23 @@ public interface Method */ public boolean hasBankAccount(String bank, String name); + /** + * Forces an account creation + * + * @param name Account name + * @return boolean + */ + public boolean createAccount(String name); + + /** + * Forces an account creation + * + * @param name Account name + * @param balance Initial account balance + * @return boolean + */ + public boolean createAccount(String name, Double balance); + /** * Returns a MethodAccount class for an account name. * diff --git a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java index 0fc65534f..34acf9837 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/Methods.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/Methods.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.register.payment; import java.util.HashSet; import java.util.Set; + import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -168,7 +169,7 @@ public class Methods } plugin = manager.getPlugin(name); - if (plugin == null) + if (plugin == null || !plugin.isEnabled()) { continue; } diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java index 7c83c9b76..bc3893d5e 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE6.java @@ -71,6 +71,29 @@ public class BOSE6 implements Method || this.BOSEconomy.isBankMember(bank, name); } + public boolean createAccount(String name) + { + if (hasAccount(name)) + { + return false; + } + + this.BOSEconomy.registerPlayer(name); + return true; + } + + public boolean createAccount(String name, Double balance) + { + if (hasAccount(name)) + { + return false; + } + + this.BOSEconomy.registerPlayer(name); + this.BOSEconomy.setPlayerMoney(name, balance, false); + return true; + } + public MethodAccount getAccount(String name) { if (!hasAccount(name)) diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java index 288e4a5c5..72d1f763e 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/BOSE7.java @@ -70,6 +70,29 @@ public class BOSE7 implements Method return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); } + public boolean createAccount(String name) + { + if (hasAccount(name)) + { + return false; + } + + this.BOSEconomy.registerPlayer(name); + return true; + } + + public boolean createAccount(String name, Double balance) + { + if (hasAccount(name)) + { + return false; + } + + this.BOSEconomy.registerPlayer(name); + this.BOSEconomy.setPlayerMoney(name, balance, false); + return true; + } + public MethodAccount getAccount(String name) { if (!hasAccount(name)) diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java index 6248b1b91..53d8ed120 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/MCUR.java @@ -64,6 +64,18 @@ public class MCUR implements Method return false; } + public boolean createAccount(String name) + { + CurrencyList.setValue((String)CurrencyList.maxCurrency(name)[0], name, 0); + return true; + } + + public boolean createAccount(String name, Double balance) + { + CurrencyList.setValue((String)CurrencyList.maxCurrency(name)[0], name, balance); + return true; + } + public MethodAccount getAccount(String name) { return new MCurrencyAccount(name); diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java index fcdb7c43b..1f33df12c 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo4.java @@ -64,6 +64,44 @@ public class iCo4 implements Method return false; } + public boolean createAccount(String name) + { + if (hasAccount(name)) + { + return false; + } + + try + { + com.nijiko.coelho.iConomy.iConomy.getBank().addAccount(name); + } + catch (Exception E) + { + return false; + } + + return true; + } + + public boolean createAccount(String name, Double balance) + { + if (hasAccount(name)) + { + return false; + } + + try + { + com.nijiko.coelho.iConomy.iConomy.getBank().addAccount(name, balance); + } + catch (Exception E) + { + return false; + } + + return true; + } + public MethodAccount getAccount(String name) { return new iCoAccount(com.nijiko.coelho.iConomy.iConomy.getBank().getAccount(name)); diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java index 462cb76d5..d56873c3f 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo5.java @@ -67,6 +67,33 @@ public class iCo5 implements Method return (hasBank(bank)) && com.iConomy.iConomy.getBank(bank).hasAccount(name); } + public boolean createAccount(String name) + { + if (hasAccount(name)) + { + return false; + } + + return com.iConomy.iConomy.Accounts.create(name); + } + + public boolean createAccount(String name, Double balance) + { + if (hasAccount(name)) + { + return false; + } + + if (!com.iConomy.iConomy.Accounts.create(name)) + { + return false; + } + + getAccount(name).set(balance); + + return true; + } + public MethodAccount getAccount(String name) { return new iCoAccount(com.iConomy.iConomy.getAccount(name)); diff --git a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java index b74367173..1feee30af 100644 --- a/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java +++ b/Essentials/src/com/earth2me/essentials/register/payment/methods/iCo6.java @@ -66,6 +66,26 @@ public class iCo6 implements Method return false; } + public boolean createAccount(String name) + { + if (hasAccount(name)) + { + return false; + } + + return (new Accounts()).create(name); + } + + public boolean createAccount(String name, Double balance) + { + if (hasAccount(name)) + { + return false; + } + + return (new Accounts()).create(name, balance); + } + public MethodAccount getAccount(String name) { return new iCoAccount((new Accounts()).get(name)); -- cgit v1.2.3 From e7aeb27a7862277c9aec66883bd5ed63c4a67849 Mon Sep 17 00:00:00 2001 From: snowleo Date: Thu, 6 Oct 2011 11:54:09 +0200 Subject: We can get the console command sender from server object now. --- Essentials/src/com/earth2me/essentials/Backup.java | 7 +++-- .../src/com/earth2me/essentials/Console.java | 32 ++++++++++++---------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Backup.java b/Essentials/src/com/earth2me/essentials/Backup.java index b7b441b1e..02a3d54ba 100644 --- a/Essentials/src/com/earth2me/essentials/Backup.java +++ b/Essentials/src/com/earth2me/essentials/Backup.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; +import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.craftbukkit.CraftServer; @@ -12,7 +13,7 @@ import org.bukkit.craftbukkit.CraftServer; public class Backup implements Runnable { private static final Logger LOGGER = Logger.getLogger("Minecraft"); - private transient final CraftServer server; + private transient final Server server; private transient final IEssentials ess; private transient boolean running = false; private transient int taskId = -1; @@ -21,7 +22,7 @@ public class Backup implements Runnable public Backup(final IEssentials ess) { this.ess = ess; - server = (CraftServer)ess.getServer(); + server = ess.getServer(); if (server.getOnlinePlayers().length > 0) { startTask(); @@ -60,7 +61,7 @@ public class Backup implements Runnable return; } LOGGER.log(Level.INFO, Util.i18n("backupStarted")); - final CommandSender cs = server.getServer().console; + final CommandSender cs = server.getConsoleSender(); server.dispatchCommand(cs, "save-all"); server.dispatchCommand(cs, "save-off"); diff --git a/Essentials/src/com/earth2me/essentials/Console.java b/Essentials/src/com/earth2me/essentials/Console.java index 882c4f2c8..dcdb65a0d 100644 --- a/Essentials/src/com/earth2me/essentials/Console.java +++ b/Essentials/src/com/earth2me/essentials/Console.java @@ -2,33 +2,35 @@ package com.earth2me.essentials; import org.bukkit.Server; import org.bukkit.command.CommandSender; -import org.bukkit.craftbukkit.CraftServer; -public final class Console implements IReplyTo { + +public final class Console implements IReplyTo +{ private static Console instance = new Console(); private CommandSender replyTo; public final static String NAME = "Console"; - - private Console() { - + + private Console() + { } - - public static CommandSender getCommandSender(Server server) throws Exception { - if (! (server instanceof CraftServer)) { - throw new Exception(Util.i18n("invalidServer")); - } - return ((CraftServer)server).getServer().console; + + public static CommandSender getCommandSender(Server server) throws Exception + { + return server.getConsoleSender(); } - public void setReplyTo(CommandSender user) { + public void setReplyTo(CommandSender user) + { replyTo = user; } - public CommandSender getReplyTo() { + public CommandSender getReplyTo() + { return replyTo; } - - public static Console getConsoleReplyTo() { + + public static Console getConsoleReplyTo() + { return instance; } } -- cgit v1.2.3 From 71da92dd661349856b7a82be706394533d6d8d73 Mon Sep 17 00:00:00 2001 From: zzbomb Date: Sat, 8 Oct 2011 10:04:07 -0300 Subject: Improved to operate like.. "banip " bans the specified IP or the IP of the user specified. --- .../earth2me/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"); - } - - @Override - public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception - { - if (args.length < 1) - { - throw new NotEnoughArgumentsException(); - } + public Commandbanip() + { + super("banip"); + } - 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(); + } } -- cgit v1.2.3 From bde34ee59a0b897fc1dd5f1591af0bf929e7af3c Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 8 Oct 2011 19:41:41 +0200 Subject: Fix NPE in /repair --- .../src/com/earth2me/essentials/commands/Commandrepair.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java index 029901867..d6bcad464 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java @@ -30,6 +30,10 @@ public class Commandrepair extends EssentialsCommand if (args[0].equalsIgnoreCase("hand")) { final ItemStack item = user.getItemInHand(); + if (item == null) + { + throw new Exception(Util.i18n("repairInvalidType")); + } final String itemName = item.getType().toString().toLowerCase(); final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess); @@ -84,6 +88,10 @@ public class Commandrepair extends EssentialsCommand { for (ItemStack item : items) { + if (item == null) + { + continue; + } final String itemName = item.getType().toString().toLowerCase(); final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess); try -- cgit v1.2.3 From d7775153d0b95db9ec12178a69397f07a97524cc Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:43:58 +0200 Subject: Fix pull request of damage request --- .../src/com/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())); } -- cgit v1.2.3 From cc77b7d0aad61fd0a18cca97d4720ff478781e70 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:44:35 +0200 Subject: Easier version of /banip username --- .../earth2me/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(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]); - @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(); - } + 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")); + } + } } -- cgit v1.2.3 From d075b14e4f1f63fda7df54fe7076312506e81587 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 16:53:01 +0200 Subject: Throw RuntimeException instead of NPE, if the api is called before Essentials is loaded. --- Essentials/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); } -- cgit v1.2.3 From 9524cd0543db75c6be0f9ed88c3c40c715bc8341 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 17:06:32 +0200 Subject: Allow players with essentials.signs.trade.override permission break invalid trade signs. --- .../com/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 -- cgit v1.2.3 From a73d79893d45dfb61406c3e7da04300356aaca67 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 20:10:21 +0200 Subject: Prevent players with essentials.sleepingignored permission from going to bed. Prevents a bug in bukkit. --- Essentials/src/com/earth2me/essentials/Essentials.java | 1 + .../com/earth2me/essentials/EssentialsPlayerListener.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index fe0c3560c..0da255685 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -164,6 +164,7 @@ public class Essentials extends JavaPlugin implements IEssentials pm.registerEvent(Type.PLAYER_EGG_THROW, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_BUCKET_EMPTY, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this); + pm.registerEvent(Type.PLAYER_BED_ENTER, playerListener, Priority.High, this); final EssentialsBlockListener blockListener = new EssentialsBlockListener(this); pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Lowest, this); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 026e4632b..5d121b82e 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -14,6 +14,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerAnimationEvent; import org.bukkit.event.player.PlayerAnimationType; +import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -380,4 +381,16 @@ public class EssentialsPlayerListener extends PlayerListener user.updateActivity(true); } } + + @Override + public void onPlayerBedEnter(PlayerBedEnterEvent event) + { + if (event.isCancelled()) { + return; + } + if (event.getPlayer().isSleepingIgnored()) { + event.setCancelled(true); + event.getPlayer().sendMessage("You can't go to bed, your sleep is ignored."); + } + } } -- cgit v1.2.3 From f4802894d3626c95a449c29d4cbadcb7c44a690f Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 20:14:41 +0200 Subject: Cancel early, not late --- Essentials/src/com/earth2me/essentials/Essentials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 0da255685..6f9b9a944 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -164,7 +164,7 @@ public class Essentials extends JavaPlugin implements IEssentials pm.registerEvent(Type.PLAYER_EGG_THROW, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_BUCKET_EMPTY, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this); - pm.registerEvent(Type.PLAYER_BED_ENTER, playerListener, Priority.High, this); + pm.registerEvent(Type.PLAYER_BED_ENTER, playerListener, Priority.Lowest, this); final EssentialsBlockListener blockListener = new EssentialsBlockListener(this); pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Lowest, this); -- cgit v1.2.3 From fb52bf99825fb001b9903889c0bbdf8780930e98 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 20:57:34 +0200 Subject: Corrected datavalues for pistons --- Essentials/src/items.csv | 58 ++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv index 53fe31d6c..985333a80 100644 --- a/Essentials/src/items.csv +++ b/Essentials/src/items.csv @@ -501,20 +501,20 @@ detecttrack,28,0 detectrail,28,0 dtrack,28,0 drail,28,0 -stickypistonbase,29,0 -stickypiston,29,0 -stickpistonbase,29,0 -stickpiston,29,0 -stickyp,29,0 -spistonbase,29,0 -spiston,29,0 -pistonstickybase,29,0 -pistonsticky,29,0 -pistonstickbase,29,0 -pistonstick,29,0 -pistonsbase,29,0 -pistons,29,0 -psticky,29,0 +stickypistonbase,29,7 +stickypiston,29,7 +stickpistonbase,29,7 +stickpiston,29,7 +stickyp,29,7 +spistonbase,29,7 +spiston,29,7 +pistonstickybase,29,7 +pistonsticky,29,7 +pistonstickbase,29,7 +pistonstick,29,7 +pistonsbase,29,7 +pistons,29,7 +psticky,29,7 spiderweb,30,0 sweb,30,0 web,30,0 @@ -534,21 +534,21 @@ deadshrub,32,0 shrubdead,32,0 dshrub,32,0 shrubd,32,0 -normalpistonbase,33,0 -normalpiston,33,0 -normpistonbase,33,0 -normpiston,33,0 -npistonbase,33,0 -npiston,33,0 -pistonnormalbase,33,0 -pistonnormal,33,0 -pistonnormbase,33,0 -pistonnorm,33,0 -pistonnbase,33,0 -pistonn,33,0 -pistonbase,33,0 -piston,33,0 -pistonblock,33,0 +normalpistonbase,33,7 +normalpiston,33,7 +normpistonbase,33,7 +normpiston,33,7 +npistonbase,33,7 +npiston,33,7 +pistonnormalbase,33,7 +pistonnormal,33,7 +pistonnormbase,33,7 +pistonnorm,33,7 +pistonnbase,33,7 +pistonn,33,7 +pistonbase,33,7 +piston,33,7 +pistonblock,33,7 pistonextensionnormal,34,0 pistonextensionnorm,34,0 pistonextensionn,34,0 -- cgit v1.2.3 From d4171f7de1c79d2d5385073dcf665de39100cc88 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 20:59:06 +0200 Subject: Allow to disable the death messages of minecraft --- .../earth2me/essentials/EssentialsEntityListener.java | 16 +++++++++++----- Essentials/src/com/earth2me/essentials/ISettings.java | 2 ++ Essentials/src/com/earth2me/essentials/Settings.java | 6 ++++++ Essentials/src/config.yml | 3 +++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java index f5d6cec48..083fa1687 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java @@ -9,6 +9,7 @@ import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityListener; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.inventory.ItemStack; @@ -69,24 +70,29 @@ public class EssentialsEntityListener extends EntityListener } @Override - public void onEntityDeath(EntityDeathEvent event) + public void onEntityDeath(final EntityDeathEvent event) { - if (event.getEntity() instanceof Player) + if (event instanceof PlayerDeathEvent) { - User user = ess.getUser(event.getEntity()); + final PlayerDeathEvent pdevent = (PlayerDeathEvent)event; + final User user = ess.getUser(pdevent.getEntity()); if (user.isAuthorized("essentials.back.ondeath") && !ess.getSettings().isCommandDisabled("back")) { user.setLastLocation(); user.sendMessage(Util.i18n("backAfterDeath")); } + if (!ess.getSettings().areDeathMessagesEnabled()) + { + pdevent.setDeathMessage(""); + } } } @Override public void onFoodLevelChange(FoodLevelChangeEvent event) - { + { if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled()) - { + { //TODO: Remove the following line, when we're happy to remove backwards compatability with 1185. event.setFoodLevel(20); event.setCancelled(true); diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 54d1b1495..d058d892a 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -132,4 +132,6 @@ public interface ISettings extends IConf long getAutoAfkKick(); boolean getFreezeAfkPlayers(); + + boolean areDeathMessagesEnabled(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index d6a649786..9d11d675b 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -523,4 +523,10 @@ public class Settings implements ISettings { return config.getBoolean("freeze-afk-players", false); } + + @Override + public boolean areDeathMessagesEnabled() + { + return config.getBoolean("death-messages", true); + } } diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 61cb7aefa..b5ad0d95a 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -238,6 +238,9 @@ auto-afk-kick: -1 # The player has to use the command /afk to leave the afk mode. freeze-afk-players: false +# You can disable the death messages of minecraft here +death-messages: true + ############################################################ # +------------------------------------------------------+ # # | EssentialsHome | # -- cgit v1.2.3 From f233e8410d36019945a15ed58b6572788b5b45d4 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 9 Oct 2011 22:10:40 +0200 Subject: Edited Essentials/src/items.csv via GitHub --- Essentials/src/items.csv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv index 985333a80..9dfe37218 100644 --- a/Essentials/src/items.csv +++ b/Essentials/src/items.csv @@ -1259,10 +1259,12 @@ sfstone,97,0 stonesilverfish,97,0 fishstone,97,0 trapstone,97,0 +silverfish,97,0 stonebrick,98,0 stonebricks,98,0 stonebrickblock,98,0 stonebb,98,0 +sbrick,98,0 mossystonebrick,98,1 mossystonebricks,98,1 mossystonebrickblock,98,1 -- cgit v1.2.3 From 593d5def7886818a74451322e0cfbb51c17996f3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 22:25:15 +0200 Subject: Don't spill out items, if inventory is full on buy signs. --- .../src/com/earth2me/essentials/FakeInventory.java | 186 +++++++++++++++++++++ .../earth2me/essentials/InventoryWorkaround.java | 16 +- Essentials/src/com/earth2me/essentials/Trade.java | 49 ++++-- .../src/com/earth2me/essentials/signs/SignBuy.java | 4 +- 4 files changed, 236 insertions(+), 19 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/FakeInventory.java diff --git a/Essentials/src/com/earth2me/essentials/FakeInventory.java b/Essentials/src/com/earth2me/essentials/FakeInventory.java new file mode 100644 index 000000000..e1c3321d2 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/FakeInventory.java @@ -0,0 +1,186 @@ +package com.earth2me.essentials; + +import java.util.HashMap; +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + + +public class FakeInventory implements Inventory +{ + ItemStack[] items; + + public FakeInventory(ItemStack[] items) + { + this.items = new ItemStack[items.length]; + for (int i = 0; i < items.length; i++) + { + this.items[i] = new ItemStack(items[i].getTypeId(), items[i].getAmount(), items[i].getDurability()); + } + } + + @Override + public int getSize() + { + return items.length; + } + + @Override + public String getName() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ItemStack getItem(int i) + { + return items[i]; + } + + @Override + public void setItem(int i, ItemStack is) + { + items[i] = is; + } + + @Override + public HashMap addItem(ItemStack... iss) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap removeItem(ItemStack... iss) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ItemStack[] getContents() + { + return items; + } + + @Override + public void setContents(ItemStack[] iss) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(Material mtrl) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(int i, int i1) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(Material mtrl, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean contains(ItemStack is, int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap all(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap all(Material mtrl) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap all(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int first(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int first(Material mtrl) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int first(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int firstEmpty() + { + for (int i = 0; i < items.length; i++) + { + if (items[i] == null || items[i].getTypeId() == 0) { + return i; + } + } + return -1; + } + + @Override + public void remove(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void remove(Material mtrl) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void remove(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void clear(int i) + { + items[i] = null; + } + + @Override + public void clear() + { + for (int i = 0; i < items.length; i++) + { + items[i] = null; + } + } +} diff --git a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java index 3f0f89af2..0470488b8 100644 --- a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java @@ -64,6 +64,20 @@ public final class InventoryWorkaround return -1; } + public static boolean addAllItems(final Inventory cinventory, final boolean forceDurability, final ItemStack... items) + { + final Inventory fake = new FakeInventory(cinventory.getContents()); + if (addItem(fake, forceDurability, items).isEmpty()) + { + addItem(cinventory, forceDurability, items); + return true; + } + else + { + return false; + } + } + public static Map addItem(final Inventory cinventory, final boolean forceDurability, final ItemStack... items) { final Map leftover = new HashMap(); @@ -106,7 +120,7 @@ public final class InventoryWorkaround { continue; } - + while (true) { // Do we already have a stack of it? diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index 45c3d49a3..8c082be3e 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -18,22 +18,22 @@ public class Trade private final transient Double money; private final transient ItemStack itemStack; private final transient IEssentials ess; - + public Trade(final String command, final IEssentials ess) { this(command, null, null, ess); } - + public Trade(final double money, final IEssentials ess) { this(null, money, null, ess); } - + public Trade(final ItemStack items, final IEssentials ess) { this(null, null, items, ess); } - + private Trade(final String command, final Double money, final ItemStack item, final IEssentials ess) { this.command = command; @@ -41,7 +41,7 @@ public class Trade this.itemStack = item; this.ess = ess; } - + public void isAffordableFor(final IUser user) throws ChargeException { final double mon = user.getMoney(); @@ -52,13 +52,13 @@ public class Trade { throw new ChargeException(Util.i18n("notEnoughMoney")); } - + if (getItemStack() != null && !InventoryWorkaround.containsItem(user.getInventory(), true, itemStack)) { throw new ChargeException(Util.format("missingItems", getItemStack().getAmount(), getItemStack().getType().toString().toLowerCase().replace("_", " "))); } - + if (command != null && !command.isEmpty() && !user.isAuthorized("essentials.nocommandcost.all") && !user.isAuthorized("essentials.nocommandcost." + command) @@ -69,24 +69,38 @@ public class Trade throw new ChargeException(Util.i18n("notEnoughMoney")); } } - + public void pay(final IUser user) { + pay(user, true); + } + + public boolean pay(final IUser user, final boolean dropItems) + { + boolean success = true; if (getMoney() != null && getMoney() > 0) { user.giveMoney(getMoney()); } if (getItemStack() != null) { - final Map leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack()); - for (ItemStack itemStack : leftOver.values()) + if (dropItems) + { + final Map leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack()); + for (ItemStack itemStack : leftOver.values()) + { + InventoryWorkaround.dropItem(user.getLocation(), itemStack); + } + } + else { - InventoryWorkaround.dropItem(user.getLocation(), itemStack); + success = InventoryWorkaround.addAllItems(user.getInventory(), true, getItemStack()); } user.updateInventory(); } + return success; } - + public void charge(final IUser user) throws ChargeException { if (getMoney() != null) @@ -120,18 +134,18 @@ public class Trade user.takeMoney(cost); } } - + public Double getMoney() { return money; } - + public ItemStack getItemStack() { return itemStack; } private static FileWriter fw = null; - + public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, Location loc, IEssentials ess) { if (!ess.getSettings().isEcoLogEnabled()) @@ -225,10 +239,11 @@ public class Trade Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex); } } - + public static void closeLog() { - if (fw != null) { + if (fw != null) + { try { fw.close(); diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java index 6ee602ff5..39704ff0d 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java @@ -27,7 +27,9 @@ public class SignBuy extends EssentialsSign final Trade items = getTrade(sign, 1, 2, player, ess); final Trade charge = getTrade(sign, 3, ess); charge.isAffordableFor(player); - items.pay(player); + if (!items.pay(player, false)) { + throw new ChargeException("Inventory full"); + } charge.charge(player); Trade.log("Sign", "Buy", "Interact", username, charge, username, items, sign.getBlock().getLocation(), ess); return true; -- cgit v1.2.3 From 2859e367d49d8ff2be7e731803f72b42ca187c45 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 22:52:11 +0200 Subject: Allow players to recharge trade signs without breaking them. Also don't give out items, if their inventory is full. --- .../com/earth2me/essentials/signs/SignTrade.java | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index c19d19178..6e5c7b4b1 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -38,7 +38,8 @@ public class SignTrade extends EssentialsSign final Trade stored = getTrade(sign, 1, true, true, ess); substractAmount(sign, 1, stored, ess); stored.pay(player); - Trade.log("Sign", "Trade", "OwnerInteract", username, null, username, stored, sign.getBlock().getLocation(), ess); + final Trade store = rechargeSign(sign, ess, player); + Trade.log("Sign", "Trade", "OwnerInteract", username, store, username, stored, sign.getBlock().getLocation(), ess); } catch (SignException e) { @@ -50,8 +51,11 @@ public class SignTrade extends EssentialsSign final Trade charge = getTrade(sign, 1, false, false, ess); final Trade trade = getTrade(sign, 2, false, true, ess); charge.isAffordableFor(player); + if (!trade.pay(player, false)) + { + throw new ChargeException("Full inventory"); + } substractAmount(sign, 2, trade, ess); - trade.pay(player); addAmount(sign, 1, charge, ess); charge.charge(player); Trade.log("Sign", "Trade", "Interact", sign.getLine(3), charge, username, trade, sign.getBlock().getLocation(), ess); @@ -60,6 +64,25 @@ public class SignTrade extends EssentialsSign return true; } + private Trade rechargeSign(final ISign sign, final IEssentials ess, final User player) throws SignException, ChargeException + { + final Trade trade = getTrade(sign, 2, false, false, ess); + if (trade.getItemStack() != null && player.getItemInHand() != null && + trade.getItemStack().getTypeId() == player.getItemInHand().getTypeId() && + trade.getItemStack().getDurability() == player.getItemInHand().getDurability()) + { + int amount = player.getItemInHand().getAmount(); + amount -= amount % trade.getItemStack().getAmount(); + if (amount > 0) { + final Trade store = new Trade(new ItemStack(player.getItemInHand().getTypeId(), amount, player.getItemInHand().getDurability()), ess); + addAmount(sign, 2, store, ess); + store.charge(player); + return store; + } + } + return null; + } + @Override protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException { -- cgit v1.2.3 From 56adecb506d22195026f27829473bf3968cd8b50 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 23:00:58 +0200 Subject: Prevent that long lines are stored on the sign --- .../com/earth2me/essentials/signs/SignTrade.java | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 6e5c7b4b1..9ed5bb058 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -35,15 +35,15 @@ public class SignTrade extends EssentialsSign { try { + final Trade store = rechargeSign(sign, ess, player); final Trade stored = getTrade(sign, 1, true, true, ess); substractAmount(sign, 1, stored, ess); stored.pay(player); - final Trade store = rechargeSign(sign, ess, player); Trade.log("Sign", "Trade", "OwnerInteract", username, store, username, stored, sign.getBlock().getLocation(), ess); } catch (SignException e) { - throw new SignException(Util.i18n("tradeSignEmptyOwner")); + throw new SignException(Util.i18n("tradeSignEmptyOwner"), e); } } else @@ -67,13 +67,14 @@ public class SignTrade extends EssentialsSign private Trade rechargeSign(final ISign sign, final IEssentials ess, final User player) throws SignException, ChargeException { final Trade trade = getTrade(sign, 2, false, false, ess); - if (trade.getItemStack() != null && player.getItemInHand() != null && - trade.getItemStack().getTypeId() == player.getItemInHand().getTypeId() && - trade.getItemStack().getDurability() == player.getItemInHand().getDurability()) + if (trade.getItemStack() != null && player.getItemInHand() != null + && trade.getItemStack().getTypeId() == player.getItemInHand().getTypeId() + && trade.getItemStack().getDurability() == player.getItemInHand().getDurability()) { int amount = player.getItemInHand().getAmount(); amount -= amount % trade.getItemStack().getAmount(); - if (amount > 0) { + if (amount > 0) + { final Trade store = new Trade(new ItemStack(player.getItemInHand().getTypeId(), amount, player.getItemInHand().getDurability()), ess); addAmount(sign, 2, store, ess); store.charge(player); @@ -270,7 +271,12 @@ public class SignTrade extends EssentialsSign final Double amount = getDouble(split[1]); if (money != null && amount != null) { - sign.setLine(index, Util.formatCurrency(money, ess) + ":" + Util.formatCurrency(amount + value, ess).substring(1)); + final String newline = Util.formatCurrency(money, ess) + ":" + Util.formatCurrency(amount + value, ess).substring(1); + if (newline.length() > 16) + { + throw new SignException("Line too long!"); + } + sign.setLine(index, newline); return; } } @@ -280,7 +286,12 @@ public class SignTrade extends EssentialsSign final int stackamount = getIntegerPositive(split[0]); final ItemStack item = getItemStack(split[1], stackamount, ess); final int amount = getInteger(split[2]); - sign.setLine(index, stackamount + " " + split[1] + ":" + (amount + Math.round(value))); + final String newline = stackamount + " " + split[1] + ":" + (amount + Math.round(value)); + if (newline.length() > 16) + { + throw new SignException("Line too long!"); + } + sign.setLine(index, newline); return; } throw new SignException(Util.format("invalidSignLine", index + 1)); -- cgit v1.2.3 From 6b63b52f7a2d906a92e66a0d9bba6e17a0784976 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 23:23:00 +0200 Subject: Notch decided that the sun rises north and sets south. "Corrected" values for /getpos and /compass --- Essentials/src/com/earth2me/essentials/PlayerExtension.java | 9 --------- .../src/com/earth2me/essentials/commands/Commandcompass.java | 2 +- .../src/com/earth2me/essentials/commands/Commandgetpos.java | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/PlayerExtension.java b/Essentials/src/com/earth2me/essentials/PlayerExtension.java index ef63dacc3..9555bb1a7 100644 --- a/Essentials/src/com/earth2me/essentials/PlayerExtension.java +++ b/Essentials/src/com/earth2me/essentials/PlayerExtension.java @@ -16,15 +16,6 @@ public class PlayerExtension extends PlayerWrapper super(base); this.ess = ess; } - - public float getCorrectedYaw() - { - float angle = (getLocation().getYaw() - 90.0f) % 360.0f; - if (angle < 0) { - angle += 360.0f; - } - return angle; - } public void showInventory(IInventory inventory) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java b/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java index bd07c2b9b..8d582a296 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandcompass.java @@ -15,7 +15,7 @@ public class Commandcompass extends EssentialsCommand @Override public void run(Server server, User user, String commandLabel, String[] args) throws Exception { - int r = (int)user.getCorrectedYaw(); + int r = (int)user.getLocation().getYaw(); String dir; if (r < 23) dir = "N"; else if (r < 68) dir = "NE"; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java b/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java index bf5cff75d..12eeb5182 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgetpos.java @@ -19,7 +19,7 @@ public class Commandgetpos extends EssentialsCommand user.sendMessage("§7X: " + coords.getBlockX() + " (-North <-> +South)"); user.sendMessage("§7Y: " + coords.getBlockY() + " (+Up <-> -Down)"); user.sendMessage("§7Z: " + coords.getBlockZ() + " (+East <-> -West)"); - user.sendMessage("§7Yaw: " + user.getCorrectedYaw() + " (Rotation)"); + user.sendMessage("§7Yaw: " + coords.getYaw() + " (Rotation)"); user.sendMessage("§7Pitch: " + coords.getPitch() + " (Head angle)"); } } -- cgit v1.2.3 From 31da2dfc933ed10ab486db2c075046fcadabb8e7 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 23:31:13 +0200 Subject: Cleanup --- .../src/com/earth2me/essentials/commands/Commandessentials.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java index fda7061d5..328a4a8b5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandessentials.java @@ -56,7 +56,6 @@ public class Commandessentials extends EssentialsCommand } final String tuneStr = "1D#,1E,2F#,,2A#,1E,1D#,1E,2F#,2B,2D#,2E,2D#,2A#,2B,,2F#,,1D#,1E,2F#,2B,2C#,2A#,2B,2C#,2E,2D#,2E,2C#,,2F#,,2G#,,1D,1D#,,1C#,1D,1C#,1B,,1B,,1C#,,1D,,1D,1C#,1B,1C#,1D#,2F#,2G#,1D#,2F#,1C#,1D#,1B,1C#,1B,1D#,,2F#,,2G#,1D#,2F#,1C#,1D#,1B,1D,1D#,1D,1C#,1B,1C#,1D,,1B,1C#,1D#,2F#,1C#,1D,1C#,1B,1C#,,1B,,1C#,,2F#,,2G#,,1D,1D#,,1C#,1D,1C#,1B,,1B,,1C#,,1D,,1D,1C#,1B,1C#,1D#,2F#,2G#,1D#,2F#,1C#,1D#,1B,1C#,1B,1D#,,2F#,,2G#,1D#,2F#,1C#,1D#,1B,1D,1D#,1D,1C#,1B,1C#,1D,,1B,1C#,1D#,2F#,1C#,1D,1C#,1B,1C#,,1B,,1B,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1B,,"; final String[] tune = tuneStr.split(","); - for (Player player : server.getOnlinePlayers()) { final Location loc = player.getLocation(); @@ -91,7 +90,7 @@ public class Commandessentials extends EssentialsCommand for (Player player : server.getOnlinePlayers()) { Block block = noteBlocks.get(player); - if (block == null) + if (block == null || block.getType() != Material.NOTE_BLOCK) { continue; } @@ -110,7 +109,10 @@ public class Commandessentials extends EssentialsCommand ess.getScheduler().cancelTask(taskid); for (Block block : noteBlocks.values()) { - block.setType(Material.AIR); + if (block.getType() == Material.NOTE_BLOCK) + { + block.setType(Material.AIR); + } } noteBlocks.clear(); } -- cgit v1.2.3 From f1d505cdeb7c21e5c4477cc58dca55e232c02379 Mon Sep 17 00:00:00 2001 From: snowleo Date: Sun, 9 Oct 2011 23:45:46 +0200 Subject: Reverting ementalos change on freeze-afk, hopefully fixing the flickering. --- .../src/com/earth2me/essentials/EssentialsPlayerListener.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 5d121b82e..3d5851d93 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -95,9 +95,16 @@ public class EssentialsPlayerListener extends PlayerListener final Location from = event.getFrom(); final Location to = event.getTo().clone(); to.setX(from.getX()); - to.setY(from.getBlock().getTypeId() == 0 ? from.getY() - 1 : from.getY()); + to.setY(from.getY()); to.setZ(from.getZ()); - event.setTo(to); + try + { + event.setTo(Util.getSafeDestination(to)); + } + catch (Exception ex) + { + event.setTo(to); + } return; } -- cgit v1.2.3 From 6ded4a3d5ec5d8c16e7652ba8b0c2c92627ee657 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 10 Oct 2011 00:27:55 +0200 Subject: Fix of the recharge code, also the maximum line length on signs is 15 not 16! --- .../src/com/earth2me/essentials/signs/SignTrade.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 9ed5bb058..6c956165a 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -33,18 +33,22 @@ public class SignTrade extends EssentialsSign { if (sign.getLine(3).substring(2).equalsIgnoreCase(username)) { + final Trade store = rechargeSign(sign, ess, player); + Trade stored = null; try { - final Trade store = rechargeSign(sign, ess, player); - final Trade stored = getTrade(sign, 1, true, true, ess); + stored = getTrade(sign, 1, true, true, ess); substractAmount(sign, 1, stored, ess); stored.pay(player); - Trade.log("Sign", "Trade", "OwnerInteract", username, store, username, stored, sign.getBlock().getLocation(), ess); } catch (SignException e) { - throw new SignException(Util.i18n("tradeSignEmptyOwner"), e); + if (store == null) + { + throw new SignException(Util.i18n("tradeSignEmptyOwner"), e); + } } + Trade.log("Sign", "Trade", "OwnerInteract", username, store, username, stored, sign.getBlock().getLocation(), ess); } else { @@ -162,7 +166,7 @@ public class SignTrade extends EssentialsSign throw new SignException(Util.i18n("moreThanZero")); } String newline = amount + " " + split[1] + ":0"; - if ((newline + amount).length() > 16) + if ((newline + amount).length() > 15) { throw new SignException("Line can be too long!"); } @@ -272,7 +276,7 @@ public class SignTrade extends EssentialsSign if (money != null && amount != null) { final String newline = Util.formatCurrency(money, ess) + ":" + Util.formatCurrency(amount + value, ess).substring(1); - if (newline.length() > 16) + if (newline.length() > 15) { throw new SignException("Line too long!"); } @@ -287,7 +291,7 @@ public class SignTrade extends EssentialsSign final ItemStack item = getItemStack(split[1], stackamount, ess); final int amount = getInteger(split[2]); final String newline = stackamount + " " + split[1] + ":" + (amount + Math.round(value)); - if (newline.length() > 16) + if (newline.length() > 15) { throw new SignException("Line too long!"); } -- cgit v1.2.3 From ead83fc93837be8f14b27e66c50b47b0c5b6ecb8 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 10 Oct 2011 11:40:20 +0300 Subject: Fix NPE in BUY signs --- Essentials/src/com/earth2me/essentials/FakeInventory.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/FakeInventory.java b/Essentials/src/com/earth2me/essentials/FakeInventory.java index e1c3321d2..fef6db7d0 100644 --- a/Essentials/src/com/earth2me/essentials/FakeInventory.java +++ b/Essentials/src/com/earth2me/essentials/FakeInventory.java @@ -15,6 +15,10 @@ public class FakeInventory implements Inventory this.items = new ItemStack[items.length]; for (int i = 0; i < items.length; i++) { + if (items[i] == null) + { + continue; + } this.items[i] = new ItemStack(items[i].getTypeId(), items[i].getAmount(), items[i].getDurability()); } } -- cgit v1.2.3 From 8d861792294cd8733ce72033901d1fa18a14f748 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Tue, 11 Oct 2011 00:37:03 +0100 Subject: Changing essentials URL, we should at least give one that works, although bukkitdev would probably be better. --- Essentials/src/plugin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 61a054c45..1240910ce 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -3,7 +3,7 @@ name: Essentials main: com.earth2me.essentials.Essentials # Note to developers: This next line cannot change, or the automatic versioning system will break. version: TeamCity -website: http://www.earth2me.net:8001/ +website: http://ci.earth2me.net/ description: Provides an essential, core set of commands for Bukkit. authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits] commands: -- cgit v1.2.3 -- cgit v1.2.3 From 7a03eeca1b539ed636f2bea8c44c88ecc05d40df Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 11 Oct 2011 12:48:44 +0200 Subject: Changes for new Bukkit --- .../src/com/earth2me/essentials/OfflinePlayer.java | 19 +++++++++++++++++++ .../src/com/earth2me/essentials/PlayerWrapper.java | 18 ++++++++++++++++++ .../src/org/anjocaido/groupmanager/GroupManager.java | 4 ++-- .../groupmanager/dataholder/worlds/WorldsHolder.java | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index 1b0058f24..3ca0c17f4 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -3,6 +3,7 @@ package com.earth2me.essentials; import java.net.InetSocketAddress; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.UUID; import org.bukkit.Achievement; @@ -725,4 +726,22 @@ public class OfflinePlayer implements Player { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public int getTicksLived() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTicksLived(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Map serialize() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/src/com/earth2me/essentials/PlayerWrapper.java b/Essentials/src/com/earth2me/essentials/PlayerWrapper.java index 4b998af47..ccb61d891 100644 --- a/Essentials/src/com/earth2me/essentials/PlayerWrapper.java +++ b/Essentials/src/com/earth2me/essentials/PlayerWrapper.java @@ -755,5 +755,23 @@ public class PlayerWrapper implements Player { return base.getPlayerListName(); } + + @Override + public int getTicksLived() + { + return base.getTicksLived(); + } + + @Override + public void setTicksLived(int i) + { + base.setTicksLived(i); + } + + @Override + public Map serialize() + { + return base.serialize(); + } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 0fe8a15d4..23cd1e9b5 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -159,7 +159,7 @@ public class GroupManager extends JavaPlugin { } }; scheduler = new ScheduledThreadPoolExecutor(1); - int minutes = getConfig().getSaveInterval(); + int minutes = getGMConfig().getSaveInterval(); scheduler.scheduleAtFixedRate(commiter, minutes, minutes, TimeUnit.MINUTES); GroupManager.logger.info("Scheduled Data Saving is set for every " + minutes + " minutes!"); } @@ -1749,7 +1749,7 @@ public class GroupManager extends JavaPlugin { /** * @return the config */ - public GMConfiguration getConfig() { + public GMConfiguration getGMConfig() { return config; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index 50e6ef547..0bcf9a827 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -111,7 +111,7 @@ public class WorldsHolder { @SuppressWarnings("rawtypes") public void mirrorSetUp() { mirrors.clear(); - Map mirrorsMap = plugin.getConfig().getMirrorsMap(); + Map mirrorsMap = plugin.getGMConfig().getMirrorsMap(); if (mirrorsMap != null) { for (String source : mirrorsMap.keySet()) { // Make sure all non mirrored worlds have a set of data files. -- cgit v1.2.3