From 033151a170f623746ec9e467f8d22e8b9091b625 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 17 Jul 2011 18:09:34 -0700 Subject: [PATCH 01/13] Edited Essentials/src/config.yml via GitHub --- Essentials/src/config.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index dd43da6cd..9505a7646 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -125,31 +125,41 @@ player-commands: - balance - clearinventory - compass + - depth + - getpos - help - helpop - home - home.others - ignore - info + - kit - list - mail + - mail.send + - me - motd - msg - nick - pay + - ping - powertool - r - rules - seen - sell - sethome + - setxmpp + - spawn - suicide - tpa - tpaccept - tpahere - tpdeny + - warp - world - worth + - xmpp # Note: All items MUST be followed by a quantity! # Times are measured in seconds. From be83383fd5d09b899f07952b9976fba52a1ea19d Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 03:42:21 +0200 Subject: [PATCH 02/13] Added option to hide player from /list /who ... login message. This is for other plugins, that want to hide a player. Use IEssentials.getUser(Player p).setHidden(boolean) --- .../com/earth2me/essentials/Essentials.java | 22 ++++++++- .../src/com/earth2me/essentials/User.java | 11 +++++ .../essentials/commands/Commandgod.java | 4 ++ .../essentials/commands/Commandheal.java | 6 ++- .../essentials/commands/Commandlist.java | 45 ++++++++++++++++++- .../essentials/commands/Commandmsg.java | 4 +- .../essentials/commands/Commandpay.java | 4 ++ .../essentials/commands/Commandrealname.java | 4 ++ .../essentials/commands/Commandwhois.java | 4 ++ .../commands/EssentialsCommand.java | 12 +++-- 10 files changed, 107 insertions(+), 9 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 45a2aff60..2e2ea9786 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -320,15 +320,27 @@ public class Essentials extends JavaPlugin implements IEssentials m = m.replace("{IP}", user.getAddress().toString()); m = m.replace("{BALANCE}", Double.toString(user.getMoney())); m = m.replace("{MAILS}", Integer.toString(user.getMails().size())); + m = m.replace("{WORLD}", user.getLocation().getWorld().getName()); } - - m = m.replace("{ONLINE}", Integer.toString(getServer().getOnlinePlayers().length)); + int playerHidden = 0; + for (Player p : getServer().getOnlinePlayers()) + { + if (getUser(p).isHidden()) + { + playerHidden++; + } + } + m = m.replace("{ONLINE}", Integer.toString(getServer().getOnlinePlayers().length - playerHidden)); if (m.matches(".*\\{PLAYERLIST\\}.*")) { StringBuilder online = new StringBuilder(); for (Player p : getServer().getOnlinePlayers()) { + if (getUser(p).isHidden()) + { + continue; + } if (online.length() > 0) { online.append(", "); @@ -563,6 +575,12 @@ public class Essentials extends JavaPlugin implements IEssentials public User getOfflineUser(String name) { + // Don't create a new offline user, if we already have that user loaded. + User u = users.get(name.toLowerCase()); + if (u != null) + { + return u; + } File userFolder = new File(getDataFolder(), "userdata"); File userFile = new File(userFolder, Util.sanitizeFileName(name) + ".yml"); if (userFile.exists()) diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 22d8a5705..ccbfff409 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -19,6 +19,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser private boolean teleportRequestHere; private final Teleport teleport; private long lastActivity; + private boolean hidden = false; User(Player base, IEssentials ess) { @@ -331,4 +332,14 @@ public class User extends UserData implements Comparable, IReplyTo, IUser this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : now); return now; } + + public boolean isHidden() + { + return hidden; + } + + public void setHidden(boolean hidden) + { + this.hidden = hidden; + } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgod.java b/Essentials/src/com/earth2me/essentials/commands/Commandgod.java index b244c3f29..6bb9f1390 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgod.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgod.java @@ -43,6 +43,10 @@ public class Commandgod extends EssentialsCommand for (Player p : server.matchPlayer(name)) { User u = ess.getUser(p); + if (u.isHidden()) + { + continue; + } boolean enabled = u.toggleGodModeEnabled(); u.sendMessage(Util.format("godMode", (enabled ? Util.i18n("enabled") : Util.i18n("disabled")))); sender.sendMessage(Util.format("godMode",Util.format(enabled ? "godEnabledFor": "godDisabledFor", p.getDisplayName()))); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandheal.java b/Essentials/src/com/earth2me/essentials/commands/Commandheal.java index a68a357d7..effe64604 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandheal.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandheal.java @@ -53,13 +53,17 @@ public class Commandheal extends EssentialsCommand private void healOtherPlayers(Server server, CommandSender sender, String name) { List players = server.matchPlayer(name); - if(players.isEmpty()) + if (players.isEmpty()) { sender.sendMessage(Util.i18n("playerNotFound")); return; } for (Player p : players) { + if (ess.getUser(p).isHidden()) + { + continue; + } p.setHealth(20); sender.sendMessage(Util.format("healOther", p.getDisplayName())); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandlist.java b/Essentials/src/com/earth2me/essentials/commands/Commandlist.java index b14136070..445db4597 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandlist.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandlist.java @@ -24,9 +24,33 @@ public class Commandlist extends EssentialsCommand @Override public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception { + boolean showhidden = false; + if (sender instanceof Player) + { + if (ess.getUser(sender).isAuthorized("essentials.list.hidden")) + { + showhidden = true; + } + } + else + { + showhidden = true; + } + int playerHidden = 0; + for (Player p : server.getOnlinePlayers()) + { + if (ess.getUser(p).isHidden()) + { + playerHidden++; + } + } charge(sender); StringBuilder online = new StringBuilder(); - online.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().length); + online.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().length - playerHidden); + if (showhidden) + { + online.append(ChatColor.GRAY).append("/").append(playerHidden); + } online.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED).append(server.getMaxPlayers()); online.append(ChatColor.BLUE).append(" players online."); sender.sendMessage(online.toString()); @@ -37,6 +61,10 @@ public class Commandlist extends EssentialsCommand for (Player p : server.getOnlinePlayers()) { User u = ess.getUser(p); + if (u.isHidden() && !showhidden) + { + continue; + } String group = u.getGroup(); List list = sort.get(group); if (list == null) @@ -69,6 +97,10 @@ public class Commandlist extends EssentialsCommand { groupString.append("§7[AFK]§f"); } + if (user.isHidden()) + { + groupString.append("§7[HIDDEN]§f"); + } groupString.append(user.getDisplayName()); } sender.sendMessage(groupString.toString()); @@ -79,7 +111,12 @@ public class Commandlist extends EssentialsCommand List users = new ArrayList(); for (Player p : server.getOnlinePlayers()) { - users.add(ess.getUser(p)); + final User u = ess.getUser(p); + if (u.isHidden() && !showhidden) + { + continue; + } + users.add(u); } Collections.sort(users); @@ -100,6 +137,10 @@ public class Commandlist extends EssentialsCommand { onlineUsers.append("§7[AFK]§f"); } + if (user.isHidden()) + { + onlineUsers.append("§7[HIDDEN]§f"); + } onlineUsers.append(user.getDisplayName()); } sender.sendMessage(onlineUsers.toString()); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java index fcedbde83..02b7a6c32 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java @@ -5,6 +5,7 @@ import org.bukkit.Server; import org.bukkit.entity.Player; import com.earth2me.essentials.Console; import com.earth2me.essentials.IReplyTo; +import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import org.bukkit.command.CommandSender; @@ -52,7 +53,8 @@ public class Commandmsg extends EssentialsCommand for (Player p : matches) { sender.sendMessage(Util.format("msgFormat", translatedMe, p.getDisplayName(), message)); - if (sender instanceof Player && ess.getUser(p).isIgnoredPlayer(((Player)sender).getName())) + final User u = ess.getUser(p); + if (sender instanceof Player && (u.isIgnoredPlayer(((Player)sender).getName()) || u.isHidden())) { continue; } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandpay.java b/Essentials/src/com/earth2me/essentials/commands/Commandpay.java index e14ff699f..4f52eee58 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandpay.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandpay.java @@ -25,6 +25,10 @@ public class Commandpay extends EssentialsCommand for (Player p : server.matchPlayer(args[0])) { User u = ess.getUser(p); + if (u.isHidden()) + { + continue; + } user.payUser(u, amount); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java index ce327b204..e16d59198 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrealname.java @@ -26,6 +26,10 @@ public class Commandrealname extends EssentialsCommand for (Player p : server.getOnlinePlayers()) { final User u = ess.getUser(p); + if (u.isHidden()) + { + continue; + } final String displayName = ChatColor.stripColor(u.getDisplayName()).toLowerCase(); if (!whois.equals(displayName) && !displayName.equals(ChatColor.stripColor(ess.getSettings().getNicknamePrefix()) + whois) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java index 1dcd59131..9b5d172f2 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java @@ -28,6 +28,10 @@ public class Commandwhois extends EssentialsCommand for (Player p : server.getOnlinePlayers()) { User u = ess.getUser(p); + if (u.isHidden()) + { + continue; + } String dn = ChatColor.stripColor(u.getNick()); if (!whois.equalsIgnoreCase(dn) && !whois.equalsIgnoreCase(dn.substring(prefixLength)) diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index ac19f7d74..5ea2bf8b0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -53,12 +53,18 @@ public abstract class EssentialsCommand implements IEssentialsCommand for (Player p : matches) { - if (p.getDisplayName().startsWith(args[pos])) + final User u = ess.getUser(p); + if (u.getDisplayName().startsWith(args[pos]) && (getOffline || !u.isHidden())) { - return ess.getUser(p); + return u; } } - return ess.getUser(matches.get(0)); + final User u = ess.getUser(matches.get(0)); + if (!getOffline && u.isHidden()) + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } + return u; } @Override From e37db99c564fe35f0d0e2492fdaf1c56fbc87663 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 03:54:33 +0200 Subject: [PATCH 03/13] Fix player still being in user list after he was deleted. --- Essentials/src/com/earth2me/essentials/api/Economy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Essentials/src/com/earth2me/essentials/api/Economy.java b/Essentials/src/com/earth2me/essentials/api/Economy.java index fcab616be..ddafacd5f 100644 --- a/Essentials/src/com/earth2me/essentials/api/Economy.java +++ b/Essentials/src/com/earth2me/essentials/api/Economy.java @@ -60,6 +60,7 @@ public final class Economy { logger.log(Level.WARNING, Util.format("deleteFileError", config)); } + ess.getAllUsers().remove(name.toLowerCase()); } } From 277c623a77083890f24d94e9cff639d78d15ecb3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 04:42:10 +0200 Subject: [PATCH 04/13] Missing return in /time reset command --- Essentials/src/com/earth2me/essentials/commands/Commandtime.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java index d05f8890c..8ea14ae77 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtime.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtime.java @@ -106,6 +106,7 @@ public class Commandtime extends EssentialsCommand if ("reset".equalsIgnoreCase(timeString)) { user.resetPlayerTime(); + return; } throw new Exception(Util.i18n("onlyDayNight")); } From 5aa2bc1706c5189e60b29c9f4e78e434846ed385 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 04:49:38 +0200 Subject: [PATCH 05/13] Log location of /sell and signs --- Essentials/src/com/earth2me/essentials/Trade.java | 15 ++++++++++++++- .../earth2me/essentials/commands/Commandsell.java | 2 +- .../com/earth2me/essentials/signs/SignBuy.java | 2 +- .../com/earth2me/essentials/signs/SignFree.java | 2 +- .../com/earth2me/essentials/signs/SignSell.java | 2 +- .../com/earth2me/essentials/signs/SignTrade.java | 8 ++++---- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index 0be445032..4c5a148cc 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import org.bukkit.Location; import org.bukkit.inventory.ItemStack; @@ -131,7 +132,7 @@ public class Trade } private static FileWriter fw = null; - public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, IEssentials ess) + 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()) { @@ -201,6 +202,18 @@ public class Trade sb.append(ess.getSettings().getCurrencySymbol()); } } + if (loc == null) + { + sb.append(",\"\",\"\",\"\",\"\""); + } + else + { + sb.append(",\""); + sb.append(loc.getWorld().getName()).append("\","); + sb.append(loc.getBlockX()).append(","); + sb.append(loc.getBlockY()).append(","); + sb.append(loc.getBlockZ()).append(","); + } sb.append("\n"); try { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java index 66b838051..56f6cb2fc 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java @@ -153,7 +153,7 @@ public class Commandsell extends EssentialsCommand final ItemStack ris = new ItemStack(is.getType(), amount, is.getDurability()); InventoryWorkaround.removeItem(user.getInventory(), true, ris); user.updateInventory(); - Trade.log("Command", "Sell", "Item", user.getName(), new Trade(ris, ess), user.getName(), new Trade(worth*amount, ess), ess); + Trade.log("Command", "Sell", "Item", user.getName(), new Trade(ris, ess), user.getName(), new Trade(worth*amount, ess), user.getLocation(), ess); user.giveMoney(worth * amount); user.sendMessage(Util.format("itemSold", Util.formatCurrency(worth * amount, ess), amount, Util.formatCurrency(worth, ess))); logger.log(Level.INFO, Util.format("itemSoldConsole", user.getDisplayName(), is.getType().toString().toLowerCase(), Util.formatCurrency(worth * amount, ess), amount, Util.formatCurrency(worth, ess))); diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java index 4249342e1..6ee602ff5 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBuy.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBuy.java @@ -29,7 +29,7 @@ public class SignBuy extends EssentialsSign charge.isAffordableFor(player); items.pay(player); charge.charge(player); - Trade.log("Sign", "Buy", "Interact", username, charge, username, items, ess); + Trade.log("Sign", "Buy", "Interact", username, charge, username, items, sign.getBlock().getLocation(), ess); return true; } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignFree.java b/Essentials/src/com/earth2me/essentials/signs/SignFree.java index 55ea1d241..8939f4bea 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignFree.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignFree.java @@ -32,7 +32,7 @@ public class SignFree extends EssentialsSign inv.clear(); InventoryWorkaround.addItem(inv, true, item); player.showInventory(inv); - Trade.log("Sign", "Free", "Interact", username, null, username, new Trade(item, ess), ess); + Trade.log("Sign", "Free", "Interact", username, null, username, new Trade(item, ess), sign.getBlock().getLocation(), ess); return true; } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignSell.java b/Essentials/src/com/earth2me/essentials/signs/SignSell.java index 9df1ec874..2a5a8cfcc 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignSell.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignSell.java @@ -29,7 +29,7 @@ public class SignSell extends EssentialsSign charge.isAffordableFor(player); money.pay(player); charge.charge(player); - Trade.log("Sign", "Sell", "Interact", username, charge, username, money, ess); + Trade.log("Sign", "Sell", "Interact", username, charge, username, money, sign.getBlock().getLocation(), ess); return true; } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 544c3216e..6c0205d34 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -24,7 +24,7 @@ public class SignTrade extends EssentialsSign charge.isAffordableFor(player); sign.setLine(3, "§8" + username); charge.charge(player); - Trade.log("Sign", "Trade", "Create", username, charge, username, null, ess); + Trade.log("Sign", "Trade", "Create", username, charge, username, null, sign.getBlock().getLocation(), ess); return true; } @@ -36,7 +36,7 @@ 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, ess); + Trade.log("Sign", "Trade", "OwnerInteract", username, null, username, stored, sign.getBlock().getLocation(), ess); } else { @@ -47,7 +47,7 @@ public class SignTrade extends EssentialsSign trade.pay(player); addAmount(sign, 1, charge, ess); charge.charge(player); - Trade.log("Sign", "Trade", "Interact", sign.getLine(3), charge, username, trade, ess); + Trade.log("Sign", "Trade", "Interact", sign.getLine(3), charge, username, trade, sign.getBlock().getLocation(), ess); } sign.updateSign(); return true; @@ -63,7 +63,7 @@ public class SignTrade extends EssentialsSign final Trade stored2 = getTrade(sign, 2, true, false, ess); stored1.pay(player); stored2.pay(player); - Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, ess); + Trade.log("Sign", "Trade", "Break", username, stored2, username, stored1, sign.getBlock().getLocation(), ess); return true; } else From a3c71e461794b7d61943c8bd9281a72a56cd49da Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 04:58:55 +0200 Subject: [PATCH 06/13] Append the event and not the word event to trade log --- Essentials/src/com/earth2me/essentials/Trade.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index 4c5a148cc..45c3d49a3 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -150,7 +150,7 @@ public class Trade } } StringBuilder sb = new StringBuilder(); - sb.append(type).append(",").append(subtype).append(",").append("event").append(",\""); + sb.append(type).append(",").append(subtype).append(",").append(event).append(",\""); sb.append(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(new Date())); sb.append("\",\""); if (sender != null) From c1c300545402b4eb1de989a6307c5f41891fd4a3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 04:59:47 +0200 Subject: [PATCH 07/13] Fix InventoryWorkaround.addItem() not using the combined list. --- .../src/com/earth2me/essentials/InventoryWorkaround.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java index 3cbcd1b2e..e163cfb58 100644 --- a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java @@ -100,9 +100,9 @@ public final class InventoryWorkaround } - for (int i = 0; i < items.length; i++) + for (int i = 0; i < combined.length; i++) { - final ItemStack item = items[i]; + final ItemStack item = combined[i]; while (true) { // Do we already have a stack of it? From fd1256b449e36c66c40b895344584050502a5fd4 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 05:45:05 +0200 Subject: [PATCH 08/13] Only show hidden player count, if it's more than 0 --- .../src/com/earth2me/essentials/commands/Commandlist.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandlist.java b/Essentials/src/com/earth2me/essentials/commands/Commandlist.java index 445db4597..29afb7b71 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandlist.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandlist.java @@ -47,7 +47,7 @@ public class Commandlist extends EssentialsCommand charge(sender); StringBuilder online = new StringBuilder(); online.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().length - playerHidden); - if (showhidden) + if (showhidden && playerHidden > 0) { online.append(ChatColor.GRAY).append("/").append(playerHidden); } From b88d0f88a1c3f94bfac5c127518021157c1d1f5f Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 06:08:13 +0200 Subject: [PATCH 09/13] Fix: Player staying afk if moving --- Essentials/src/com/earth2me/essentials/Essentials.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 2e2ea9786..1bd909f05 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -177,10 +177,7 @@ public class Essentials extends JavaPlugin implements IEssentials pm.registerEvent(Type.PLAYER_QUIT, playerListener, Priority.Monitor, this); pm.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Lowest, this); pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this); - if (getSettings().getNetherPortalsEnabled()) - { - pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this); - } + pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_LOGIN, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_TELEPORT, playerListener, Priority.High, this); pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.High, this); From 13e5f22c25cea8a978d59558b0d0ab709128d0b3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 06:14:00 +0200 Subject: [PATCH 10/13] Removed " from language files --- Essentials/src/messages.properties | 4 ++-- Essentials/src/messages_da.properties | 4 ++-- Essentials/src/messages_de.properties | 4 ++-- Essentials/src/messages_en.properties | 4 ++-- Essentials/src/messages_fr.properties | 4 ++-- Essentials/src/messages_nl.properties | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties index 842d4a613..9712cf007 100644 --- a/Essentials/src/messages.properties +++ b/Essentials/src/messages.properties @@ -215,8 +215,8 @@ playerInJail = \u00a7cPlayer is already in jail {0}. playerJailed = \u00a77Player {0} jailed. playerJailedFor = \u00a77Player {0} jailed for {1}. playerKicked = \u00a7cPlayer {0} kicked: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cPlayer {0} was never on this server. playerNotFound = \u00a7cPlayer not found. playerUnmuted = "\u00a77You have been unmuted" diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties index 555e8c677..81b387074 100644 --- a/Essentials/src/messages_da.properties +++ b/Essentials/src/messages_da.properties @@ -217,8 +217,8 @@ playerInJail = \u00a7cSpiller er allerede i f\u00e6ngsel {0}. playerJailed = \u00a77Spiller {0} f\u00e6ngslet. playerJailedFor = \u00a77Spiller {0} f\u00e6ngslet for {1}. playerKicked = \u00a7cPlayer {0} kicked: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cSpiller {0} var aldrig p\u00e5 denne server. playerNotFound = \u00a7cSpiller ikke fundet. playerUnmuted = "\u00a77You have been unmuted" diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties index b4a222c4e..a9ec7497b 100644 --- a/Essentials/src/messages_de.properties +++ b/Essentials/src/messages_de.properties @@ -215,8 +215,8 @@ playerInJail = \u00a7cSpieler ist bereits in Gef\u00e4ngnis {0}. playerJailed = \u00a77Spieler {0} eingesperrt. playerJailedFor = \u00a77Spieler {0} eingesperrt f\u00fcr {1}. playerKicked = \u00a7cSpieler {0} rausgeworfen: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cSpieler {0} war niemals auf diesem Server. playerNotFound = \u00a7cSpieler nicht gefunden. playerUnmuted = "\u00a77You have been unmuted" diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties index 9f0bbc6bc..420768a35 100644 --- a/Essentials/src/messages_en.properties +++ b/Essentials/src/messages_en.properties @@ -215,8 +215,8 @@ playerInJail = \u00a7cPlayer is already in jail {0}. playerJailed = \u00a77Player {0} jailed. playerJailedFor = \u00a77Player {0} jailed for {1}. playerKicked = \u00a7cPlayer {0} kicked: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cPlayer {0} was never on this server. playerNotFound = \u00a7cPlayer not found. playerUnmuted = "\u00a77You have been unmuted" diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties index 4c5f757db..5f32ff3bc 100644 --- a/Essentials/src/messages_fr.properties +++ b/Essentials/src/messages_fr.properties @@ -215,8 +215,8 @@ playerInJail = \u00a7cLe joueur est d\u00e9j\u00e0 dans la prison {0}. playerJailed = \u00a77Le joueur {0} a \u00e9t\u00e9 emprisonn\u00e9. playerJailedFor = \u00a77{0} a \u00e9t\u00e9 emprisonn\u00e9 pour {1}. playerKicked = \u00a7cPlayer {0} kicked: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cLe joueur {0} n''a jamais \u00e9t\u00e9 sur le serveur. playerNotFound = \u00a7cLe joueur est introuvable. playerUnmuted = "\u00a77You have been unmuted" diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties index 85184886f..be4037210 100644 --- a/Essentials/src/messages_nl.properties +++ b/Essentials/src/messages_nl.properties @@ -216,8 +216,8 @@ playerInJail = \u00a7cSpeler zit al in de gevangenis {0}. playerJailed = \u00a77Speler {0} is in de gevangenis gezet. playerJailedFor = \u00a77Speler {0} is in de gevangenis gezet voor {1}. playerKicked = \u00a7cPlayer {0} kicked: {1} -playerMuted = "\u00a77You have been muted" -playerMutedFor = "\u00a77You have been muted for {0}" +playerMuted = \u00a77You have been muted +playerMutedFor = \u00a77You have been muted for {0} playerNeverOnServer = \u00a7cSpeler {0} is nooit op deze server geweest. playerNotFound = \u00a7cSpeler niet gevonden. playerUnmuted = "\u00a77You have been unmuted" From 83b71eef5ed18ee352707c06b40d4c2133f0cdf6 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 06:19:40 +0200 Subject: [PATCH 11/13] I don't think we need this anymore. --- Essentials/src/com/earth2me/essentials/User.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index ccbfff409..bba843999 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -251,10 +251,6 @@ public class User extends UserData implements Comparable, IReplyTo, IUser nickname.insert(0, prefix); nickname.append(suffix); - if (suffix.length() > 1 && suffix.substring(suffix.length() - 2, suffix.length() - 1).equals("§")) - { - nickname.append("§f"); - } return nickname.toString(); } From 3d232e13d9c30284a83e4df2c3e4d62fd22f2950 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 07:22:28 +0200 Subject: [PATCH 12/13] New config settings for Protect: protect.prevent.tnt-playerdamage protect.prevent.fireball-fire protect.prevent.fireball-playerdamage --- Essentials/src/config.yml | 3 ++ .../essentials/protect/EssentialsProtect.java | 1 + .../EssentialsProtectEntityListener.java | 31 +++++++++++++++++++ .../essentials/protect/ProtectConfig.java | 3 ++ 4 files changed, 38 insertions(+) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 9505a7646..7aaec6027 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -342,7 +342,10 @@ protect: lightning-fire-spread: true portal-creation: false tnt-explosion: false + tnt-playerdamage: false fireball-explosion: false + fireball-fire: false + fireball-playerdamage: false creeper-explosion: false creeper-playerdamage: false creeper-blockdamage: false diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java index 53843843f..216a37564 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java @@ -53,6 +53,7 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect pm.registerEvent(Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this); pm.registerEvent(Type.CREATURE_SPAWN, entityListener, Priority.Highest, this); pm.registerEvent(Type.ENTITY_TARGET, entityListener, Priority.Highest, this); + pm.registerEvent(Type.EXPLOSION_PRIME, entityListener, Priority.Highest, this); final EssentialsProtectWeatherListener weatherListener = new EssentialsProtectWeatherListener(this); pm.registerEvent(Type.LIGHTNING_STRIKE, weatherListener, Priority.Highest, this); diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java index ceb72bd8d..a71bcbd09 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java @@ -18,8 +18,10 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.entity.CraftTNTPrimed; import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; +import org.bukkit.entity.Fireball; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.entity.TNTPrimed; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageByBlockEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -30,6 +32,7 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityListener; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetEvent.TargetReason; +import org.bukkit.event.entity.ExplosionPrimeEvent; public class EssentialsProtectEntityListener extends EntityListener @@ -118,6 +121,24 @@ public class EssentialsProtectEntityListener extends EntityListener event.setCancelled(true); return; } + + if (eAttack instanceof Fireball && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg) + && !(target instanceof Player + && user.isAuthorized("essentials.protect.damage.fireball") + && !user.isAuthorized("essentials.protect.damage.disable"))) + { + event.setCancelled(true); + return; + } + + if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg) + && !(target instanceof Player + && user.isAuthorized("essentials.protect.damage.tnt") + && !user.isAuthorized("essentials.protect.damage.disable"))) + { + event.setCancelled(true); + return; + } } if (event instanceof EntityDamageByProjectileEvent @@ -314,4 +335,14 @@ public class EssentialsProtectEntityListener extends EntityListener return; } } + + @Override + public void onExplosionPrime(ExplosionPrimeEvent event) + { + if (event.getEntity() instanceof CraftFireball + && prot.getSettingBool(ProtectConfig.prevent_fireball_fire)) + { + event.setFire(false); + } + } } diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java index 12b7c9fd9..9959db8c6 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java @@ -32,7 +32,10 @@ public enum ProtectConfig prevent_portal_creation("protect.prevent.portal-creation", false), prevent_block_on_rail("protect.protect.prevent-block-on-rails", false), prevent_tnt_explosion("protect.prevent.tnt-explosion", false), + prevent_tnt_playerdmg("protect.prevent.tnt-playerdamage", false), prevent_fireball_explosion("protect.prevent.fireball-explosion", false), + prevent_fireball_fire("protect.prevent.fireball-fire", false), + prevent_fireball_playerdmg("protect.prevent.fireball-playerdamage", false), prevent_creeper_explosion("protect.prevent.creeper-explosion", true), prevent_creeper_playerdmg("protect.prevent.creeper-playerdamage", false), prevent_creeper_blockdmg("protect.prevent.creeper-blockdamage", false), From d2bc7e01a251c21ff4b9de7193e8a6187d7ffd37 Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 18 Jul 2011 13:18:28 +0200 Subject: [PATCH 13/13] Workaround for the crippled bukkit permissions. Splits the node at . and checks for * permissions on all levels. --- .../essentials/BukkitPermissionsHandler.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/BukkitPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/BukkitPermissionsHandler.java index a352bcb5a..aee9ef0b4 100644 --- a/Essentials/src/com/earth2me/essentials/BukkitPermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/BukkitPermissionsHandler.java @@ -5,7 +5,6 @@ import org.bukkit.entity.Player; public class BukkitPermissionsHandler implements IPermissionsHandler { - public String getGroup(Player base) { return "default"; @@ -23,6 +22,20 @@ public class BukkitPermissionsHandler implements IPermissionsHandler public boolean hasPermission(Player base, String node) { + if (base.hasPermission("-" + node)) + { + return false; + } + final String[] parts = node.split("\\."); + final StringBuilder sb = new StringBuilder(); + for (String part : parts) + { + if (base.hasPermission(sb.toString() + "*")) + { + return true; + } + sb.append(part).append("."); + } return base.hasPermission(node); } @@ -35,5 +48,4 @@ public class BukkitPermissionsHandler implements IPermissionsHandler { return ""; } - }