From 3deff2afe7b225337bd03d23022c4f4e9df8c0c9 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 28 Jan 2012 18:01:17 +0000 Subject: silly formatting change to test gitbot --- EssentialsGroupManager/src/Changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index ef9a3a408..127346f82 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -90,7 +90,7 @@ v 1.7: v 1.8: - Changed ServicesManager registration to lowest from normal. - Fixed 'manucheckp' returning a null for the searched node when it's a group/subgroup. - - manpromote and mandemote now correctly send the notification to the console if the command was issued there. + - 'manpromote' and 'mandemote' now correctly send the notification to the console if the command was issued there. - Expanded GlobalGroups.yml and Groups.yml to include Towny permissions. - Delayed GroupManager events so Superperms will be fully updated before plugins receive the events. - Changed the way events are raised to prevent variable corruption. -- cgit v1.2.3 From e1abdbdd370989c48ea49e54306155750e18b598 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 01:12:38 +0000 Subject: Added options to enable each sign type --- .../src/com/earth2me/essentials/ISettings.java | 3 ++ .../src/com/earth2me/essentials/Settings.java | 53 +++++++++++++++++++--- .../essentials/signs/SignBlockListener.java | 25 ++++------ .../essentials/signs/SignEntityListener.java | 6 +-- .../essentials/signs/SignPlayerListener.java | 6 +-- Essentials/src/config.yml | 22 ++++++++- 6 files changed, 83 insertions(+), 32 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 30a073dde..560eb6f79 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -1,6 +1,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.IEssentialsCommand; +import com.earth2me.essentials.signs.EssentialsSign; import java.text.MessageFormat; import java.util.List; import java.util.Map; @@ -100,6 +101,8 @@ public interface ISettings extends IConf boolean isTradeInStacks(int id); List itemSpawnBlacklist(); + + List enabledSigns(); boolean permissionBasedItemSpawn(); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index dc9c9471e..2152fc800 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -2,6 +2,8 @@ package com.earth2me.essentials; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.commands.IEssentialsCommand; +import com.earth2me.essentials.signs.EssentialsSign; +import com.earth2me.essentials.signs.Signs; import java.io.File; import java.text.MessageFormat; import java.util.*; @@ -278,7 +280,7 @@ public class Settings implements ISettings @Override public boolean areSignsDisabled() { - return config.getBoolean("signs-disabled", false); + return enabledSigns.isEmpty(); } @Override @@ -356,11 +358,20 @@ public class Settings implements ISettings { config.load(); noGodWorlds = new HashSet(config.getStringList("no-god-in-worlds", Collections.emptyList())); + enabledSigns = getEnabledSigns(); + itemSpawnBl = getItemSpawnBlacklist(); chatFormats.clear(); } + private List itemSpawnBl = new ArrayList(); + @Override public List itemSpawnBlacklist() + { + return itemSpawnBl; + } + + private List getItemSpawnBlacklist() { final List epItemSpwn = new ArrayList(); for (String itemName : config.getString("item-spawn-blacklist", "").split(",")) @@ -369,12 +380,11 @@ public class Settings implements ISettings if (itemName.isEmpty()) { continue; - } - ItemStack is; + } try { - is = ess.getItemDb().get(itemName); - epItemSpwn.add(is.getTypeId()); + final ItemStack iStack = ess.getItemDb().get(itemName); + epItemSpwn.add(iStack.getTypeId()); } catch (Exception ex) { @@ -383,6 +393,36 @@ public class Settings implements ISettings } return epItemSpwn; } + + private List enabledSigns = new ArrayList(); + + @Override + public List enabledSigns() + { + return enabledSigns; + } + + private List getEnabledSigns() + { + List newSigns = new ArrayList(); + for (String signName : config.getString("enabledSigns", "").split(",")) + { + signName = signName.trim(); + if (signName.isEmpty()) + { + continue; + } + try + { + newSigns.add(Signs.valueOf(signName).getSign()); + } + catch (Exception ex) + { + logger.log(Level.SEVERE, _("unknownItemInList", signName, "enabledSigns")); + } + } + return newSigns; + } @Override public boolean spawnIfNoHome() @@ -559,7 +599,8 @@ public class Settings implements ISettings { return config.getBoolean("death-messages", true); } - Set noGodWorlds = new HashSet(); + + private Set noGodWorlds = new HashSet(); @Override public Set getNoGodWorlds() diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java index 913de6358..2ddb42c36 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -44,9 +44,9 @@ public class SignBlockListener implements Listener if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId()) { final Sign csign = (Sign)block.getState(); - for (Signs signs : Signs.values()) + + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()) && !sign.onSignBreak(block, player, ess)) { @@ -62,9 +62,8 @@ public class SignBlockListener implements Listener LOGGER.log(Level.INFO, "Prevented that a block was broken next to a sign."); return true; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBreak(block, player, ess)) { @@ -91,9 +90,8 @@ public class SignBlockListener implements Listener event.setLine(i, event.getLine(i).replaceAll("&([0-9a-f])", "§$1")); } } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName())) { event.setCancelled(true); @@ -130,9 +128,8 @@ public class SignBlockListener implements Listener { return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPlace(block, event.getPlayer(), ess)) { @@ -159,9 +156,8 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBurn(block, ess)) { @@ -188,9 +184,8 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockIgnite(block, ess)) { @@ -213,9 +208,8 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPush(block, ess)) { @@ -240,9 +234,8 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPush(block, ess)) { diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java index 281afdc98..d9e28becc 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java @@ -32,9 +32,8 @@ public class SignEntityListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType())) { event.setCancelled(!sign.onBlockExplode(block, ess)); @@ -61,9 +60,8 @@ public class SignEntityListener implements Listener event.setCancelled(true); return; } - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBreak(block, ess)) { diff --git a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java index f1ba79b0b..f891c0fdb 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java @@ -41,9 +41,8 @@ public class SignPlayerListener implements Listener return; } final Sign csign = (Sign)block.getState(); - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())) { sign.onSignInteract(block, event.getPlayer(), ess); @@ -54,9 +53,8 @@ public class SignPlayerListener implements Listener } else { - for (Signs signs : Signs.values()) + for (EssentialsSign sign : ess.getSettings().enabledSigns()) { - final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockInteract(block, event.getPlayer(), ess)) { diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 877ff0c42..a9e980725 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -166,8 +166,26 @@ kits: - 278 1 - 279 1 -# Disable all signs -signs-disabled: false +# Enable specifc signs on the server +# See http://ess.khhq.net/wiki/Sign_Tutorial for specific instructions. +# To enable remove # symbol. +enabledSigns: + - balance + #- buy + #- sell + #- trade + #- free + - disposal + #- warp + #- kit + #- mail + #- enchant + #- gamemode + #- heal + #- spawnmob + #- time + #- weather + #- protection # Backup runs a command while saving is disabled backup: -- cgit v1.2.3 From b3252168f62652d5fce51b02c27b3654206dba91 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 01:27:04 +0000 Subject: Disable all signs by default. --- Essentials/src/config.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index a9e980725..3ad4e3ce8 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -166,16 +166,18 @@ kits: - 278 1 - 279 1 -# Enable specifc signs on the server -# See http://ess.khhq.net/wiki/Sign_Tutorial for specific instructions. -# To enable remove # symbol. +# Essentials Sign Control +# See http://ess.khhq.net/wiki/Sign_Tutorial for instructions on how to use these. +# To enable signs, remove # symbol. To disable all signs, comment/remove each sign. +# We recommend not enabling chest protection signs if you don't intend to use them, (or are using LWC/Lockette). + enabledSigns: - - balance + #- balance #- buy #- sell #- trade #- free - - disposal + #- disposal #- warp #- kit #- mail -- cgit v1.2.3 From ebb3a774300479fac5cf059a8f1dbb5ae0f947ef Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 01:38:24 +0000 Subject: Fix sign list format. --- Essentials/src/com/earth2me/essentials/Settings.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 2152fc800..e50e9c16f 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -405,9 +405,10 @@ public class Settings implements ISettings private List getEnabledSigns() { List newSigns = new ArrayList(); - for (String signName : config.getString("enabledSigns", "").split(",")) + + for (String signName : config.getStringList("enabledSigns", null)) { - signName = signName.trim(); + signName = signName.trim().toUpperCase(Locale.ENGLISH); if (signName.isEmpty()) { continue; -- cgit v1.2.3 From 27365d1f1bd3f6dfbdcd62b66af182cee2fae0a4 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 01:42:55 +0000 Subject: Prevent disabled sign creation (if any of essentials signs are enabled) --- Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java index 2ddb42c36..e57919ab1 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -90,8 +90,9 @@ public class SignBlockListener implements Listener event.setLine(i, event.getLine(i).replaceAll("&([0-9a-f])", "§$1")); } } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (Signs signs : Signs.values()) { + final EssentialsSign sign = signs.getSign(); if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName())) { event.setCancelled(true); @@ -128,8 +129,9 @@ public class SignBlockListener implements Listener { return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (Signs signs : Signs.values()) { + final EssentialsSign sign = signs.getSign(); if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPlace(block, event.getPlayer(), ess)) { -- cgit v1.2.3 From 735f9ce2122ee9284193f34143619c8bcc951ebb Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 02:57:52 +0000 Subject: Make sure player is online when sending a /reply. --- Essentials/src/com/earth2me/essentials/commands/Commandr.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandr.java b/Essentials/src/com/earth2me/essentials/commands/Commandr.java index 7ef012d0d..7d8ee481d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandr.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandr.java @@ -53,7 +53,7 @@ public class Commandr extends EssentialsCommand final CommandSender target = replyTo.getReplyTo(); final String targetName = target instanceof Player ? ((Player)target).getDisplayName() : Console.NAME; - if (target == null) + if (target == null || ((target instanceof Player) && ((Player)target).isOnline())) { throw new Exception(_("foreverAlone")); } -- cgit v1.2.3 From 9ee78bdaec91950cb19575f2d87d008c2a5c4434 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 03:09:59 +0000 Subject: Switch /near priority to check for int first. Test #1269 --- .../earth2me/essentials/commands/Commandnear.java | 45 ++++++++++------------ 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnear.java b/Essentials/src/com/earth2me/essentials/commands/Commandnear.java index 0afcf1650..c13c1489d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandnear.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandnear.java @@ -15,38 +15,38 @@ public class Commandnear extends EssentialsCommand { super("near"); } - + @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { long radius = 200; User otherUser = null; - + if (args.length > 0) { try { - otherUser = getPlayer(server, args, 0); + radius = Long.parseLong(args[0]); } - catch (Exception ex) + catch (NumberFormatException e) { try { - radius = Long.parseLong(args[0]); + otherUser = getPlayer(server, args, 0); } - catch (NumberFormatException e) + catch (Exception ex) { } } - } - if (args.length > 1 && otherUser != null) - { - try - { - radius = Long.parseLong(args[1]); - } - catch (NumberFormatException e) + if (args.length > 1 && otherUser != null) { + try + { + radius = Long.parseLong(args[1]); + } + catch (NumberFormatException e) + { + } } } if (otherUser == null || user.isAuthorized("essentials.near.others")) @@ -58,20 +58,15 @@ public class Commandnear extends EssentialsCommand user.sendMessage(_("noAccessCommand")); } } - + @Override protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception { - - User otherUser = null; - if (args.length > 0) - { - otherUser = getPlayer(server, args, 0); - } - else + if (args.length == 0) { throw new NotEnoughArgumentsException(); } + final User otherUser = getPlayer(server, args, 0); long radius = 200; if (args.length > 1) { @@ -85,14 +80,14 @@ public class Commandnear extends EssentialsCommand } sender.sendMessage(_("nearbyPlayers", getLocal(server, otherUser, radius))); } - + private String getLocal(final Server server, final User user, final long radius) { final Location loc = user.getLocation(); final World world = loc.getWorld(); final StringBuilder output = new StringBuilder(); final long radiusSquared = radius * radius; - + for (Player onlinePlayer : server.getOnlinePlayers()) { final User player = ess.getUser(onlinePlayer); @@ -103,7 +98,7 @@ public class Commandnear extends EssentialsCommand { continue; } - + final long delta = (long)playerLoc.distanceSquared(loc); if (delta < radiusSquared) { -- cgit v1.2.3 From a31f5e219d3a2803bed94c747e74bf59acddf7f1 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 03:22:52 +0000 Subject: Kill people the proper way. Test #1410 --- Essentials/src/com/earth2me/essentials/commands/Commandkill.java | 2 +- .../src/com/earth2me/essentials/commands/Commandsuicide.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java index e56f9d67b..c23161c0e 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java @@ -31,7 +31,7 @@ public class Commandkill extends EssentialsCommand continue; } - matchPlayer.setHealth(0); + matchPlayer.damage(1000); sender.sendMessage(_("kill", matchPlayer.getDisplayName())); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java index aa2ed5567..6ccb3f7b6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java @@ -3,6 +3,7 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.User; import org.bukkit.Server; +import org.bukkit.event.entity.EntityDamageEvent; public class Commandsuicide extends EssentialsCommand @@ -15,9 +16,10 @@ public class Commandsuicide extends EssentialsCommand @Override public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - user.setHealth(0); + EntityDamageEvent ede = new EntityDamageEvent(user, EntityDamageEvent.DamageCause.SUICIDE, 1000); + server.getPluginManager().callEvent(ede); + user.damage(1000); user.sendMessage(_("suicideMessage")); - ess.broadcastMessage(user, - _("suicideSuccess", user.getDisplayName())); + ess.broadcastMessage(user,_("suicideSuccess", user.getDisplayName())); } } -- cgit v1.2.3 From c47c00887185f0701cc0926f2644ca3a7578dcf5 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 03:26:03 +0000 Subject: Added kit note. Fixes #1276 --- Essentials/src/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 3ad4e3ce8..63770a293 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -157,6 +157,7 @@ player-commands: - xmpp # Note: All items MUST be followed by a quantity! +# All kit names should be lower case, and will be treated as lower in permissions/costs. # Times are measured in seconds. kits: tools: -- cgit v1.2.3 From 6a5fefb102bde081b3eb2f04f72a256c6f8ed293 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 04:59:30 +0000 Subject: Optional second argument to /tpaccept, it will only accept the request if the sender matched that string. --- Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java | 5 +++++ Essentials/src/plugin.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java index 0cece3310..2e3e024a3 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java @@ -26,6 +26,11 @@ public class Commandtpaccept extends EssentialsCommand { throw new Exception(_("noPendingRequest")); } + + if (args.length > 0 && !target.getName().contains(args[0])) + { + throw new Exception(_("noPendingRequest")); + } long timeout = ess.getSettings().getTpaAcceptCancellation(); if (timeout != 0 && (System.currentTimeMillis() - user.getTeleportRequestTime()) / 1000 > timeout) diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 7d8db28bb..0ec1ee6d9 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -348,7 +348,7 @@ commands: aliases: [etpaall] tpaccept: description: Accepts a teleport request. - usage: / + usage: / [otherplayer] aliases: [tpyes,etpaccept,etpyes] tpahere: description: Request that the specified player teleport to you. -- cgit v1.2.3 From 95885e46c9f207a0c06f595fef0dbc56c7f5b59c Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 29 Jan 2012 10:54:24 +0000 Subject: Fix players retaining permissions when demoted. --- EssentialsGroupManager/.project | 10 +++++++ EssentialsGroupManager/src/Changelog.txt | 3 ++- .../org/anjocaido/groupmanager/GroupManager.java | 31 +++++++++++----------- .../permissions/BukkitPermissions.java | 15 +++++------ 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/EssentialsGroupManager/.project b/EssentialsGroupManager/.project index 6ad74b347..c0e5a6f5e 100644 --- a/EssentialsGroupManager/.project +++ b/EssentialsGroupManager/.project @@ -10,6 +10,16 @@ + + org.eclipse.ui.externaltools.ExternalToolBuilder + full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/GroupManager.launch + + + org.eclipse.jdt.core.javanature diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 127346f82..41b5613af 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -124,4 +124,5 @@ v 1.9: - Trap errors in fetching the mirrors map. - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. - do not allow inherited permissions to negate higher perms. - - Fixed a bug when pushing superperms in the wrong order. \ No newline at end of file + - Fixed a bug when pushing superperms in the wrong order. + - Fix players retaining permissions when demoted. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index c0ed77adc..43b764faf 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -415,9 +415,9 @@ public class GroupManager extends JavaPlugin { if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'."); - targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) - BukkitPermissions.updatePermissions(targetPlayer); + //targetPlayer = this.getServer().getPlayer(auxUser.getName()); + //if (targetPlayer != null) + // BukkitPermissions.updatePermissions(targetPlayer); return true; // break; @@ -450,6 +450,7 @@ public class GroupManager extends JavaPlugin { dataHolder.removeUser(auxUser.getName()); sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' to default settings."); + // If the player is online, this will create new data for the user. targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); @@ -494,9 +495,9 @@ public class GroupManager extends JavaPlugin { else sender.sendMessage(ChatColor.RED + "The subgroup '" + auxGroup.getName() + "' is already available to '" + auxUser.getName() + "'."); - targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) - BukkitPermissions.updatePermissions(targetPlayer); + //targetPlayer = this.getServer().getPlayer(auxUser.getName()); + //if (targetPlayer != null) + // BukkitPermissions.updatePermissions(targetPlayer); return true; case manudelsub: @@ -534,9 +535,9 @@ public class GroupManager extends JavaPlugin { auxUser.removeSubGroup(auxGroup); sender.sendMessage(ChatColor.YELLOW + "You removed subgroup '" + auxGroup.getName() + "' from player '" + auxUser.getName() + "' list."); - targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) - BukkitPermissions.updatePermissions(targetPlayer); + //targetPlayer = this.getServer().getPlayer(auxUser.getName()); + //if (targetPlayer != null) + // BukkitPermissions.updatePermissions(targetPlayer); return true; case mangadd: @@ -1614,9 +1615,9 @@ public class GroupManager extends JavaPlugin { if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); - targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) - BukkitPermissions.updatePermissions(targetPlayer); + //targetPlayer = this.getServer().getPlayer(auxUser.getName()); + //if (targetPlayer != null) + // BukkitPermissions.updatePermissions(targetPlayer); return true; // break; @@ -1670,9 +1671,9 @@ public class GroupManager extends JavaPlugin { if (!sender.hasPermission("groupmanager.notify.other") || (isConsole)) sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); - targetPlayer = this.getServer().getPlayer(auxUser.getName()); - if (targetPlayer != null) - BukkitPermissions.updatePermissions(targetPlayer); + //targetPlayer = this.getServer().getPlayer(auxUser.getName()); + //if (targetPlayer != null) + // BukkitPermissions.updatePermissions(targetPlayer); return true; // break; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 396b49583..d1193510e 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -28,7 +28,6 @@ import java.util.Map; import java.util.Set; import org.anjocaido.groupmanager.GroupManager; -import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -136,33 +135,30 @@ public class BukkitPermissions { } PermissionAttachment attachment; + // Find the players current attachment, or add a new one. if (this.attachments.containsKey(player)) { attachment = this.attachments.get(player); } else { attachment = player.addAttachment(plugin); - this.attachments.put(player, attachment);; + this.attachments.put(player, attachment); } if (world == null) { world = player.getWorld().getName(); } - OverloadedWorldHolder worldData = plugin.getWorldsHolder().getWorldData(world); - Boolean value = false; - // Add all permissions for this player (GM only) // child nodes will be calculated by Bukkit. - List playerPermArray = new ArrayList(worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName(), false)); + List playerPermArray = new ArrayList(plugin.getWorldsHolder().getWorldData(world).getPermissionsHandler().getAllPlayersPermissions(player.getName(), false)); LinkedHashMap newPerms = new LinkedHashMap(); // Sort the perm list by parent/child, so it will push to superperms correctly. playerPermArray = sort(playerPermArray); - + Boolean value = false; for (String permission : playerPermArray) { value = (!permission.startsWith("-")); - newPerms.put((value? permission : permission.substring(1)), value); } @@ -178,7 +174,8 @@ public class BukkitPermissions { // Then whack our map into there orig.putAll(newPerms); // That's all folks! - attachment.getPermissible().recalculatePermissions(); + //attachment.getPermissible().recalculatePermissions(); + player.recalculatePermissions(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { -- cgit v1.2.3 From bf9a67a2e4b9906371be3bde294cf9fb78ed93cf Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 29 Jan 2012 11:04:52 +0000 Subject: updating .gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6c25fbdd7..eda2b5917 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,6 @@ /WebPush/apikey.php /WebPush/nbproject/private /.idea -*.iml \ No newline at end of file +*.iml +/EssentialsGroupManager/bin +/EssentialsGroupManager/.externalToolBuilders \ No newline at end of file -- cgit v1.2.3 From bc76e8736671d61940fd380c0b351cd3303bce97 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 20:57:17 +0000 Subject: Fix boolean fail in /r offline checking. --- Essentials/src/com/earth2me/essentials/commands/Commandr.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandr.java b/Essentials/src/com/earth2me/essentials/commands/Commandr.java index 7d8ee481d..fe2a4e5b1 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandr.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandr.java @@ -53,7 +53,7 @@ public class Commandr extends EssentialsCommand final CommandSender target = replyTo.getReplyTo(); final String targetName = target instanceof Player ? ((Player)target).getDisplayName() : Console.NAME; - if (target == null || ((target instanceof Player) && ((Player)target).isOnline())) + if (target == null || ((target instanceof Player) && !((Player)target).isOnline())) { throw new Exception(_("foreverAlone")); } -- cgit v1.2.3 From dff8f541fea1c71bb7816e6c7f6b3ce9cdb773fb Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 21:06:55 +0000 Subject: New craftbukkit CB 1840, B 1208 --- .../earth2me/essentials/craftbukkit/FakeWorld.java | 6 ++++++ .../test/com/earth2me/essentials/FakeServer.java | 6 ++++++ lib/bukkit.jar | Bin 4716477 -> 4718659 bytes lib/craftbukkit.jar | Bin 10722858 -> 10689331 bytes 4 files changed, 12 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index e78e508f7..57e2eda63 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -548,4 +548,10 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public boolean canGenerateStructures() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java index b5ecc1e08..7090c26b6 100644 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ b/Essentials/test/com/earth2me/essentials/FakeServer.java @@ -648,4 +648,10 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public boolean useExactLoginLocation() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/lib/bukkit.jar b/lib/bukkit.jar index 394d5b667..a06058767 100644 Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar index 52bda3246..188d0cabb 100644 Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ -- cgit v1.2.3 From a2418a68d919a959a4b3c4ccfaa66dd8d818bf6a Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 21:37:38 +0000 Subject: Fixing Kill/suicide in creative mode. --- Essentials/src/com/earth2me/essentials/commands/Commandkill.java | 3 ++- Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java index c23161c0e..566cb69d5 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandkill.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandkill.java @@ -31,7 +31,8 @@ public class Commandkill extends EssentialsCommand continue; } - matchPlayer.damage(1000); + matchPlayer.damage(1000); + matchPlayer.setHealth(0); sender.sendMessage(_("kill", matchPlayer.getDisplayName())); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java index 6ccb3f7b6..64f7fe04a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java @@ -19,6 +19,7 @@ public class Commandsuicide extends EssentialsCommand EntityDamageEvent ede = new EntityDamageEvent(user, EntityDamageEvent.DamageCause.SUICIDE, 1000); server.getPluginManager().callEvent(ede); user.damage(1000); + user.setHealth(0); user.sendMessage(_("suicideMessage")); ess.broadcastMessage(user,_("suicideSuccess", user.getDisplayName())); } -- cgit v1.2.3 From 2c8aa20542b6fbb1555c11e9cd6485534beee39d Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 29 Jan 2012 21:37:50 +0000 Subject: .project change for Eclipse Build tool --- EssentialsGroupManager/.project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsGroupManager/.project b/EssentialsGroupManager/.project index c0e5a6f5e..0562b3e0f 100644 --- a/EssentialsGroupManager/.project +++ b/EssentialsGroupManager/.project @@ -16,7 +16,7 @@ LaunchConfigHandle - <project>/.externalToolBuilders/GroupManager.launch + <project>/.externalToolBuilders/New_Builder.launch -- cgit v1.2.3 From 2f1d9ad82cae64b1012f4f105e98b01bfc0db5ee Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 21:44:15 +0000 Subject: Prevent /home bed, if the bed was later destroyed. --- Essentials/src/com/earth2me/essentials/commands/Commandhome.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java index ebe57adf7..f14422efd 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java @@ -48,7 +48,7 @@ public class Commandhome extends EssentialsCommand if ("bed".equalsIgnoreCase(homeName)) { final Location bed = player.getBedSpawnLocation(); - if (bed != null) + if (bed != null && bed.getBlock().getType() == Material.BED_BLOCK) { user.getTeleport().teleport(bed, charge, TeleportCause.COMMAND); throw new NoChargeException(); -- cgit v1.2.3 From 8500542e934ce30f9bff8148340c001973ce46bb Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 29 Jan 2012 23:36:27 +0000 Subject: Remove invalid item spawn blacklist warning during startup. --- Essentials/src/com/earth2me/essentials/Settings.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index e50e9c16f..6b81753b6 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -374,6 +374,10 @@ public class Settings implements ISettings private List getItemSpawnBlacklist() { final List epItemSpwn = new ArrayList(); + if (ess.getItemDb() == null) { + logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded."); + return epItemSpwn; + } for (String itemName : config.getString("item-spawn-blacklist", "").split(",")) { itemName = itemName.trim(); -- cgit v1.2.3 From 5b4966c8883609b40dced835a0a38935df063f30 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 30 Jan 2012 14:41:19 +0000 Subject: Auto sort permissions on load to speed up population of superperms. Negating a parent node after adding all nodes with * will now correctly remove all child nodes of that parent before populating superperms. eg. - '*' - -vanish.* - vanish.standard --- EssentialsGroupManager/src/Changelog.txt | 8 +++- .../groupmanager/dataholder/WorldDataHolder.java | 56 ++++++++++++---------- .../permissions/AnjoPermissionsHandler.java | 21 ++++++-- 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 41b5613af..c3dce16d9 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -125,4 +125,10 @@ v 1.9: - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. - do not allow inherited permissions to negate higher perms. - Fixed a bug when pushing superperms in the wrong order. - - Fix players retaining permissions when demoted. \ No newline at end of file + - Fix players retaining permissions when demoted. + - Auto sort permissions on load to speed up population of superperms. + - Negating a parent node after adding all nodes with * will now correctly remove all child nodes of that parent before populating superperms. + eg. + - '*' + - -vanish.* + - vanish.standard \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 3cbfbd50b..4fe1daaa5 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -451,7 +451,7 @@ public class WorldDataHolder { Map thisGroupNode = (Map) allGroupsNode.get(groupKey); Group thisGrp = ph.createGroup(groupKey); if (thisGrp == null) { - throw new IllegalArgumentException("I think this user was declared more than once: " + groupKey + " in file: " + groupsFile.getPath()); + throw new IllegalArgumentException("I think this Group was declared more than once: " + groupKey + " in file: " + groupsFile.getPath()); } if (thisGroupNode.get("default") == null) { thisGroupNode.put("default", false); @@ -467,20 +467,22 @@ public class WorldDataHolder { //PERMISSIONS NODE if (thisGroupNode.get("permissions") == null) { thisGroupNode.put("permissions", new ArrayList()); - } - if (thisGroupNode.get("permissions") instanceof List) { - for (Object o : ((List) thisGroupNode.get("permissions"))) { - try { - thisGrp.addPermission(o.toString()); - } catch (NullPointerException e) { - // Ignore this entry as it's null. - //throw new IllegalArgumentException("Invalid permission node in group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); - } - } - } else if (thisGroupNode.get("permissions") instanceof String) { - thisGrp.addPermission((String) thisGroupNode.get("permissions")); } else { - throw new IllegalArgumentException("Unknown type of permissions node(Should be String or List) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + if (thisGroupNode.get("permissions") instanceof List) { + for (Object o : ((List) thisGroupNode.get("permissions"))) { + try { + thisGrp.addPermission(o.toString()); + } catch (NullPointerException e) { + // Ignore this entry as it's null. + //throw new IllegalArgumentException("Invalid permission node in group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } + } + } else if (thisGroupNode.get("permissions") instanceof String) { + thisGrp.addPermission((String) thisGroupNode.get("permissions")); + } else { + throw new IllegalArgumentException("Unknown type of permissions node(Should be String or List) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } + thisGrp.sortPermissions(); } //INFO NODE @@ -581,18 +583,20 @@ public class WorldDataHolder { } if (thisUserNode.get("permissions") == null) { thisUserNode.put("permissions", new ArrayList()); - } - if (thisUserNode.get("permissions") instanceof List) { - for (Object o : ((List) thisUserNode.get("permissions"))) { - thisUser.addPermission(o.toString()); - } - } else if (thisUserNode.get("permissions") instanceof String) { - try { - thisUser.addPermission(thisUserNode.get("permissions").toString()); - } catch (NullPointerException e) { - // Ignore this entry as it's null. - //throw new IllegalArgumentException("Invalid permission node for user: " + thisUser.getName() + " in file: " + UserFile.getPath()); - } + } else { + if (thisUserNode.get("permissions") instanceof List) { + for (Object o : ((List) thisUserNode.get("permissions"))) { + thisUser.addPermission(o.toString()); + } + } else if (thisUserNode.get("permissions") instanceof String) { + try { + thisUser.addPermission(thisUserNode.get("permissions").toString()); + } catch (NullPointerException e) { + // Ignore this entry as it's null. + //throw new IllegalArgumentException("Invalid permission node for user: " + thisUser.getName() + " in file: " + UserFile.getPath()); + } + } + thisUser.sortPermissions(); } //SUBGROUPS LOADING diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 2e008e223..7436bec70 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -153,15 +153,23 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { private Set populatePerms (List perms, boolean includeChildren) { Set permArray = new HashSet(); + Boolean allPerms = false; - // Allow * node to populate ALL perms in Bukkit. + // Allow * node to populate ALL permissions to Bukkit. if (perms.contains("*")) { permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren)); + allPerms = true; } for (String perm : perms) { if (!perm.equalsIgnoreCase("*")) { + + /** + * all permission sets are passed here pre-sorted, alphabetically. + * This means negated nodes will be processed before all permissions + * other than *. + */ boolean negated = false; if (perm.startsWith("-")) negated = true; @@ -172,12 +180,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { if ((negated) && (permArray.contains(perm.substring(1)))) permArray.remove(perm.substring(1)); - if (includeChildren) { + /** + * Process child nodes if required, + * or this is a negated node AND we used * to include all permissions, + * in which case we need to remove all children of that node. + */ + if ((includeChildren) || (negated && allPerms)) { Map children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet()); if (children != null) { - if (negated) { + if (negated || (negated && allPerms)) { // Remove children of negated nodes for (String child : children.keySet()) @@ -185,7 +198,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { if (permArray.contains(child)) permArray.remove(child); - } else { + } else if (!negated){ // Add child nodes for (String child : children.keySet()) -- cgit v1.2.3 From fe050dd72591dc22a370ff4517bd30396fe36956 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 30 Jan 2012 17:08:55 +0000 Subject: Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../org/anjocaido/groupmanager/permissions/BukkitPermissions.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index c3dce16d9..770dbe8e2 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -131,4 +131,5 @@ v 1.9: eg. - '*' - -vanish.* - - vanish.standard \ No newline at end of file + - vanish.standard + - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index d1193510e..1409f774d 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -34,6 +34,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerPortalEvent; @@ -358,6 +359,11 @@ public class BukkitPermissions { } setPlayer_join(false); } + + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // will portal into another world + updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName()); + } @EventHandler(priority = EventPriority.LOWEST) public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world -- cgit v1.2.3 From 3f02bcd702f890d1ccba35e2217b61d730ff9953 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 31 Jan 2012 03:16:34 +0000 Subject: Catch all errors in badly formatted groups. --- EssentialsGroupManager/.project | 2 +- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../anjocaido/groupmanager/dataholder/WorldDataHolder.java | 11 ++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/EssentialsGroupManager/.project b/EssentialsGroupManager/.project index 0562b3e0f..c0e5a6f5e 100644 --- a/EssentialsGroupManager/.project +++ b/EssentialsGroupManager/.project @@ -16,7 +16,7 @@ LaunchConfigHandle - <project>/.externalToolBuilders/New_Builder.launch + <project>/.externalToolBuilders/GroupManager.launch diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 770dbe8e2..490df8fc6 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -132,4 +132,5 @@ v 1.9: - '*' - -vanish.* - vanish.standard - - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. \ No newline at end of file + - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. + - Catch all errors in badly formatted groups. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 4fe1daaa5..581f17770 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -445,7 +445,7 @@ public class WorldDataHolder { //PROCESS GROUPS FILE Map> inheritance = new HashMap>(); - //try { + try { Map allGroupsNode = (Map) groupsRootDataNode.get("groups"); for (String groupKey : allGroupsNode.keySet()) { Map thisGroupNode = (Map) allGroupsNode.get(groupKey); @@ -514,10 +514,11 @@ public class WorldDataHolder { }else throw new IllegalArgumentException("Unknown entry found in inheritance section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); } - //} catch (Exception ex) { - // ex.printStackTrace(); - // throw new IllegalArgumentException("Your Permissions config file is invalid. See console for details."); - //} + } catch (Exception ex) { + ex.printStackTrace(); + throw new IllegalArgumentException("Your " + groupsFile.getPath() + " file is invalid. See console for details."); + } + if (ph.getDefaultGroup() == null) { throw new IllegalArgumentException("There was no Default Group declared in file: " + groupsFile.getPath()); } -- cgit v1.2.3 From 2942ef40f3f78a5316885302da2512b0e4d52e27 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Tue, 31 Jan 2012 08:06:50 +0000 Subject: Update jails to new event system. --- Essentials/src/com/earth2me/essentials/Jails.java | 43 ++++++++++++----------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Jails.java b/Essentials/src/com/earth2me/essentials/Jails.java index f8ab2d02e..7035fb859 100644 --- a/Essentials/src/com/earth2me/essentials/Jails.java +++ b/Essentials/src/com/earth2me/essentials/Jails.java @@ -1,18 +1,24 @@ package com.earth2me.essentials; +import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.api.IJails; import com.earth2me.essentials.storage.AsyncStorageObjectHolder; -import static com.earth2me.essentials.I18n._; import java.io.File; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; -import org.bukkit.event.block.*; -import org.bukkit.event.player.*; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockDamageEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.plugin.PluginManager; @@ -33,13 +39,8 @@ public class Jails extends AsyncStorageObjectHolder Date: Tue, 31 Jan 2012 08:33:14 +0000 Subject: More info, and less severe warning on jail error. --- Essentials/src/com/earth2me/essentials/Jails.java | 27 ++++++++++++++++++++--- Essentials/src/messages.properties | 2 +- Essentials/src/messages_da.properties | 2 +- Essentials/src/messages_de.properties | 2 +- Essentials/src/messages_en.properties | 2 +- Essentials/src/messages_es.properties | 2 +- Essentials/src/messages_fr.properties | 2 +- Essentials/src/messages_nl.properties | 2 +- 8 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Jails.java b/Essentials/src/com/earth2me/essentials/Jails.java index 7035fb859..0011905ec 100644 --- a/Essentials/src/com/earth2me/essentials/Jails.java +++ b/Essentials/src/com/earth2me/essentials/Jails.java @@ -208,7 +208,14 @@ public class Jails extends AsyncStorageObjectHolder Date: Thu, 2 Feb 2012 02:01:04 +0000 Subject: Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../src/org/anjocaido/groupmanager/GroupManager.java | 2 +- .../groupmanager/dataholder/worlds/WorldsHolder.java | 13 ++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 490df8fc6..e48365de5 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -133,4 +133,5 @@ v 1.9: - -vanish.* - vanish.standard - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. - - Catch all errors in badly formatted groups. \ No newline at end of file + - Catch all errors in badly formatted groups. + - Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 43b764faf..bb61b2145 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1762,9 +1762,9 @@ public class GroupManager extends JavaPlugin { dataHolder = worldsHolder.getWorldData(worldsHolder.getDefaultWorld().getName()); permissionHandler = dataHolder.getPermissionsHandler(); - selectedWorlds.put(sender, dataHolder.getName()); if ((dataHolder != null) && (permissionHandler != null)) { + selectedWorlds.put(sender, dataHolder.getName()); sender.sendMessage(ChatColor.RED + "Couldn't retrieve your world. Default world '" + worldsHolder.getDefaultWorld().getName() + "' selected."); return true; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index 686a5495d..6d819daa5 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -320,7 +320,8 @@ public class WorldsHolder { * If the world is not on the worlds list, returns the default world * holder. * - * Mirrors return original world data. + * Mirrors return their parent world data. + * If no mirroring data it returns the default world. * * @param worldName * @return OverloadedWorldHolder @@ -328,8 +329,17 @@ public class WorldsHolder { public OverloadedWorldHolder getWorldData(String worldName) { String worldNameLowered = worldName.toLowerCase(); + // Return this worlds data if (worldsData.containsKey(worldNameLowered)) return worldsData.get(worldNameLowered); + + // If groups mirrored return the parent worlds data + if (mirrorsGroup.containsKey(worldNameLowered)) + return worldsData.get(mirrorsGroup.get(worldNameLowered).toLowerCase()); + + // If users mirrored return the parent worlds data + if (mirrorsUser.containsKey(worldNameLowered)) + return worldsData.get(mirrorsUser.get(worldNameLowered).toLowerCase()); GroupManager.logger.finest("Requested world " + worldName + " not found or badly mirrored. Returning default world..."); return getDefaultWorld(); @@ -353,6 +363,7 @@ public class WorldsHolder { /** * Retrieves the field player.getWorld().getName() and do * getWorld(worldName) + * * @param player * @return OverloadedWorldHolder */ -- cgit v1.2.3 From a0103afde373e581ce4028b7c57bef7b21bfc780 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Thu, 2 Feb 2012 02:41:10 +0000 Subject: fix setGroup to only block superperms update if update is false. --- EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java index 980b0846c..30fe3f709 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -138,8 +138,8 @@ public class User extends DataUnit implements Cloneable { String oldGroup = this.group; this.group = group.getName(); flagAsChanged(); - if (GroupManager.isLoaded() && (updatePerms)) { - if (!GroupManager.BukkitPermissions.isPlayer_join()) + if (GroupManager.isLoaded()) { + if (!GroupManager.BukkitPermissions.isPlayer_join() && (updatePerms)) GroupManager.BukkitPermissions.updatePlayer(getBukkitPlayer()); // Do we notify of the group change? -- cgit v1.2.3 From 5c19e71858ad3e4605156bead2e29fdccb512ed0 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 09:26:36 +0000 Subject: Sanitize mail for untoward characters. Prevent a user error from terminating essentials timer task. --- .../src/com/earth2me/essentials/EssentialsTimer.java | 16 ++++++++++++---- Essentials/src/com/earth2me/essentials/Util.java | 10 ++++++++-- .../com/earth2me/essentials/commands/Commandmail.java | 7 ++++--- .../com/earth2me/essentials/signs/SignProtection.java | 2 +- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java index f3b447dae..0c413bfc8 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsTimer.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsTimer.java @@ -3,6 +3,7 @@ package com.earth2me.essentials; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.logging.Level; import org.bukkit.entity.Player; @@ -22,10 +23,17 @@ public class EssentialsTimer implements Runnable final long currentTime = System.currentTimeMillis(); for (Player player : ess.getServer().getOnlinePlayers()) { - final User user = ess.getUser(player); - onlineUsers.add(user); - user.setLastOnlineActivity(currentTime); - user.checkActivity(); + try + { + final User user = ess.getUser(player); + onlineUsers.add(user); + user.setLastOnlineActivity(currentTime); + user.checkActivity(); + } + catch (Exception e) + { + ess.getLogger().log(Level.WARNING, "EssentialsTimer Error:", e); + } } final Iterator iterator = onlineUsers.iterator(); diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index 386433326..48e2a53a0 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -21,11 +21,17 @@ public class Util { } private final static Logger logger = Logger.getLogger("Minecraft"); - private final static Pattern INVALIDCHARS = Pattern.compile("[^a-z0-9]"); + private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]"); + private final static Pattern INVALIDCHARS = Pattern.compile("[^\\p{Print}]"); public static String sanitizeFileName(final String name) { - return INVALIDCHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_"); + return INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_"); + } + + public static String sanitizeString(final String string) + { + return INVALIDCHARS.matcher(string).replaceAll(""); } public static String formatDateDiff(long date) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java index 4a9928b85..abc551f58 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java @@ -40,7 +40,7 @@ public class Commandmail extends EssentialsCommand { if (!user.isAuthorized("essentials.mail.send")) { - throw new Exception(_("noPerm","essentials.mail.send")); + throw new Exception(_("noPerm", "essentials.mail.send")); } Player player = server.getPlayer(args[1]); @@ -59,7 +59,8 @@ public class Commandmail extends EssentialsCommand } if (!u.isIgnoredPlayer(user.getName())) { - u.addMail(user.getName() + ": " + Util.stripColor(getFinalArg(args, 2))); + final String mail = Util.sanitizeString(Util.stripColor(getFinalArg(args, 2))); + u.addMail(user.getName() + ": " + mail); } user.sendMessage(_("mailSent")); return; @@ -68,7 +69,7 @@ public class Commandmail extends EssentialsCommand { if (!user.isAuthorized("essentials.mail.sendall")) { - throw new Exception(_("noPerm","essentials.mail.sendall")); + throw new Exception(_("noPerm", "essentials.mail.sendall")); } ess.scheduleAsyncDelayedTask(new SendAll(user.getName() + ": " + Util.stripColor(getFinalArg(args, 1)))); user.sendMessage(_("mailSent")); diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java index f64b6f3f1..088e74f01 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java @@ -129,7 +129,7 @@ public class SignProtection extends EssentialsSign if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) { final BlockSign sign = new BlockSign(block); - if (sign.getLine(0).equalsIgnoreCase(this.getSuccessName())) + if (sign.getLine(0).equals(this.getSuccessName())) { return checkProtectionSign(sign, user, username); } -- cgit v1.2.3 From 6e2ac3b56ec504b60c104b4a5856843e34b3eb23 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 09:37:30 +0000 Subject: Extend valid characters to be a little less strict. --- Essentials/src/com/earth2me/essentials/Util.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index 48e2a53a0..65077a7fc 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -22,7 +22,7 @@ public class Util } private final static Logger logger = Logger.getLogger("Minecraft"); private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]"); - private final static Pattern INVALIDCHARS = Pattern.compile("[^\\p{Print}]"); + private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]");; public static String sanitizeFileName(final String name) { -- cgit v1.2.3 From e3f3fe84ea9a2e665105f0acc334dbd0fd1c9f8e Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 09:48:56 +0000 Subject: Recover from broken config files, but keep a backup of the old one for purpose of data recovery. --- Essentials/src/com/earth2me/essentials/EssentialsConf.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java index 35252532f..ec6e27b53 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java @@ -110,9 +110,10 @@ public class EssentialsConf extends Configuration super.load(); } catch (RuntimeException e) - { - LOGGER.log(Level.SEVERE, "File broken: " + configFile.toString()); - throw e; + { + File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis()); + configFile.renameTo(broken); + LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), e.getCause()); } if (this.root == null) -- cgit v1.2.3 From 492c4e8521a3c81ab6f6367a86c7d7f2f8802ef3 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 10:27:09 +0000 Subject: Craftbukkit #1846 Bukkit #1211 --- lib/bukkit.jar | Bin 4718659 -> 4718663 bytes lib/craftbukkit.jar | Bin 10689331 -> 10691664 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/bukkit.jar b/lib/bukkit.jar index a06058767..aa26f4f35 100644 Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar index 188d0cabb..190294358 100644 Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ -- cgit v1.2.3 From 3ff1f4adbbad83d7987e6f43569eee69d6b1c0ef Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 10:27:35 +0000 Subject: Fixing repair to not repair items with datavalues, unless they actually have a durability. --- Essentials/src/com/earth2me/essentials/commands/Commandrepair.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java index cf9e43f9f..8d1278fd0 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java @@ -80,7 +80,7 @@ public class Commandrepair extends EssentialsCommand private void repairItem(final ItemStack item) throws Exception { final Material material = Material.getMaterial(item.getTypeId()); - if (material.isBlock() || material.getMaxDurability() < 0) + if (material.isBlock() || material.getMaxDurability() < 1) { throw new Exception(_("repairInvalidType")); } -- cgit v1.2.3 From 4326ce0d4ab98aec52894358c48bd7504ce51ebe Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 10:32:18 +0000 Subject: Force minimum CB version to 1846, don't want people on #1840 due to big bugs. --- 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 e1c8c28b9..21f2e38ea 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -61,7 +61,7 @@ import org.yaml.snakeyaml.error.YAMLException; public class Essentials extends JavaPlugin implements IEssentials { - public static final int BUKKIT_VERSION = 1818; + public static final int BUKKIT_VERSION = 1846; private static final Logger LOGGER = Logger.getLogger("Minecraft"); private transient ISettings settings; private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this); -- cgit v1.2.3 From 86a1dda46c6b269bb3c95fc0431e15838eeafbca Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 2 Feb 2012 10:43:17 +0000 Subject: Make it so ops can build, even if they don't have the matching permission. --- Essentials/src/com/earth2me/essentials/User.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index e23fe1de0..b289333aa 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -544,6 +544,10 @@ public class User extends UserData implements Comparable, IReplyTo, IUser public boolean canBuild() { + if (isOp()) + { + return true; + } return ess.getPermissionsHandler().canBuild(base, getGroup()); } -- cgit v1.2.3 From 76ba5caeec462b53eb9bffedec3c67b646eebb1c Mon Sep 17 00:00:00 2001 From: ElgarL Date: Thu, 2 Feb 2012 18:10:35 +0000 Subject: Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. --- EssentialsGroupManager/src/Changelog.txt | 3 +- .../permissions/AnjoPermissionsHandler.java | 43 +++++++++++++--------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index e48365de5..0ef3add6f 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -134,4 +134,5 @@ v 1.9: - vanish.standard - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. - Catch all errors in badly formatted groups. - - Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. \ No newline at end of file + - Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. + - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 7436bec70..bd2829f38 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -121,27 +121,34 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { // Add the players own permissions. playerPermArray.addAll(populatePerms(ph.getUser(userName).getPermissionList(), includeChildren)); + ArrayList alreadyProcessed = new ArrayList(); + // fetch all group permissions for (String group : getGroups(userName)) { - Set groupPermArray = new HashSet(); - - if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) { - // GlobalGroups - groupPermArray = populatePerms(GroupManager.getGlobalGroups().getGroupsPermissions(group), includeChildren); + // Don't process a group more than once. + if (!alreadyProcessed.contains(group)) { + alreadyProcessed.add(group); - } else { - // World Groups - groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren); - } - - // Add all group permissions, unless negated by earlier permissions. - for (String perm : groupPermArray) { - boolean negated = (perm.startsWith("-")); - // Perm doesn't already exists and there is no negation for it - // or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms) - if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) - || (negated && !playerPermArray.contains(perm.substring(1)))) - playerPermArray.add(perm); + Set groupPermArray = new HashSet(); + + if (group.startsWith("g:") && GroupManager.getGlobalGroups().hasGroup(group)) { + // GlobalGroups + groupPermArray = populatePerms(GroupManager.getGlobalGroups().getGroupsPermissions(group), includeChildren); + + } else { + // World Groups + groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren); + } + + // Add all group permissions, unless negated by earlier permissions. + for (String perm : groupPermArray) { + boolean negated = (perm.startsWith("-")); + // Perm doesn't already exists and there is no negation for it + // or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms) + if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) + || (negated && !playerPermArray.contains(perm.substring(1)))) + playerPermArray.add(perm); + } } } -- cgit v1.2.3 From e93e50f6d273b940783e7c313610f4cfa7ed15e2 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 5 Feb 2012 16:30:58 +0000 Subject: Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds. Fixed world mirroring so it returns the correct data for the requested world --- EssentialsGroupManager/src/Changelog.txt | 4 +- .../org/anjocaido/groupmanager/GroupManager.java | 5 +- .../org/anjocaido/groupmanager/data/DataUnit.java | 9 ++ .../groupmanager/dataholder/GroupsDataHolder.java | 22 ++-- .../groupmanager/dataholder/UsersDataHolder.java | 23 ++-- .../groupmanager/dataholder/WorldDataHolder.java | 102 +++++++++------- .../dataholder/worlds/WorldsHolder.java | 128 +++++++++++++++++---- 7 files changed, 216 insertions(+), 77 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 0ef3add6f..1e520efb3 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -135,4 +135,6 @@ v 1.9: - Track the 'onPlayerChangeWorld' event as some teleports seem to not be triggering a world move. - Catch all errors in badly formatted groups. - Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. - - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. \ No newline at end of file + - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. + - Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds. + - Fixed world mirroring so it returns the correct data for the requested world \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index bb61b2145..ab1ebebbb 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1485,7 +1485,7 @@ public class GroupManager extends JavaPlugin { try { worldsHolder.saveChanges(forced); - sender.sendMessage(ChatColor.YELLOW + " The changes were saved."); + sender.sendMessage(ChatColor.YELLOW + " All changes were saved."); } catch (IllegalStateException ex) { sender.sendMessage(ChatColor.RED + ex.getMessage()); } @@ -1522,6 +1522,7 @@ public class GroupManager extends JavaPlugin { } // WORKING config.load(); + globalGroups.load(); worldsHolder.mirrorSetUp(); isLoaded = false; @@ -1538,7 +1539,7 @@ public class GroupManager extends JavaPlugin { sender.sendMessage("The request to world '" + auxString + "' was sent."); } else { worldsHolder.reloadAll(); - sender.sendMessage(ChatColor.YELLOW + " The current world was reloaded."); + sender.sendMessage(ChatColor.YELLOW + " All worlds were reloaded."); } isLoaded = true; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java index a35b5aeee..03d31b848 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java @@ -65,6 +65,15 @@ public abstract class DataUnit { hash = 71 * hash + (this.name != null ? this.name.toLowerCase().hashCode() : 0); return hash; } + + /** + * Set the data source to point to a new worldDataHolder + * + * @param source + */ + public void setDataSource(WorldDataHolder source) { + this.dataSource = source; + } /** * @return the dataSource diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java index 4fc819245..444939251 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -17,7 +17,8 @@ public class GroupsDataHolder { /** * Root World name this set of groups is associated with. */ - private String name; + //private String name; + private WorldDataHolder dataSource; private Group defaultGroup = null; private File groupsFile; private boolean haveGroupsChanged = false; @@ -33,17 +34,24 @@ public class GroupsDataHolder { */ protected GroupsDataHolder() { } - - protected void setWorldName(String worldName) { - name = worldName; + + public void setDataSource(WorldDataHolder dataSource) { + this.dataSource = dataSource; + //push this data source to the users, so they pull the correct groups data. + for (Group group : groups.values()) + group.setDataSource(this.dataSource); } + //protected void setWorldName(String worldName) { + // name = worldName; + //} + /** * @return the name */ - public String getWorldName() { - return name; - } + //public String getWorldName() { + // return name; + //} /** * @return the defaultGroup diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java index 37e1c4b43..1d7bbb704 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java @@ -17,7 +17,8 @@ public class UsersDataHolder { /** * Root World name this set of groups is associated with. */ - private String name; + //private String name; + private WorldDataHolder dataSource; private File usersFile; private boolean haveUsersChanged = false; private long timeStampUsers = 0; @@ -32,20 +33,28 @@ public class UsersDataHolder { */ protected UsersDataHolder() { } + + public void setDataSource(WorldDataHolder dataSource) { + this.dataSource = dataSource; + //push this data source to the users, so they pull the correct groups data. + for (User user : users.values()) + user.setDataSource(this.dataSource); + + } /** * @param worldName */ - public void setWorldName(String worldName) { - this.name = worldName; - } + //public void setWorldName(String worldName) { + // this.name = worldName; + //} /** * @return the name */ - public String getWorldName() { - return this.name; - } + //public String getWorldName() { + // return this.name; + //} /** * @return the users diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 581f17770..69305f360 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -80,6 +80,16 @@ public class WorldDataHolder { //this.defaultGroup = defaultGroup; } + + /** + * update the dataSource to point to this object. + * + * This should be called whenever a set of world data is fetched. + */ + public void updateDataSource() { + this.groups.setDataSource(this); + this.users.setDataSource(this); + } /** * Search for a user. If it doesn't exist, create a new one with @@ -465,54 +475,66 @@ public class WorldDataHolder { } //PERMISSIONS NODE - if (thisGroupNode.get("permissions") == null) { - thisGroupNode.put("permissions", new ArrayList()); - } else { - if (thisGroupNode.get("permissions") instanceof List) { - for (Object o : ((List) thisGroupNode.get("permissions"))) { - try { - thisGrp.addPermission(o.toString()); - } catch (NullPointerException e) { - // Ignore this entry as it's null. - //throw new IllegalArgumentException("Invalid permission node in group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); - } - } - } else if (thisGroupNode.get("permissions") instanceof String) { - thisGrp.addPermission((String) thisGroupNode.get("permissions")); + try { + if (thisGroupNode.get("permissions") == null) { + thisGroupNode.put("permissions", new ArrayList()); } else { - throw new IllegalArgumentException("Unknown type of permissions node(Should be String or List) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + if (thisGroupNode.get("permissions") instanceof List) { + for (Object o : ((List) thisGroupNode.get("permissions"))) { + try { + thisGrp.addPermission(o.toString()); + } catch (NullPointerException e) { + // Ignore this entry as it's null. + //throw new IllegalArgumentException("Invalid permission node in group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } + } + } else if (thisGroupNode.get("permissions") instanceof String) { + thisGrp.addPermission((String) thisGroupNode.get("permissions")); + } else { + throw new IllegalArgumentException("Unknown type of permissions node(Should be String or List) for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } + thisGrp.sortPermissions(); } - thisGrp.sortPermissions(); + } catch (Exception e) { + throw new IllegalArgumentException("Invalid formatting found in permissions section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); } //INFO NODE - if (thisGroupNode.get("info") instanceof Map) { - Map infoNode = (Map) thisGroupNode.get("info"); - if (infoNode != null) { - thisGrp.setVariables(infoNode); - } - } else - throw new IllegalArgumentException("Unknown entry found in Info section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + try { + if (thisGroupNode.get("info") instanceof Map) { + Map infoNode = (Map) thisGroupNode.get("info"); + if (infoNode != null) { + thisGrp.setVariables(infoNode); + } + } else + throw new IllegalArgumentException("Unknown entry found in Info section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } catch (Exception e1) { + throw new IllegalArgumentException("Invalid formatting found in info section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } //END INFO NODE - if (thisGroupNode.get("inheritance") == null || thisGroupNode.get("inheritance") instanceof List) { - Object inheritNode = thisGroupNode.get("inheritance"); - if (inheritNode == null) { - thisGroupNode.put("inheritance", new ArrayList()); - } else if (inheritNode instanceof List) { - List groupsInh = (List) inheritNode; - for (String grp : groupsInh) { - if (inheritance.get(groupKey) == null) { - List thisInherits = new ArrayList(); - inheritance.put(groupKey, thisInherits); - } - inheritance.get(groupKey).add(grp); - - } - } - }else - throw new IllegalArgumentException("Unknown entry found in inheritance section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + try { + if (thisGroupNode.get("inheritance") == null || thisGroupNode.get("inheritance") instanceof List) { + Object inheritNode = thisGroupNode.get("inheritance"); + if (inheritNode == null) { + thisGroupNode.put("inheritance", new ArrayList()); + } else if (inheritNode instanceof List) { + List groupsInh = (List) inheritNode; + for (String grp : groupsInh) { + if (inheritance.get(groupKey) == null) { + List thisInherits = new ArrayList(); + inheritance.put(groupKey, thisInherits); + } + inheritance.get(groupKey).add(grp); + + } + } + }else + throw new IllegalArgumentException("Unknown entry found in inheritance section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } catch (Exception e2) { + throw new IllegalArgumentException("Invalid formatting found in inheritance section for group: " + thisGrp.getName() + " in file: " + groupsFile.getPath()); + } } } catch (Exception ex) { ex.printStackTrace(); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index 6d819daa5..e72118468 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -10,6 +10,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; @@ -45,7 +46,7 @@ public class WorldsHolder { private Map mirrorsGroup = new HashMap(); private Map mirrorsUser = new HashMap(); - private OverloadedWorldHolder defaultWorld; + //private OverloadedWorldHolder defaultWorld; private String serverDefaultWorldName; private GroupManager plugin; private File worldsFolder; @@ -59,7 +60,7 @@ public class WorldsHolder { // Setup folders and check files exist for the primary world verifyFirstRun(); initialLoad(); - if (defaultWorld == null) { + if (serverDefaultWorldName == null) { throw new IllegalStateException("There is no default group! OMG!"); } } @@ -76,7 +77,7 @@ public class WorldsHolder { private void initialWorldLoading() { //Load the default world loadWorld(serverDefaultWorldName); - defaultWorld = worldsData.get(serverDefaultWorldName); + //defaultWorld = getUpdatedWorldData(serverDefaultWorldName); } private void loadAllSearchedWorlds() { @@ -117,6 +118,8 @@ public class WorldsHolder { mirrorsGroup.clear(); mirrorsUser.clear(); Map mirrorsMap = plugin.getGMConfig().getMirrorsMap(); + + HashSet mirroredWorlds = new HashSet(); if (mirrorsMap != null) { for (String source : mirrorsMap.keySet()) { @@ -140,6 +143,10 @@ public class WorldsHolder { } mirrorsGroup.put(world, getWorldData(source).getName()); mirrorsUser.put(world, getWorldData(source).getName()); + + // Track this world so we can create a datasource for it later + mirroredWorlds.add(o.toString()); + } else GroupManager.logger.log(Level.WARNING, "Mirroring error with " + o.toString() + ". Recursive loop detected!"); } @@ -171,11 +178,13 @@ public class WorldsHolder { if (type.equals("users")) mirrorsUser.put(key.toLowerCase(), getWorldData(source).getName()); } + + // Track this world so we can create a datasource for it later + mirroredWorlds.add(key); + } else GroupManager.logger.log(Level.WARNING, "Mirroring error with " + key + ". Recursive loop detected!"); - - } else { throw new IllegalStateException("Unknown mirroring format for " + key); } @@ -183,6 +192,14 @@ public class WorldsHolder { } } } + + // Create a datasource for any worlds not already loaded + for (String world : mirroredWorlds){ + if (!worldsData.containsKey(world.toLowerCase())) { + setupWorldFolder(world); + loadWorld(world, true); + } + } } } @@ -329,21 +346,55 @@ public class WorldsHolder { public OverloadedWorldHolder getWorldData(String worldName) { String worldNameLowered = worldName.toLowerCase(); - // Return this worlds data - if (worldsData.containsKey(worldNameLowered)) - return worldsData.get(worldNameLowered); + // Find this worlds data + if (worldsData.containsKey(worldNameLowered)) { + + String usersMirror = mirrorsUser.get(worldNameLowered); + String groupsMirror = mirrorsGroup.get(worldNameLowered); + + if (usersMirror != null) { + + // If both are mirrored + if (groupsMirror != null) { + + // if the data sources are the same, return the parent + if (usersMirror == groupsMirror) + return getUpdatedWorldData(usersMirror.toLowerCase()); + + // Both data sources are mirrors, but they are from different parents + // so we return the actual data object. + return getUpdatedWorldData(worldNameLowered); + } + + // Groups isn't a mirror so return this this worlds data source + return getUpdatedWorldData(worldNameLowered); + } + + // users isn't mirrored so we need to return this worlds data source + return getUpdatedWorldData(worldNameLowered); + } - // If groups mirrored return the parent worlds data - if (mirrorsGroup.containsKey(worldNameLowered)) - return worldsData.get(mirrorsGroup.get(worldNameLowered).toLowerCase()); - - // If users mirrored return the parent worlds data - if (mirrorsUser.containsKey(worldNameLowered)) - return worldsData.get(mirrorsUser.get(worldNameLowered).toLowerCase()); - + // Oddly no data source was found for this world so return the default. GroupManager.logger.finest("Requested world " + worldName + " not found or badly mirrored. Returning default world..."); return getDefaultWorld(); } + + /** + * Get the requested world data and update it's dataSource to be relevant for this world + * + * @param worldName + * @return updated world holder + */ + private OverloadedWorldHolder getUpdatedWorldData(String worldName) { + + if (worldsData.containsKey(worldName.toLowerCase())) { + OverloadedWorldHolder data = worldsData.get(worldName.toLowerCase()); + data.updateDataSource(); + return data; + } + return null; + + } /** * Do a matching of playerName, if its found only one player, do @@ -487,18 +538,29 @@ public class WorldsHolder { } /** + * Wrapper for LoadWorld(String,Boolean) for backwards compatibility + * * Load a world from file. * If it already been loaded, summon reload method from dataHolder. * @param worldName */ public void loadWorld(String worldName) { + loadWorld(worldName, false); + } + + /** + * Load a world from file. + * If it already been loaded, summon reload method from dataHolder. + * @param worldName + */ + public void loadWorld(String worldName, Boolean isMirror) { if (worldsData.containsKey(worldName.toLowerCase())) { worldsData.get(worldName.toLowerCase()).reload(); return; } GroupManager.logger.finest("Trying to load world " + worldName + "..."); File thisWorldFolder = new File(worldsFolder, worldName); - if (thisWorldFolder.exists() && thisWorldFolder.isDirectory()) { + if ((isMirror) || (thisWorldFolder.exists() && thisWorldFolder.isDirectory())) { // Setup file handles, if not mirrored File groupsFile = (mirrorsGroup.containsKey(worldName.toLowerCase()))? null : new File(thisWorldFolder, "groups.yml"); @@ -575,17 +637,43 @@ public class WorldsHolder { * @return the defaultWorld */ public OverloadedWorldHolder getDefaultWorld() { - return defaultWorld; + return getUpdatedWorldData(serverDefaultWorldName); } /** - * Returns all physically loaded worlds. + * Returns all physically loaded worlds which have at least + * one of their own data sets for users or groups. + * * @return ArrayList of all loaded worlds */ public ArrayList allWorldsDataList() { ArrayList list = new ArrayList(); for (OverloadedWorldHolder data : worldsData.values()) { - if (!list.contains(data)) { + if ((!list.contains(data)) && (!mirrorsGroup.containsKey(data.getName().toLowerCase()) || !mirrorsUser.containsKey(data.getName().toLowerCase()))) { + + String worldNameLowered = data.getName().toLowerCase(); + String usersMirror = mirrorsUser.get(worldNameLowered); + String groupsMirror = mirrorsGroup.get(worldNameLowered); + + // is users mirrored? + if (usersMirror != null) { + + // If both are mirrored + if (groupsMirror != null) { + + // if the data sources are the same, return the parent + if (usersMirror == groupsMirror) { + if (!list.contains(usersMirror.toLowerCase())) + list.add(worldsData.get(usersMirror.toLowerCase())); + continue; + } + // Both data sources are mirrors, but they are from different parents + // so fall through to add the actual data object. + } + // Groups isn't a mirror so fall through to add this this worlds data source + } + + // users isn't mirrored so we need to add this worlds data source list.add(data); } } -- cgit v1.2.3 From 97bd49e598ddb4725a19788098158c7bf9f1a55f Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sun, 5 Feb 2012 16:41:34 +0000 Subject: Add some commenting --- .../org/anjocaido/groupmanager/data/DataUnit.java | 4 +++- .../groupmanager/dataholder/GroupsDataHolder.java | 17 ++--------------- .../groupmanager/dataholder/UsersDataHolder.java | 20 ++------------------ .../groupmanager/dataholder/WorldDataHolder.java | 7 +++++-- 4 files changed, 12 insertions(+), 36 deletions(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java index 03d31b848..e3250a1c1 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java @@ -67,7 +67,7 @@ public abstract class DataUnit { } /** - * Set the data source to point to a new worldDataHolder + * Set the data source to point to a different worldDataHolder * * @param source */ @@ -76,6 +76,8 @@ public abstract class DataUnit { } /** + * Get the current worldDataHolder this object is pointing to + * * @return the dataSource */ public WorldDataHolder getDataSource() { diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java index 444939251..5d681013e 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/GroupsDataHolder.java @@ -9,15 +9,13 @@ import org.anjocaido.groupmanager.data.Group; /** + * This container holds all Groups loaded from the relevant groupsFile. + * * @author ElgarL * */ public class GroupsDataHolder { - /** - * Root World name this set of groups is associated with. - */ - //private String name; private WorldDataHolder dataSource; private Group defaultGroup = null; private File groupsFile; @@ -42,17 +40,6 @@ public class GroupsDataHolder { group.setDataSource(this.dataSource); } - //protected void setWorldName(String worldName) { - // name = worldName; - //} - - /** - * @return the name - */ - //public String getWorldName() { - // return name; - //} - /** * @return the defaultGroup */ diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java index 1d7bbb704..fa2ccaf84 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java @@ -9,15 +9,13 @@ import org.anjocaido.groupmanager.data.User; /** + * This container holds all Users loaded from the relevant usersFile. + * * @author ElgarL * */ public class UsersDataHolder { - /** - * Root World name this set of groups is associated with. - */ - //private String name; private WorldDataHolder dataSource; private File usersFile; private boolean haveUsersChanged = false; @@ -42,20 +40,6 @@ public class UsersDataHolder { } - /** - * @param worldName - */ - //public void setWorldName(String worldName) { - // this.name = worldName; - //} - - /** - * @return the name - */ - //public String getWorldName() { - // return this.name; - //} - /** * @return the users */ diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 69305f360..8115b1a75 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -36,8 +36,11 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.reader.UnicodeReader; /** - * - * @author gabrielcouto + * One instance of this should exist per world/mirror + * it contains all functions to manage these data sets + * and points to the relevant users and groups objects. + * + * @author gabrielcouto, ElgarL */ public class WorldDataHolder { -- cgit v1.2.3 From 691a0ef4ce21b66cd948dc234d8659b8f8a422db Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 9 Feb 2012 02:11:36 +0000 Subject: Fixing silly typo - Fixes shout costs. --- EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java b/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java index 38239abfe..d353d5d6c 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java @@ -36,7 +36,7 @@ public class ChatStore public String getLongType() { - return type.length() > 0 ? "chat" : "chat-" + type; + return type.length() == 0 ? "chat" : "chat-" + type; } public long getRadius() -- cgit v1.2.3 From 83f9209bcc3edb20d86975ae33e608005ece555b Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 9 Feb 2012 22:02:24 +0000 Subject: Optional argument to /ping [message]- Message to be echo'd. Possible use in scripts, checking for lag, /sudo, etc. --- .../src/com/earth2me/essentials/commands/Commandping.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandping.java b/Essentials/src/com/earth2me/essentials/commands/Commandping.java index 1fad701b2..9c90866d6 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandping.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandping.java @@ -1,8 +1,9 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; -import com.earth2me.essentials.User; +import com.earth2me.essentials.Util; import org.bukkit.Server; +import org.bukkit.command.CommandSender; public class Commandping extends EssentialsCommand @@ -13,8 +14,16 @@ public class Commandping extends EssentialsCommand } @Override - public void run(Server server, User player, String commandLabel, String[] args) throws Exception + public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception { - player.sendMessage(_("pong")); + if (args.length < 1) + { + + sender.sendMessage(_("pong")); + } + else + { + sender.sendMessage(getFinalArg(args, 0)); + } } } -- cgit v1.2.3 From b3fc7900009746ad2b5a007b045c0a9d3d015008 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 9 Feb 2012 22:11:46 +0000 Subject: New Permission: essentials.sudo.exempt If a user has this perm, they cannot be controlled. --- Essentials/src/com/earth2me/essentials/commands/Commandsudo.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java index 7f758ad2e..86394e502 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandsudo.java @@ -30,7 +30,13 @@ public class Commandsudo extends EssentialsCommand } //TODO: Translate this. - sender.sendMessage("Running the command as " + user.getDisplayName()); + if (user.isAuthorized("essentials.sudo.exempt")) + { + throw new Exception("You cannot sudo this user"); + } + + //TODO: Translate this. + sender.sendMessage("Forcing " + user.getDisplayName() + " to run: /" + command + " " + arguments); final PluginCommand execCommand = ess.getServer().getPluginCommand(command); if (execCommand != null) -- cgit v1.2.3 From f0ee026fb97ac69822cd3f2f74b5e088ba7b3b66 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 9 Feb 2012 22:13:00 +0000 Subject: Allow colour codes in /ping --- Essentials/src/com/earth2me/essentials/commands/Commandping.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandping.java b/Essentials/src/com/earth2me/essentials/commands/Commandping.java index 9c90866d6..0956f4082 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandping.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandping.java @@ -23,7 +23,7 @@ public class Commandping extends EssentialsCommand } else { - sender.sendMessage(getFinalArg(args, 0)); + sender.sendMessage(Util.replaceColor(getFinalArg(args, 0))); } } } -- cgit v1.2.3 From 9efd0eb6f9f61b7063c469ec69148949c268a007 Mon Sep 17 00:00:00 2001 From: Wolvereness Date: Thu, 9 Feb 2012 23:14:57 -0600 Subject: Fix exploit with /tpaccept if sender no longer has permission --- Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java index 2e3e024a3..456a77c37 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java @@ -22,7 +22,7 @@ public class Commandtpaccept extends EssentialsCommand final User target = user.getTeleportRequest(); if (target == null || target.getBase() instanceof OfflinePlayer - || (user.isTeleportRequestHere() && !target.isAuthorized("essentials.tpahere"))) + || (user.isTeleportRequestHere() ? !target.isAuthorized("essentials.tpahere") : !target.isAuthorized("essentials.tpa"))) { throw new Exception(_("noPendingRequest")); } -- cgit v1.2.3 From c0517c120369ac6a1de954c9d049bd0a88ff8ea6 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 11 Feb 2012 10:36:55 +0000 Subject: Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../src/org/anjocaido/groupmanager/GroupManager.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 1e520efb3..b79d56d07 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -137,4 +137,5 @@ v 1.9: - Fix a bug with getWorldData return the main world data for all mirrors, instead of the worlds parent data. - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. - Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds. - - Fixed world mirroring so it returns the correct data for the requested world \ No newline at end of file + - Fixed world mirroring so it returns the correct data for the requested world. + - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index ab1ebebbb..b87d1de8c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -158,7 +158,7 @@ public class GroupManager extends JavaPlugin { System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"); // Register as a service - this.getServer().getServicesManager().register(AnjoPermissionsHandler.class, this.permissionHandler, this, ServicePriority.Lowest); + this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest); } public static boolean isLoaded() { -- cgit v1.2.3 From c890ea8f87b2d798cfe4b1bbefdc8b62fd227592 Mon Sep 17 00:00:00 2001 From: Jeff Wardian Date: Fri, 10 Feb 2012 15:54:19 -0800 Subject: Added PrivilegesHandler.java; Implemented privileges in PermissionsHandler.java; Fixed PrivilegesHandler.canBuild(); --- Essentials/nbproject/project.properties | 4 +- .../essentials/perm/PermissionsHandler.java | 11 ++++ .../essentials/perm/PrivilegesHandler.java | 61 +++++++++++++++++++++ lib/Privileges.jar | Bin 0 -> 101774 bytes 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 Essentials/src/com/earth2me/essentials/perm/PrivilegesHandler.java create mode 100644 lib/Privileges.jar diff --git a/Essentials/nbproject/project.properties b/Essentials/nbproject/project.properties index 4e80ceafa..71fea5cf9 100644 --- a/Essentials/nbproject/project.properties +++ b/Essentials/nbproject/project.properties @@ -76,6 +76,7 @@ file.reference.MultiCurrency.jar=../lib/MultiCurrency.jar file.reference.Permissions3.jar=../lib/Permissions3.jar file.reference.PermissionsBukkit-1.2.jar=../lib/PermissionsBukkit-1.2.jar file.reference.PermissionsEx.jar=../lib/PermissionsEx.jar +file.reference.Privileges.jar=..\\lib\\Privileges.jar file.reference.Vault.jar=../lib/Vault.jar includes=** jar.archive.disabled=${jnlp.enabled} @@ -95,7 +96,8 @@ javac.classpath=\ ${reference.EssentialsGroupManager.jar}:\ ${file.reference.bukkit.jar}:\ ${file.reference.craftbukkit.jar}:\ - ${file.reference.Vault.jar} + ${file.reference.Vault.jar}:\ + ${file.reference.Privileges.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 8c16aab7a..aa786934e 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -144,6 +144,17 @@ public class PermissionsHandler implements IPermissionsHandler return; } + final Plugin privPlugin = pluginManager.getPlugin("Privileges"); + if (privPlugin != null && privPlugin.isEnabled()) + { + if (!(handler instanceof PrivilegesHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using Privileges based permissions."); + handler = new PrivilegesHandler(privPlugin); + } + return; + } + final Plugin permPlugin = pluginManager.getPlugin("Permissions"); if (permPlugin != null && permPlugin.isEnabled()) { diff --git a/Essentials/src/com/earth2me/essentials/perm/PrivilegesHandler.java b/Essentials/src/com/earth2me/essentials/perm/PrivilegesHandler.java new file mode 100644 index 000000000..c81f93cbc --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/PrivilegesHandler.java @@ -0,0 +1,61 @@ +package com.earth2me.essentials.perm; + +import java.util.ArrayList; +import java.util.List; +import net.krinsoft.privileges.Privileges; +import net.krinsoft.privileges.groups.Group; +import net.krinsoft.privileges.groups.GroupManager; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + +public class PrivilegesHandler extends SuperpermsHandler +{ + private final transient Privileges plugin; + private final GroupManager manager; + + public PrivilegesHandler(final Plugin plugin) + { + this.plugin = (Privileges) plugin; + this.manager = this.plugin.getGroupManager(); + } + + @Override + public String getGroup(final Player base) + { + Group group = manager.getGroup(base); + if (group == null) + { + return null; + } + return group.getName(); + } + + @Override + public List getGroups(final Player base) + { + Group group = manager.getGroup(base); + if (group == null) + { + return new ArrayList(); + } + return group.getGroupTree(); + } + + @Override + public boolean inGroup(final Player base, final String group) + { + Group pGroup = manager.getGroup(base); + if (pGroup == null) + { + return false; + } + return pGroup.isMemberOf(group); + } + + @Override + public boolean canBuild(Player base, String group) + { + return base.hasPermission("essentials.build") || base.hasPermission("privileges.build"); + } + +} diff --git a/lib/Privileges.jar b/lib/Privileges.jar new file mode 100644 index 000000000..e9dd1d04d Binary files /dev/null and b/lib/Privileges.jar differ -- cgit v1.2.3 From b0d06ce6ed62657e3f6b541aa63079f8fadc1126 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 11 Feb 2012 20:10:19 +0000 Subject: Refactoring tpaccept perm check to include tpaall. --- Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java index 456a77c37..891742043 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java @@ -22,7 +22,9 @@ public class Commandtpaccept extends EssentialsCommand final User target = user.getTeleportRequest(); if (target == null || target.getBase() instanceof OfflinePlayer - || (user.isTeleportRequestHere() ? !target.isAuthorized("essentials.tpahere") : !target.isAuthorized("essentials.tpa"))) + || (user.isTeleportRequestHere() && !target.isAuthorized("essentials.tpahere")) + || (!user.isTeleportRequestHere() && !target.isAuthorized("essentials.tpa") && !target.isAuthorized("essentials.tpaall")) + ) { throw new Exception(_("noPendingRequest")); } -- cgit v1.2.3 From 2d56de1483a8dbd75cba146fae4a0dbe4270b1e3 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 11 Feb 2012 21:15:26 +0000 Subject: Update trade signs properly, and visibly handle full signs. --- .../src/com/earth2me/essentials/signs/SignTrade.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 943a14a83..6b47ebc76 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -36,7 +36,7 @@ public class SignTrade extends EssentialsSign try { stored = getTrade(sign, 1, true, true, ess); - substractAmount(sign, 1, stored, ess); + subtractAmount(sign, 1, stored, ess); stored.pay(player); } catch (SignException e) @@ -53,12 +53,14 @@ 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); + addAmount(sign, 1, charge, ess); + subtractAmount(sign, 2, trade, ess); if (!trade.pay(player, false)) { + subtractAmount(sign, 1, charge, ess); + addAmount(sign, 2, trade, ess); throw new ChargeException("Full inventory"); } - substractAmount(sign, 2, trade, ess); - addAmount(sign, 1, charge, ess); charge.charge(player); Trade.log("Sign", "Trade", "Interact", sign.getLine(3), charge, username, trade, sign.getBlock().getLocation(), ess); } @@ -256,7 +258,7 @@ public class SignTrade extends EssentialsSign throw new SignException(_("invalidSignLine", index + 1)); } - protected final void substractAmount(final ISign sign, final int index, final Trade trade, final IEssentials ess) throws SignException + protected final void subtractAmount(final ISign sign, final int index, final Trade trade, final IEssentials ess) throws SignException { final Double money = trade.getMoney(); if (money != null) @@ -294,6 +296,7 @@ public class SignTrade extends EssentialsSign } } + //TODO: Translate these exceptions. private void changeAmount(final ISign sign, final int index, final double value, final IEssentials ess) throws SignException { @@ -313,7 +316,7 @@ public class SignTrade extends EssentialsSign final String newline = Util.formatCurrency(money, ess) + ":" + Util.formatCurrency(amount + value, ess).substring(1); if (newline.length() > 15) { - throw new SignException("Line too long!"); + throw new SignException("This sign is full: Line too long!"); } sign.setLine(index, newline); return; @@ -329,7 +332,7 @@ public class SignTrade extends EssentialsSign final String newline = stackamount + " " + split[1] + ":" + (amount + Math.round(value)); if (newline.length() > 15) { - throw new SignException("Line too long!"); + throw new SignException("This sign is full: Line too long!"); } sign.setLine(index, newline); return; @@ -343,7 +346,7 @@ public class SignTrade extends EssentialsSign final String newline = stackamount + " " + split[1] + ":" + (amount + Math.round(value)); if (newline.length() > 15) { - throw new SignException("Line too long!"); + throw new SignException("This sign is full: Line too long!"); } sign.setLine(index, newline); return; -- cgit v1.2.3 From 62cd219b4ecd48464037dd898ed14ab7de4972b2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 11 Feb 2012 13:45:15 +1100 Subject: Clean up the CommandException stack traces so they appear as if Essentials was never there. --- .../src/com/earth2me/essentials/Essentials.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 21f2e38ea..3ee7c1777 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -32,15 +32,20 @@ import com.earth2me.essentials.signs.SignPlayerListener; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.command.Command; +import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.entity.Player; @@ -277,7 +282,29 @@ public class Essentials extends JavaPlugin implements IEssentials if (pc != null) { alternativeCommandsHandler.executed(commandLabel, pc.getLabel()); - return pc.execute(sender, commandLabel, args); + try + { + return pc.execute(sender, commandLabel, args); + } + catch (final Exception ex) + { + final ArrayList elements = new ArrayList(Arrays.asList(ex.getStackTrace())); + elements.remove(0); + final ArrayList toRemove = new ArrayList(); + for (final StackTraceElement e : elements) + { + if (e.getClassName().equals("com.earth2me.essentials.Essentials")) + { + toRemove.add(e); + } + } + elements.removeAll(toRemove); + final StackTraceElement[] trace = elements.toArray(new StackTraceElement[elements.size()]); + ex.setStackTrace(trace); + ex.printStackTrace(); + sender.sendMessage(ChatColor.RED + "An internal error occurred while attempting to perform this command"); + return true; + } } } -- cgit v1.2.3 From 2699e02f96e7ab989bf518685eac3408ecfcde8c Mon Sep 17 00:00:00 2001 From: KHobbits Date: Mon, 13 Feb 2012 17:09:07 +0000 Subject: Add per warp command costs Make warp other commands charge the commander, not the warped. --- .../earth2me/essentials/commands/Commandwarp.java | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java index 51b64563b..62641172b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java @@ -8,6 +8,7 @@ import com.earth2me.essentials.Warps; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; @@ -44,10 +45,10 @@ public class Commandwarp extends EssentialsCommand { throw new Exception(_("playerNotFound")); } - warpUser(otherUser, args[0]); + warpUser(user, otherUser, args[0]); throw new NoChargeException(); } - warpUser(user, args[0]); + warpUser(user, user, args[0]); throw new NoChargeException(); } } @@ -65,7 +66,7 @@ public class Commandwarp extends EssentialsCommand { throw new Exception(_("playerNotFound")); } - warpUser(otherUser, args[0]); + otherUser.getTeleport().warp(args[0], null, TeleportCause.COMMAND); throw new NoChargeException(); } @@ -112,17 +113,12 @@ public class Commandwarp extends EssentialsCommand } } - private void warpUser(final User user, final String name) throws Exception + private void warpUser(final User owner, final User user, final String name) throws Exception { - final Trade charge = new Trade(this.getName(), ess); - charge.isAffordableFor(user); - if (ess.getSettings().getPerWarpPermission()) + final Trade charge = new Trade("warp-" + name.toLowerCase(Locale.ENGLISH).replace('_', '-'), ess); + charge.isAffordableFor(owner); + if (ess.getSettings().getPerWarpPermission() && !owner.isAuthorized("essentials.warp." + name)) { - if (user.isAuthorized("essentials.warp." + name)) - { - user.getTeleport().warp(name, charge, TeleportCause.COMMAND); - return; - } throw new Exception(_("warpUsePermission")); } user.getTeleport().warp(name, charge, TeleportCause.COMMAND); -- cgit v1.2.3 From 57a2ef08d4b1f80f8794c1fafe0e7f22c88177a6 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Mon, 13 Feb 2012 17:16:27 +0000 Subject: Allow charges for different mob types in /spawner --- Essentials/src/com/earth2me/essentials/commands/Commandspawner.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java index 73c86eba4..d52315241 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawner.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.commands; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import java.util.Locale; @@ -47,11 +48,14 @@ public class Commandspawner extends EssentialsCommand { throw new Exception(_("unableToSpawnMob")); } - if (!user.isAuthorized("essentials.spawner." + mob.name.toLowerCase())) + if (!user.isAuthorized("essentials.spawner." + mob.name.toLowerCase(Locale.ENGLISH))) { throw new Exception(_("unableToSpawnMob")); } + final Trade charge = new Trade("spawner-" + mob.name.toLowerCase(Locale.ENGLISH), ess); + charge.isAffordableFor(user); ((CreatureSpawner)target.getBlock().getState()).setCreatureType(mob.getType()); + charge.charge(user); user.sendMessage(_("setSpawner", mob.name)); } catch (Throwable ex) -- cgit v1.2.3 From bc2578b7887f38e8106a1d4c2ce000618c19bb23 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Mon, 13 Feb 2012 19:40:33 +0000 Subject: Caching regex return in user cleanup. (Pushing this for testing purposes). --- Essentials/src/com/earth2me/essentials/Util.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index 65077a7fc..c6df66165 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -22,11 +22,17 @@ public class Util } private final static Logger logger = Logger.getLogger("Minecraft"); private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]"); - private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]");; + private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]"); + private static Map sanitizedName = new HashMap(); public static String sanitizeFileName(final String name) { - return INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_"); + if (sanitizedName.containsKey(name)) { + return sanitizedName.get(name); + } + final String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_"); + sanitizedName.put(name, newName); + return newName; } public static String sanitizeString(final String string) -- cgit v1.2.3 From a6ac333a7461ce271ee3eb4d85a18a4bbdb610cd Mon Sep 17 00:00:00 2001 From: snowleo Date: Mon, 13 Feb 2012 21:32:05 +0100 Subject: Less sanitizing for more performance --- Essentials/src/com/earth2me/essentials/UserMap.java | 20 +++++++++++++++----- Essentials/src/com/earth2me/essentials/Util.java | 5 ----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/UserMap.java b/Essentials/src/com/earth2me/essentials/UserMap.java index d15438c7d..f15e5edd9 100644 --- a/Essentials/src/com/earth2me/essentials/UserMap.java +++ b/Essentials/src/com/earth2me/essentials/UserMap.java @@ -61,7 +61,7 @@ public class UserMap extends CacheLoader implements IConf { try { - return users.get(Util.sanitizeFileName(name)); + return users.get(name); } catch (ExecutionException ex) { @@ -76,18 +76,22 @@ public class UserMap extends CacheLoader implements IConf @Override public User load(final String name) throws Exception { + String sanitizedName = Util.sanitizeFileName(name); + if (!sanitizedName.equals(name)) { + return getUser(sanitizedName); + } for (Player player : ess.getServer().getOnlinePlayers()) { if (player.getName().equalsIgnoreCase(name)) { - keys.add(Util.sanitizeFileName(name)); + keys.add(sanitizedName); return new User(player, ess); } } - final File userFile = getUserFile(name); + final File userFile = getUserFile2(sanitizedName); if (userFile.exists()) { - keys.add(Util.sanitizeFileName(name)); + keys.add(sanitizedName); return new User(new OfflinePlayer(name, ess), ess); } throw new Exception("User not found!"); @@ -103,6 +107,7 @@ public class UserMap extends CacheLoader implements IConf { keys.remove(Util.sanitizeFileName(name)); users.invalidate(Util.sanitizeFileName(name)); + users.invalidate(name); } public Set getAllUniqueUsers() @@ -116,8 +121,13 @@ public class UserMap extends CacheLoader implements IConf } public File getUserFile(final String name) + { + return getUserFile2(Util.sanitizeFileName(name)); + } + + private File getUserFile2(final String name) { final File userFolder = new File(ess.getDataFolder(), "userdata"); - return new File(userFolder, Util.sanitizeFileName(name) + ".yml"); + return new File(userFolder, name + ".yml"); } } diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index c6df66165..3e3a7efd0 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -23,15 +23,10 @@ public class Util private final static Logger logger = Logger.getLogger("Minecraft"); private final static Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9]"); private final static Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]"); - private static Map sanitizedName = new HashMap(); public static String sanitizeFileName(final String name) { - if (sanitizedName.containsKey(name)) { - return sanitizedName.get(name); - } final String newName = INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_"); - sanitizedName.put(name, newName); return newName; } -- cgit v1.2.3 From 4a5c431163098bd64cfe227eeaf2bb12906c6840 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 14 Feb 2012 13:01:39 +0000 Subject: Depreciate PlayerTeleportEvent as it's all handled in PlayerChangedWorldEvent. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../anjocaido/groupmanager/permissions/BukkitPermissions.java | 10 +--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index b79d56d07..fc64363d1 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -138,4 +138,5 @@ v 1.9: - Prevent getAllPlayersPermissions() processing a group more than once. Improves performance when using complex inheritance structures. - Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds. - Fixed world mirroring so it returns the correct data for the requested world. - - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. \ No newline at end of file + - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. + - Depreciate PlayerTeleportEvent as it's all handled in PlayerChangedWorldEvent. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 1409f774d..053adc9ed 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -40,7 +40,6 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.permissions.Permission; @@ -361,7 +360,7 @@ public class BukkitPermissions { } @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // will portal into another world + public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { // has changed worlds updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName()); } @@ -377,13 +376,6 @@ public class BukkitPermissions { updatePermissions(event.getPlayer(), event.getRespawnLocation().getWorld().getName()); } - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerTeleport(PlayerTeleportEvent event) { // can be teleported into another world - if ((event.getTo() != null) && (event.getPlayer() != null) && (!event.getFrom().getWorld().equals(event.getTo().getWorld()))) { // only if world actually changed - updatePermissions(event.getPlayer(), event.getTo().getWorld().getName()); - } - } - @EventHandler(priority = EventPriority.LOWEST) public void onPlayerQuit(PlayerQuitEvent event) { if (!GroupManager.isLoaded()) -- cgit v1.2.3 From 9fe119e720fa5dc640adc2a6c35992d8f3230eb6 Mon Sep 17 00:00:00 2001 From: Iaccidentally Date: Tue, 14 Feb 2012 14:16:34 -0500 Subject: fix typo in config.yml --- Essentials/src/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 63770a293..e43e63d45 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -335,7 +335,7 @@ non-ess-in-help: true # Hide plugins which dont give a permission # You can override a true value here for a single plugin by adding a permission to a user/group. -# The indervidual permission is: essentials.help., anyone with essentials.* or '*' will see all help this setting reguardless. +# The individual permission is: essentials.help., anyone with essentials.* or '*' will see all help this setting reguardless. # You can use negitive permissions to remove access to just a single plugins help if the following is enabled. hide-permissionless-help: true -- cgit v1.2.3 From 3b7d194902810cd38155766cb6fbfbd8b75a8932 Mon Sep 17 00:00:00 2001 From: Iaccidentally Date: Tue, 14 Feb 2012 14:21:07 -0500 Subject: fix typo in config.yml (another one) --- Essentials/src/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 63770a293..5c338a8df 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -519,7 +519,7 @@ protect: build: true # Should people with build: false in permissions be allowed to use items - # Set true to disable useing for those people + # Set true to disable using for those people use: true # Should we tell people they are not allowed to build -- cgit v1.2.3 From 3c98718387cf8c612e11f00df216c9ffb268568e Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 14 Feb 2012 20:29:45 +0100 Subject: Don't return null, throw an exception --- Essentials/src/com/earth2me/essentials/UserMap.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/UserMap.java b/Essentials/src/com/earth2me/essentials/UserMap.java index f15e5edd9..94b504241 100644 --- a/Essentials/src/com/earth2me/essentials/UserMap.java +++ b/Essentials/src/com/earth2me/essentials/UserMap.java @@ -77,8 +77,17 @@ public class UserMap extends CacheLoader implements IConf public User load(final String name) throws Exception { String sanitizedName = Util.sanitizeFileName(name); - if (!sanitizedName.equals(name)) { - return getUser(sanitizedName); + if (!sanitizedName.equals(name)) + { + User user = getUser(sanitizedName); + if (user == null) + { + throw new Exception("User not found!"); + } + else + { + return user; + } } for (Player player : ess.getServer().getOnlinePlayers()) { @@ -119,12 +128,12 @@ public class UserMap extends CacheLoader implements IConf { return keys.size(); } - + public File getUserFile(final String name) { return getUserFile2(Util.sanitizeFileName(name)); } - + private File getUserFile2(final String name) { final File userFolder = new File(ess.getDataFolder(), "userdata"); -- cgit v1.2.3 From f0c0ee1a8dd90de1524032e92c65df5e823a7b1f Mon Sep 17 00:00:00 2001 From: KHobbits Date: Tue, 14 Feb 2012 23:55:29 +0000 Subject: /spawnmob - Only list mobs you have permission to spawn. --- .../earth2me/essentials/commands/Commandspawnmob.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java index f867a1503..948c82871 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java @@ -7,6 +7,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.Util; import java.util.Locale; import java.util.Random; +import java.util.Set; import org.bukkit.DyeColor; import org.bukkit.Location; import org.bukkit.Server; @@ -26,7 +27,19 @@ public class Commandspawnmob extends EssentialsCommand { if (args.length < 1) { - throw new NotEnoughArgumentsException(_("mobsAvailable", Util.joinList(Mob.getMobList()))); + Set availableList = Mob.getMobList(); + for (String mob : availableList) + { + if (!user.isAuthorized("essentials.spawnmob." + mob.toLowerCase())) + { + availableList.remove(mob); + } + } + if (availableList.isEmpty()) + { + availableList.add(_("none")); + } + throw new NotEnoughArgumentsException(_("mobsAvailable", Util.joinList(availableList))); } @@ -79,7 +92,7 @@ public class Commandspawnmob extends EssentialsCommand User otherUser = null; if (args.length >= 3) { - otherUser = getPlayer(ess.getServer(), args, 2); + otherUser = getPlayer(ess.getServer(), args, 2); } final Location loc = (otherUser == null) ? block.getLocation() : otherUser.getLocation(); final Location sloc = Util.getSafeDestination(loc); -- cgit v1.2.3 From 59679e04232e59a65655d34b7ac47afd4d1651ac Mon Sep 17 00:00:00 2001 From: ElgarL Date: Wed, 15 Feb 2012 06:15:31 +0000 Subject: Depreciate PlayerTeleportEvent, PlayerRespawnEvent and PlayerPortalEvent as it's all handled in PlayerChangedWorldEvent. This also means we no longer update permissions before we change worlds. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../groupmanager/permissions/BukkitPermissions.java | 20 ++++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index fc64363d1..4cfc241c4 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -139,4 +139,5 @@ v 1.9: - Fix world mirroring so it correctly creates data files and data sources for partially mirrored worlds. - Fixed world mirroring so it returns the correct data for the requested world. - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. - - Depreciate PlayerTeleportEvent as it's all handled in PlayerChangedWorldEvent. \ No newline at end of file + - Depreciate PlayerTeleportEvent, PlayerRespawnEvent and PlayerPortalEvent as it's all handled in PlayerChangedWorldEvent. + This also means we no longer update permissions before we change worlds. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 053adc9ed..ba4a22f12 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -37,9 +37,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; -import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.permissions.Permission; @@ -345,6 +343,12 @@ public class BukkitPermissions { this.updatePermissions(player, null); } + /** + * Player events tracked to cause Superperms updates + * + * @author Steve + * + */ protected class PlayerEvents implements Listener { @EventHandler(priority = EventPriority.LOWEST) @@ -364,18 +368,6 @@ public class BukkitPermissions { updatePermissions(event.getPlayer(), event.getPlayer().getWorld().getName()); } - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerPortal(PlayerPortalEvent event) { // will portal into another world - if ((event.getTo() != null) && (!event.getFrom().getWorld().equals(event.getTo().getWorld()))) { // only if world actually changed - updatePermissions(event.getPlayer(), event.getTo().getWorld().getName()); - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void onPlayerRespawn(PlayerRespawnEvent event) { // can be respawned in another world - updatePermissions(event.getPlayer(), event.getRespawnLocation().getWorld().getName()); - } - @EventHandler(priority = EventPriority.LOWEST) public void onPlayerQuit(PlayerQuitEvent event) { if (!GroupManager.isLoaded()) -- cgit v1.2.3 From 3fc6bb4e4ff070713b1f48fb70e57c3d97c73490 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Wed, 15 Feb 2012 06:16:33 +0000 Subject: comment name change --- .../src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index ba4a22f12..0b6148900 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -346,7 +346,7 @@ public class BukkitPermissions { /** * Player events tracked to cause Superperms updates * - * @author Steve + * @author ElgarL * */ protected class PlayerEvents implements Listener { -- cgit v1.2.3 From d05f2d7a32058ea0b877786fffb5dff4c00e3879 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 17:18:12 +1100 Subject: Remove dropItems from the inventory work around --- Essentials/src/com/earth2me/essentials/Trade.java | 30 +++++++++++++---- .../craftbukkit/InventoryWorkaround.java | 39 ++++------------------ 2 files changed, 30 insertions(+), 39 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java index 6cd9ce93a..933b54b3f 100644 --- a/Essentials/src/com/earth2me/essentials/Trade.java +++ b/Essentials/src/com/earth2me/essentials/Trade.java @@ -13,6 +13,7 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Location; +import org.bukkit.entity.Item; import org.bukkit.inventory.ItemStack; @@ -38,7 +39,7 @@ public class Trade { this(null, null, items, null, ess); } - + public Trade(final int exp, final IEssentials ess) { this(null, null, null, exp, ess); @@ -79,9 +80,10 @@ public class Trade { throw new ChargeException(_("notEnoughMoney")); } - - if (exp != null && exp > 0 - && SetExpFix.getTotalExperience(user) < exp) { + + if (exp != null && exp > 0 + && SetExpFix.getTotalExperience(user) < exp) + { throw new ChargeException(_("notEnoughExperience")); } } @@ -103,9 +105,25 @@ public class Trade if (dropItems) { final Map leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack()); + final Location loc = user.getLocation(); for (ItemStack itemStack : leftOver.values()) { - InventoryWorkaround.dropItem(user.getLocation(), itemStack); + final int maxStackSize = itemStack.getType().getMaxStackSize(); + final int stacks = itemStack.getAmount() / maxStackSize; + final int leftover = itemStack.getAmount() % maxStackSize; + final Item[] itemStacks = new Item[stacks + (leftover > 0 ? 1 : 0)]; + for (int i = 0; i < stacks; i++) + { + final ItemStack stack = itemStack.clone(); + stack.setAmount(maxStackSize); + itemStacks[i] = loc.getWorld().dropItem(loc, stack); + } + if (leftover > 0) + { + final ItemStack stack = itemStack.clone(); + stack.setAmount(leftover); + itemStacks[stacks] = loc.getWorld().dropItem(loc, stack); + } } } else @@ -173,7 +191,7 @@ public class Trade { return itemStack; } - + public Integer getExperience() { return exp; diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java index 308568452..a6d5d4fbc 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/InventoryWorkaround.java @@ -1,17 +1,12 @@ package com.earth2me.essentials.craftbukkit; -import com.earth2me.essentials.craftbukkit.FakeInventory; import java.util.HashMap; import java.util.Map; -import org.bukkit.Location; -import org.bukkit.entity.Item; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; /* - * This class can be removed when - * https://github.com/Bukkit/CraftBukkit/pull/193 - * is accepted to CraftBukkit + * This class can be removed when https://github.com/Bukkit/CraftBukkit/pull/193 is accepted to CraftBukkit */ public final class InventoryWorkaround @@ -47,7 +42,7 @@ public final class InventoryWorkaround { return firstPartial(cinventory, item, forceDurability, item.getType().getMaxStackSize()); } - + public static int firstPartial(final Inventory cinventory, final ItemStack item, final boolean forceDurability, final int maxAmount) { if (item == null) @@ -93,10 +88,9 @@ public final class InventoryWorkaround { final Map leftover = new HashMap(); - /* TODO: some optimization - * - Create a 'firstPartial' with a 'fromIndex' - * - Record the lastPartial per Material - * - Cache firstEmpty result + /* + * TODO: some optimization - Create a 'firstPartial' with a 'fromIndex' - Record the lastPartial per Material - + * Cache firstEmpty result */ // combine items @@ -175,7 +169,7 @@ public final class InventoryWorkaround final int amount = item.getAmount(); final int partialAmount = partialItem.getAmount(); - + // Check if it fully fits if (amount + partialAmount <= maxAmount) { @@ -325,25 +319,4 @@ public final class InventoryWorkaround } return leftover.isEmpty(); } - - public static Item[] dropItem(final Location loc, final ItemStack itm) - { - final int maxStackSize = itm.getType().getMaxStackSize(); - final int stacks = itm.getAmount() / maxStackSize; - final int leftover = itm.getAmount() % maxStackSize; - final Item[] itemStacks = new Item[stacks + (leftover > 0 ? 1 : 0)]; - for (int i = 0; i < stacks; i++) - { - final ItemStack stack = itm.clone(); - stack.setAmount(maxStackSize); - itemStacks[i] = loc.getWorld().dropItem(loc, stack); - } - if (leftover > 0) - { - final ItemStack stack = itm.clone(); - stack.setAmount(leftover); - itemStacks[stacks] = loc.getWorld().dropItem(loc, stack); - } - return itemStacks; - } } -- cgit v1.2.3 From c064da9af83863398db0c129f6d6db25fb975b2c Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 17:44:35 +1100 Subject: Update to 1.1-R4 --- .../earth2me/essentials/craftbukkit/FakeWorld.java | 24 +++++++++++++++++++++ .../test/com/earth2me/essentials/FakeServer.java | 12 +++++++++++ lib/bukkit.jar | Bin 4718663 -> 4730197 bytes lib/craftbukkit.jar | Bin 10691664 -> 10709594 bytes 4 files changed, 36 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index 57e2eda63..3fbb7874c 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -554,4 +554,28 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public long getTicksPerAnimalSpawns() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTicksPerAnimalSpawns(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public long getTicksPerMonsterSpawns() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTicksPerMonsterSpawns(int i) + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java index 7090c26b6..14f81b605 100644 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ b/Essentials/test/com/earth2me/essentials/FakeServer.java @@ -654,4 +654,16 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public int getTicksPerAnimalSpawns() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int getTicksPerMonsterSpawns() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/lib/bukkit.jar b/lib/bukkit.jar index aa26f4f35..40205c8b1 100644 Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar index 190294358..a7dd67ee9 100644 Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ -- cgit v1.2.3 From 6d127012d8588eb9b6e5502e4908f544b35858e4 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 17:53:47 +1100 Subject: Add all the new R4 methods --- .../src/com/earth2me/essentials/OfflinePlayer.java | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index fa0be02c7..18fc60cbc 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -17,6 +17,8 @@ import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; @@ -857,4 +859,58 @@ public class OfflinePlayer implements Player { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public void hidePlayer(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void showPlayer(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean canSee(Player player) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffect(PotionEffect pe) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffect(PotionEffect pe, boolean bln) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean addPotionEffects(Collection clctn) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean hasPotionEffect(PotionEffectType pet) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void removePotionEffect(PotionEffectType pet) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection getActivePotionEffects() + { + throw new UnsupportedOperationException("Not supported yet."); + } } -- cgit v1.2.3 From ad05516fd5a7579eeceb2eef2fdc3eed5899fcff Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 17:57:53 +1100 Subject: Fix formatting in the config.yml and plugin.yml files. Add a new author. --- Essentials/src/config.yml | 34 +++++++++++++++++----------------- Essentials/src/plugin.yml | 6 +++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index 0998220ba..c90129356 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -40,7 +40,7 @@ change-displayname: true # The value of change-displayname (above) has to be true. # If you don't set this, it will default to true if essentials chat is installed. # Don't forget to remove the # infront of the line -#add-prefix-suffix: false +# add-prefix-suffix: false # The delay, in seconds, required between /home, /tp, etc. teleport-cooldown: 0 @@ -291,8 +291,8 @@ sethome-multiple: # essentials.sethome.multiple.staff staff: 10 -#Set timeout in seconds for players to accept tpa before request is cancelled. -#Set to 0 for no timeout +# Set timeout in seconds for players to accept tpa before request is cancelled. +# Set to 0 for no timeout tpa-accept-cancellation: 0 ############################################################ @@ -313,7 +313,7 @@ command-costs: #example: 1000 # /kit tools costs $1500 PER USE #kit-tools: 1500 - + # Set this to a currency symbol you want to use. currency-symbol: '$' @@ -346,22 +346,22 @@ hide-permissionless-help: true ############################################################ chat: - + # If EssentialsChat is installed, this will define how far a player's voice travels, in blocks. Set to 0 to make all chat global. # Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting. # Users with essentials.chat.shout can override this by prefixing text with an exclamation mark (!) # Or with essentials.chat.question can override this by prefixing text with a question mark (?) # You can add command costs for shout/question by adding chat-shout and chat-question to the command costs section." radius: 0 - + # Chat formatting can be done in two ways, you can either define a standard format for all chat # Or you can give a group specific chat format, to give some extra variation. # If set to the default chat format which "should" be compatible with ichat. # For more information of chat formatting, check out the wiki: http://ess.khhq.net/wiki/Chat_Formatting - + format: '<{DISPLAYNAME}> {MESSAGE}' #format: '&7[{GROUP}]&f {DISPLAYNAME}&7:&f {MESSAGE}' - + group-formats: # Default: '{WORLDNAME} {DISPLAYNAME}&7:&f {MESSAGE}' # Admins: '{WORLDNAME} &c[{GROUP}]&f {DISPLAYNAME}&7:&c {MESSAGE}' @@ -400,13 +400,13 @@ protect: # Which blocks should people be prevented from placing placement: 10,11,46,327 - + # Which items should people be prevented from using usage: 327 - + # Which blocks should people be prevented from breaking break: - + # Which blocks should not be pushed by pistons piston: @@ -460,12 +460,12 @@ protect: mushroom_cow: false magma_cube: false snowman: false - + # Maximum height the creeper should explode. -1 allows them to explode everywhere. # Set prevent.creeper-explosion to true, if you want to disable creeper explosions. creeper: max-height: -1 - + # Protect various blocks. protect: # Protect all signs @@ -481,7 +481,7 @@ protect: # Prevent placing blocks above protected rails, this is to stop a potential griefing prevent-block-on-rails: false - + # Store blocks / signs in memory before writing memstore: false @@ -510,14 +510,14 @@ protect: # Burn, baby, burn! Should fire damage be disabled? firedmg: false - + # Should the damage after hit by a lightning be disabled? lightning: false # Should people with build: false in permissions be allowed to build # Set true to disable building for those people build: true - + # Should people with build: false in permissions be allowed to use items # Set true to disable using for those people use: true @@ -544,7 +544,7 @@ newbies: # If not, set to '' #announce-format: '' announce-format: '&dWelcome {DISPLAYNAME}&d to the server!' - + # When we spawn for the first time, which spawnpoint do we use? # Set to "none" if you want to use the spawn point of the world. spawnpoint: newbies diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 0ec1ee6d9..b9cbd5227 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -5,7 +5,7 @@ main: com.earth2me.essentials.Essentials version: TeamCity website: http://tiny.cc/EssentialsCommands description: Provides an essential, core set of commands for Bukkit. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits] +authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5] commands: afk: description: Marks you as away-from-keyboard. @@ -120,7 +120,7 @@ commands: aliases: [mem,memory,egc,emem,ememory] give: description: Give a player an item. - usage: / [amount ...] + usage: / [amount ...] aliases: [egive] god: description: Enables your godly powers. @@ -220,7 +220,7 @@ commands: aliases: [emute] near: description: Lists the players near by or around a player - usage: / [playername] [radius] + usage: / [playername] [radius] aliases: [nearby,enear,enearby] nick: description: Change your nickname or that of another player. -- cgit v1.2.3 From 0252d756f632f96de6d2a20f3a746e4c5f2c6fe5 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 19:34:46 +1100 Subject: Make Essentials Update use new Listener system, and fix a few general mistakes, including that of the config --- Essentials/src/config.yml | 2 +- .../earth2me/essentials/chat/EssentialsChat.java | 2 -- EssentialsChat/src/plugin.yml | 2 +- .../earth2me/essentials/update/EssentialsHelp.java | 15 ++++------ .../earth2me/essentials/update/UpdateProcess.java | 34 ++++++++-------------- 5 files changed, 20 insertions(+), 35 deletions(-) diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index c90129356..00585f35f 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -40,7 +40,7 @@ change-displayname: true # The value of change-displayname (above) has to be true. # If you don't set this, it will default to true if essentials chat is installed. # Don't forget to remove the # infront of the line -# add-prefix-suffix: false +#add-prefix-suffix: false # The delay, in seconds, required between /home, /tp, etc. teleport-cooldown: 0 diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java index 21a71f046..436bb55e5 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java @@ -7,8 +7,6 @@ import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; import java.util.logging.Level; import java.util.logging.Logger; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; diff --git a/EssentialsChat/src/plugin.yml b/EssentialsChat/src/plugin.yml index 6f899e33f..af0ed0c13 100644 --- a/EssentialsChat/src/plugin.yml +++ b/EssentialsChat/src/plugin.yml @@ -5,6 +5,6 @@ main: com.earth2me.essentials.chat.EssentialsChat version: TeamCity website: http://tiny.cc/EssentialsCommands description: Provides chat control features for Essentials. Requires Permissions. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, Okamosy] +authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Okamosy] depend: [Essentials] #softdepend: [Factions] \ No newline at end of file diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/EssentialsHelp.java b/EssentialsUpdate/src/com/earth2me/essentials/update/EssentialsHelp.java index 4ed1df602..7dd46451a 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/EssentialsHelp.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/EssentialsHelp.java @@ -7,16 +7,15 @@ import java.util.Map; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChatEvent; -import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; -public class EssentialsHelp extends PlayerListener +public class EssentialsHelp implements Listener { private transient Player chatUser; private final transient Server server; @@ -39,8 +38,7 @@ public class EssentialsHelp extends PlayerListener public void registerEvents() { final PluginManager pluginManager = server.getPluginManager(); - pluginManager.registerEvent(Type.PLAYER_QUIT, this, Priority.Low, plugin); - pluginManager.registerEvent(Type.PLAYER_CHAT, this, Priority.Low, plugin); + pluginManager.registerEvents(this, plugin); } public void onCommand(final CommandSender sender) @@ -155,18 +153,17 @@ public class EssentialsHelp extends PlayerListener ircBot = new IrcBot(player, "Ess_" + player.getName(), UsernameUtil.createUsername(player)); } - @Override + @EventHandler public void onPlayerChat(final PlayerChatEvent event) { if (event.getPlayer() == chatUser) { final boolean success = sendChatMessage(event.getPlayer(), event.getMessage()); event.setCancelled(success); - return; } } - @Override + @EventHandler public void onPlayerQuit(final PlayerQuitEvent event) { closeConnection(); diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java b/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java index 1b26f1d32..f0b86f37a 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java @@ -7,18 +7,16 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.CustomEventListener; -import org.bukkit.event.Event; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerListener; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; -public class UpdateProcess extends PlayerListener +public class UpdateProcess implements Listener { private transient Player currentPlayer; private final transient Plugin plugin; @@ -35,20 +33,6 @@ public class UpdateProcess extends PlayerListener public void registerEvents() { final PluginManager pluginManager = plugin.getServer().getPluginManager(); - pluginManager.registerEvent(Type.PLAYER_QUIT, this, Priority.Low, plugin); - pluginManager.registerEvent(Type.PLAYER_CHAT, this, Priority.Lowest, plugin); - pluginManager.registerEvent(Type.PLAYER_JOIN, this, Priority.Normal, plugin); - pluginManager.registerEvent(Type.CUSTOM_EVENT, new CustomEventListener() - { - @Override - public void onCustomEvent(final Event event) - { - if (event instanceof InstallationFinishedEvent) - { - UpdateProcess.this.currentPlayer = null; - } - } - }, Priority.Normal, plugin); } public boolean selfUpdate() @@ -110,7 +94,13 @@ public class UpdateProcess extends PlayerListener return false; } - @Override + @EventHandler + public void onInstallationFinished(final InstallationFinishedEvent event) + { + UpdateProcess.this.currentPlayer = null; + } + + @EventHandler(priority = EventPriority.LOWEST) public void onPlayerChat(final PlayerChatEvent event) { if (event.getPlayer() == currentPlayer) @@ -130,7 +120,7 @@ public class UpdateProcess extends PlayerListener } } - @Override + @EventHandler public void onPlayerJoin(final PlayerJoinEvent event) { final Player player = event.getPlayer(); -- cgit v1.2.3 From 7633b136e3f221d4c3b2cc0ee19ffbed97c1423b Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 15 Feb 2012 19:55:41 +1100 Subject: Its a good idea to actually register the listeners --- EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java b/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java index f0b86f37a..9fa587f8f 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/UpdateProcess.java @@ -13,7 +13,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; public class UpdateProcess implements Listener @@ -32,7 +31,7 @@ public class UpdateProcess implements Listener public void registerEvents() { - final PluginManager pluginManager = plugin.getServer().getPluginManager(); + plugin.getServer().getPluginManager().registerEvents(this, plugin); } public boolean selfUpdate() -- cgit v1.2.3 From b2dbb3f9e38bdcc05cdb87ce3da4ef10606b6402 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 16 Feb 2012 16:57:50 +0000 Subject: Fixing being charged twice for /back. --- Essentials/src/com/earth2me/essentials/commands/Commandback.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandback.java b/Essentials/src/com/earth2me/essentials/commands/Commandback.java index 67698598a..2ad39ceea 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandback.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandback.java @@ -20,5 +20,6 @@ public class Commandback extends EssentialsCommand charge.isAffordableFor(user); user.sendMessage(_("backUsageMsg")); user.getTeleport().back(charge); + throw new NoChargeException(); } } -- cgit v1.2.3 From fab9688abb8ac18820a6664d22c52931bda7fc70 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 16 Feb 2012 23:44:13 +0000 Subject: Don't try to use old bPerms API if it is not available. --- .../essentials/perm/PermissionsHandler.java | 32 ++++++++++++++-------- .../essentials/perm/SuperpermsHandler.java | 2 +- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index aa786934e..70a9e582c 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.perm; +import com.earth2me.essentials.Util; import java.util.Collections; import java.util.List; import java.util.logging.Level; @@ -111,17 +112,6 @@ public class PermissionsHandler implements IPermissionsHandler return; } - final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); - if (bPermPlugin != null && bPermPlugin.isEnabled()) - { - if (!(handler instanceof BPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); - handler = new BPermissionsHandler(); - } - return; - } - final Plugin GMplugin = pluginManager.getPlugin("GroupManager"); if (GMplugin != null && GMplugin.isEnabled()) { @@ -155,6 +145,26 @@ public class PermissionsHandler implements IPermissionsHandler return; } + final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); + if (bPermPlugin != null && bPermPlugin.isEnabled()) + { + final String bVer = bPermPlugin.getDescription().getVersion().replace(".", ""); + if (Util.isInt(bVer) && Integer.parseInt(bVer) < 284) + { + if (!(handler instanceof BPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); + handler = new BPermissionsHandler(); + } + return; + } + if (!(handler instanceof SuperpermsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: bPermissions api broken, switching to superperms based permissions."); + handler = new SuperpermsHandler(); + } + return; + } final Plugin permPlugin = pluginManager.getPlugin("Permissions"); if (permPlugin != null && permPlugin.isEnabled()) { diff --git a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java index 70a118bcf..2e767cb72 100644 --- a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java @@ -27,7 +27,7 @@ public class SuperpermsHandler implements IPermissionsHandler @Override public boolean inGroup(final Player base, final String group) { - return false; + return hasPermission(base, "group." + group); } @Override -- cgit v1.2.3 From 3d1c0fd1578f0ee72cc7f65500f49f30f379ac54 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Sat, 18 Feb 2012 09:05:28 +0000 Subject: A command of '/manload' with no world arguments now performs a full reload of GM. --- EssentialsGroupManager/src/Changelog.txt | 3 +- .../org/anjocaido/groupmanager/GroupManager.java | 54 +++++++++------------- 2 files changed, 23 insertions(+), 34 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 4cfc241c4..31d40413f 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -140,4 +140,5 @@ v 1.9: - Fixed world mirroring so it returns the correct data for the requested world. - Change Service registration to register WorldsHolder instead of AnjoPermissionsHandler. This is the correct entry point for all data. - Depreciate PlayerTeleportEvent, PlayerRespawnEvent and PlayerPortalEvent as it's all handled in PlayerChangedWorldEvent. - This also means we no longer update permissions before we change worlds. \ No newline at end of file + This also means we no longer update permissions before we change worlds. + - A command of '/manload' with no world arguments now performs a full reload of GM. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index b87d1de8c..d8d151200 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -25,7 +25,10 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder; +import org.anjocaido.groupmanager.events.GMSystemEvent; import org.anjocaido.groupmanager.events.GMWorldListener; +import org.anjocaido.groupmanager.events.GroupManagerEventHandler; +import org.anjocaido.groupmanager.events.GMGroupEvent.Action; import org.anjocaido.groupmanager.utils.GMLoggerHandler; import org.anjocaido.groupmanager.utils.PermissionCheckResult; import org.anjocaido.groupmanager.utils.Tasks; @@ -1492,7 +1495,9 @@ public class GroupManager extends JavaPlugin { return true; case manload: - // THIS CASE DONT NEED SENDER + /** + * Attempt to reload a specific world + */ if (args.length > 0) { auxString = ""; for (int i = 0; i < args.length; i++) { @@ -1502,51 +1507,34 @@ public class GroupManager extends JavaPlugin { } } - isLoaded = false; // Disable Bukkit Perms update + isLoaded = false; // Disable Bukkit Perms update and event triggers globalGroups.load(); worldsHolder.loadWorld(auxString); - sender.sendMessage("The request to world '" + auxString + "' was sent."); + sender.sendMessage("The request to reload world '" + auxString + "' was attempted."); isLoaded = true; BukkitPermissions.updateAllPlayers(); - return true; - } - // VALIDANDO ESTADO DO SENDER - if (dataHolder == null || permissionHandler == null) { - if (!setDefaultWorldHandler(sender)) - return true; - } - // WORKING - config.load(); - globalGroups.load(); - worldsHolder.mirrorSetUp(); - - isLoaded = false; - - if (args.length > 0) { - auxString = ""; - for (int i = 0; i < args.length; i++) { - auxString += args[i]; - if ((i + 1) < args.length) { - auxString += " "; - } - } - worldsHolder.loadWorld(auxString); - sender.sendMessage("The request to world '" + auxString + "' was sent."); } else { - worldsHolder.reloadAll(); - sender.sendMessage(ChatColor.YELLOW + " All worlds were reloaded."); + + /** + * Reload all settings and data as no world was specified. + */ + onDisable(); + onEnable(); } - - isLoaded = true; - - BukkitPermissions.updateAllPlayers(); + + /** + * Fire an event as none will have been triggered in the reload. + */ + if (GroupManager.isLoaded()) + GroupManagerEventHandler.callEvent(GMSystemEvent.Action.RELOADED); return true; + case listgroups: // VALIDANDO ESTADO DO SENDER if (dataHolder == null || permissionHandler == null) { -- cgit v1.2.3 From 945ae71480c1810d3e59e8b8557371be2fb251ba Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 18 Feb 2012 21:09:18 +0000 Subject: Adding full keyword support for newb join message. Also adding {ADDRESS} and {USERNAME} as new keywords. --- .../src/com/earth2me/essentials/ISettings.java | 19 ++++++------ .../src/com/earth2me/essentials/Settings.java | 32 +++++++++----------- .../essentials/textreader/KeywordReplacer.java | 8 ++++- .../essentials/textreader/SimpleTextInput.java | 35 ++++++++++++++++++++++ .../essentials/textreader/SimpleTextPager.java | 31 +++++++++++++++++++ Essentials/src/info.txt | 3 ++ .../spawn/EssentialsSpawnPlayerListener.java | 7 ++++- 7 files changed, 105 insertions(+), 30 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java create mode 100644 Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 560eb6f79..c29cc5b1a 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -2,6 +2,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; +import com.earth2me.essentials.textreader.IText; import java.text.MessageFormat; import java.util.List; import java.util.Map; @@ -14,9 +15,7 @@ public interface ISettings extends IConf { boolean areSignsDisabled(); - String format(String format, IUser user); - - String getAnnounceNewPlayerFormat(IUser user); + IText getAnnounceNewPlayerFormat(); boolean getAnnounceNewPlayers(); @@ -35,7 +34,7 @@ public interface ISettings extends IConf String getCurrencySymbol(); int getOversizedStackSize(); - + int getDefaultStackSize(); double getHealCooldown(); @@ -101,7 +100,7 @@ public interface ISettings extends IConf boolean isTradeInStacks(int id); List itemSpawnBlacklist(); - + List enabledSigns(); boolean permissionBasedItemSpawn(); @@ -143,18 +142,18 @@ public interface ISettings extends IConf public void setDebug(boolean debug); Set getNoGodWorlds(); - + boolean getUpdateBedAtDaytime(); - + boolean getRepairEnchanted(); - + boolean getIsWorldTeleportPermissions(); - + boolean registerBackInListener(); boolean getDisableItemPickupWhileAfk(); EventPriority getRespawnPriority(); - + long getTpaAcceptCancellation(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 6b81753b6..3307945f2 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -4,6 +4,10 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.signs.Signs; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.KeywordReplacer; +import com.earth2me.essentials.textreader.SimpleTextInput; +import com.earth2me.essentials.textreader.SimpleTextPager; import java.io.File; import java.text.MessageFormat; import java.util.*; @@ -324,15 +328,9 @@ public class Settings implements ISettings } @Override - public String getAnnounceNewPlayerFormat(IUser user) + public IText getAnnounceNewPlayerFormat() { - return format(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"), user); - } - - @Override - public String format(String format, IUser user) - { - return format.replace('&', '§').replace("§§", "&").replace("{PLAYER}", user.getDisplayName()).replace("{DISPLAYNAME}", user.getDisplayName()).replace("{GROUP}", user.getGroup()).replace("{USERNAME}", user.getName()).replace("{ADDRESS}", user.getAddress().toString()); + return new SimpleTextInput(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!")); } @Override @@ -362,19 +360,19 @@ public class Settings implements ISettings itemSpawnBl = getItemSpawnBlacklist(); chatFormats.clear(); } - private List itemSpawnBl = new ArrayList(); - + @Override public List itemSpawnBlacklist() { return itemSpawnBl; } - + private List getItemSpawnBlacklist() { final List epItemSpwn = new ArrayList(); - if (ess.getItemDb() == null) { + if (ess.getItemDb() == null) + { logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded."); return epItemSpwn; } @@ -384,7 +382,7 @@ public class Settings implements ISettings if (itemName.isEmpty()) { continue; - } + } try { final ItemStack iStack = ess.getItemDb().get(itemName); @@ -397,19 +395,18 @@ public class Settings implements ISettings } return epItemSpwn; } - private List enabledSigns = new ArrayList(); - + @Override public List enabledSigns() { return enabledSigns; } - + private List getEnabledSigns() { List newSigns = new ArrayList(); - + for (String signName : config.getStringList("enabledSigns", null)) { signName = signName.trim().toUpperCase(Locale.ENGLISH); @@ -604,7 +601,6 @@ public class Settings implements ISettings { return config.getBoolean("death-messages", true); } - private Set noGodWorlds = new HashSet(); @Override diff --git a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java index a7aab67ba..4c4e3364b 100644 --- a/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -33,12 +33,14 @@ public class KeywordReplacer implements IText String displayName, ipAddress, balance, mails, world; String worlds, online, unique, playerlist, date, time; String worldTime12, worldTime24, worldDate, plugins; - String version; + String userName, address, version; if (sender instanceof Player) { final User user = ess.getUser(sender); displayName = user.getDisplayName(); + userName = user.getName(); ipAddress = user.getAddress().getAddress().toString(); + address = user.getAddress().toString(); balance = Double.toString(user.getMoney()); mails = Integer.toString(user.getMails().size()); world = user.getLocation().getWorld().getName(); @@ -107,8 +109,12 @@ public class KeywordReplacer implements IText for (int i = 0; i < input.getLines().size(); i++) { String line = input.getLines().get(i); + line = line.replace("{PLAYER}", displayName); + line = line.replace("{DISPLAYNAME}", displayName); + line = line.replace("{USERNAME}", displayName); line = line.replace("{IP}", ipAddress); + line = line.replace("{ADDRESS}", ipAddress); line = line.replace("{BALANCE}", balance); line = line.replace("{MAILS}", mails); line = line.replace("{WORLD}", world); diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java new file mode 100644 index 000000000..a9f9e1480 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextInput.java @@ -0,0 +1,35 @@ +package com.earth2me.essentials.textreader; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + + +public class SimpleTextInput implements IText +{ + private final transient List lines = new ArrayList(); + + public SimpleTextInput (final String input) { + lines.add(input); + } + + @Override + public List getLines() + { + return lines; + } + + @Override + public List getChapters() + { + return Collections.emptyList(); + } + + @Override + public Map getBookmarks() + { + return Collections.emptyMap(); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java new file mode 100644 index 000000000..ea1b787d5 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/textreader/SimpleTextPager.java @@ -0,0 +1,31 @@ +package com.earth2me.essentials.textreader; + +import org.bukkit.command.CommandSender; + + +public class SimpleTextPager +{ + private final transient IText text; + + public SimpleTextPager(final IText text) + { + this.text = text; + } + + public void showPage(final CommandSender sender) + { + for (String line : text.getLines()) + { + sender.sendMessage(line); + } + } + + public String getString(int line) + { + if (text.getLines().size() < line) + { + return null; + } + return text.getLines().get(line); + } +} diff --git a/Essentials/src/info.txt b/Essentials/src/info.txt index e05843dcb..694093bbf 100644 --- a/Essentials/src/info.txt +++ b/Essentials/src/info.txt @@ -25,7 +25,9 @@ Minecraft colors: #Tags PLAYER: {PLAYER} +USERNAME: {PLAYER} IP: {IP} +ADDRESS: {ADDRESS} BALANCE: {BALANCE} MAILS: {MAILS} WORLD: {WORLD} @@ -39,3 +41,4 @@ WORLDTIME12: {WORLDTIME12} WORLDTIME24: {WORLDTIME24} WORLDDATE: {WORLDDATE} PLUGINS: {PLUGINS} +VERSION: {VERSION} \ No newline at end of file diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index b68b4e350..083fd66a5 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -4,6 +4,9 @@ import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.OfflinePlayer; import com.earth2me.essentials.User; +import com.earth2me.essentials.textreader.IText; +import com.earth2me.essentials.textreader.KeywordReplacer; +import com.earth2me.essentials.textreader.SimpleTextPager; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; @@ -73,7 +76,9 @@ public class EssentialsSpawnPlayerListener implements Listener if (ess.getSettings().getAnnounceNewPlayers()) { - ess.broadcastMessage(user, ess.getSettings().getAnnounceNewPlayerFormat(user)); + final IText output = new KeywordReplacer(ess.getSettings().getAnnounceNewPlayerFormat(), user, ess); + final SimpleTextPager pager = new SimpleTextPager(output); + ess.broadcastMessage(user, pager.getString(0)); } LOGGER.log(Level.FINE, "New player join"); -- cgit v1.2.3 From 3077ea4ef189c1006029d47158ecbfea601b3ec6 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 18 Feb 2012 21:34:05 +0000 Subject: Re-allow colours in newb welcome messages. --- Essentials/src/com/earth2me/essentials/Settings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 3307945f2..592b80694 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -330,7 +330,7 @@ public class Settings implements ISettings @Override public IText getAnnounceNewPlayerFormat() { - return new SimpleTextInput(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!")); + return new SimpleTextInput(Util.replaceColor(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"))); } @Override -- cgit v1.2.3 From 4f4d9f6209ff68ee3b82081977465d110d37fb23 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 18 Feb 2012 22:08:18 +0000 Subject: Little bit of extra info in the default /einfo file --- Essentials/src/info.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Essentials/src/info.txt b/Essentials/src/info.txt index 694093bbf..efc629923 100644 --- a/Essentials/src/info.txt +++ b/Essentials/src/info.txt @@ -7,6 +7,10 @@ Name it info_username.txt or info_groupname.txt This also works with motd and rules. +Extra pages: +Type /info Colours +Type /info Tags + It can contain chapters like the Chapter1 below: #Chapter1 -- cgit v1.2.3 From 514f07ce57c516eb6e4bc0691b7ce6abbc1d20b4 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sat, 18 Feb 2012 22:47:38 +0000 Subject: Add bPerm2 support for chat prefixes. --- Essentials/nbproject/project.properties | 4 +- .../essentials/perm/BPermissions2Handler.java | 62 +++++++++++++++++++++ .../essentials/perm/PermissionsHandler.java | 7 ++- lib/bpermissions2.jar | Bin 0 -> 129139 bytes 4 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java create mode 100644 lib/bpermissions2.jar diff --git a/Essentials/nbproject/project.properties b/Essentials/nbproject/project.properties index 71fea5cf9..7a5ffe7bb 100644 --- a/Essentials/nbproject/project.properties +++ b/Essentials/nbproject/project.properties @@ -66,6 +66,7 @@ endorsed.classpath= excludes= file.reference.BOSEconomy7.jar=../lib/BOSEconomy7.jar file.reference.bPermissions.jar=../lib/bPermissions.jar +file.reference.bpermissions2.jar=../lib/bpermissions2.jar file.reference.bukkit.jar=../lib/bukkit.jar file.reference.craftbukkit.jar=../lib/craftbukkit.jar file.reference.iCo4.jar=../lib/iCo4.jar @@ -97,7 +98,8 @@ javac.classpath=\ ${file.reference.bukkit.jar}:\ ${file.reference.craftbukkit.jar}:\ ${file.reference.Vault.jar}:\ - ${file.reference.Privileges.jar} + ${file.reference.Privileges.jar}:\ + ${file.reference.bpermissions2.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java new file mode 100644 index 000000000..f4122bf53 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/BPermissions2Handler.java @@ -0,0 +1,62 @@ +package com.earth2me.essentials.perm; + +import de.bananaco.bpermissions.api.ApiLayer; +import de.bananaco.bpermissions.api.World; +import de.bananaco.bpermissions.api.WorldManager; +import de.bananaco.bpermissions.api.util.Calculable; +import de.bananaco.bpermissions.api.util.CalculableType; +import java.util.Arrays; +import java.util.List; +import org.bukkit.entity.Player; + + +public class BPermissions2Handler extends SuperpermsHandler +{ + public BPermissions2Handler() + { + + } + + @Override + public String getGroup(final Player base) + { + final List groups = getGroups(base); + if (groups == null || groups.isEmpty()) + { + return null; + } + return groups.get(0); + } + + @Override + public List getGroups(final Player base) + { + final String[] groups = ApiLayer.getGroups(base.getWorld().getName(), CalculableType.USER, base.getName()); + return Arrays.asList(groups); + } + + @Override + public boolean inGroup(final Player base, final String group) + { + return ApiLayer.hasGroup(base.getWorld().getName(), CalculableType.USER, base.getName(), group); + } + + @Override + public boolean canBuild(final Player base, final String group) + { + return hasPermission(base, "essentials.build") || hasPermission(base, "bPermissions.build"); + } + + @Override + public String getPrefix(final Player base) + { + return ApiLayer.getValue(base.getWorld().getName(), CalculableType.USER, base.getName(), "prefix"); + } + + @Override + public String getSuffix(final Player base) + { + return ApiLayer.getValue(base.getWorld().getName(), CalculableType.USER, base.getName(), "suffix"); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 70a9e582c..a344968c2 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -158,12 +158,13 @@ public class PermissionsHandler implements IPermissionsHandler } return; } - if (!(handler instanceof SuperpermsHandler)) + if (!(handler instanceof BPermissions2Handler)) { - LOGGER.log(Level.INFO, "Essentials: bPermissions api broken, switching to superperms based permissions."); - handler = new SuperpermsHandler(); + LOGGER.log(Level.INFO, "Essentials: Using bPermissions2 based permissions."); + handler = new BPermissions2Handler(); } return; + } final Plugin permPlugin = pluginManager.getPlugin("Permissions"); if (permPlugin != null && permPlugin.isEnabled()) diff --git a/lib/bpermissions2.jar b/lib/bpermissions2.jar new file mode 100644 index 000000000..b6d344b82 Binary files /dev/null and b/lib/bpermissions2.jar differ -- cgit v1.2.3 From 3b81593ebba032193b267274ac66d8770223f394 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 21 Feb 2012 16:47:25 +0100 Subject: CB#1952 B#1330 --- lib/bukkit.jar | Bin 4730197 -> 4614591 bytes lib/craftbukkit.jar | Bin 10709594 -> 10786423 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/bukkit.jar b/lib/bukkit.jar index 40205c8b1..e343a9723 100644 Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar index a7dd67ee9..d51826640 100644 Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ -- cgit v1.2.3 From f46948249e881688ead76add5478716bd410780e Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 21 Feb 2012 17:33:46 +0100 Subject: Updated Essentials to work with R5 --- .../src/com/earth2me/essentials/Essentials.java | 2 +- .../com/earth2me/essentials/EssentialsConf.java | 84 ++++++++++++++-------- .../com/earth2me/essentials/EssentialsUpgrade.java | 12 ++-- .../src/com/earth2me/essentials/ISettings.java | 2 +- .../src/com/earth2me/essentials/OfflinePlayer.java | 12 ---- .../src/com/earth2me/essentials/Settings.java | 26 ++++--- .../src/com/earth2me/essentials/UserData.java | 6 +- .../earth2me/essentials/craftbukkit/FakeWorld.java | 18 +++-- .../essentials/signs/SignEntityListener.java | 4 +- .../test/com/earth2me/essentials/FakeServer.java | 39 ++++++---- .../groupmanager/dataholder/WorldDataHolder.java | 2 +- .../groupmanager/events/GMGroupEvent.java | 4 +- .../groupmanager/events/GMSystemEvent.java | 2 +- .../anjocaido/groupmanager/events/GMUserEvent.java | 4 +- .../essentials/protect/EmergencyBlockListener.java | 36 ---------- .../protect/EmergencyEntityListener.java | 22 ------ .../protect/EmergencyPlayerListener.java | 16 ----- .../essentials/protect/EssentialsProtect.java | 19 +---- .../protect/EssentialsProtectEntityListener.java | 2 +- .../update/states/InstallationFinishedEvent.java | 2 +- .../com/earth2me/essentials/xmpp/UserManager.java | 4 +- .../com/earth2me/essentials/xmpp/XMPPManager.java | 4 +- 22 files changed, 130 insertions(+), 192 deletions(-) delete mode 100644 EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java delete mode 100644 EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java delete mode 100644 EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 3ee7c1777..d8d1f5554 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -66,7 +66,7 @@ import org.yaml.snakeyaml.error.YAMLException; public class Essentials extends JavaPlugin implements IEssentials { - public static final int BUKKIT_VERSION = 1846; + public static final int BUKKIT_VERSION = 1952; private static final Logger LOGGER = Logger.getLogger("Minecraft"); private transient ISettings settings; private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java index ec6e27b53..9ffe7e5b6 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java @@ -3,7 +3,6 @@ package com.earth2me.essentials; import static com.earth2me.essentials.I18n._; import java.io.*; import java.util.HashMap; -import java.util.List; import java.util.Locale; import java.util.Map; import java.util.logging.Level; @@ -12,12 +11,14 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.World; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; -import org.bukkit.util.config.Configuration; -public class EssentialsConf extends Configuration +public class EssentialsConf extends YamlConfiguration { private static final Logger LOGGER = Logger.getLogger("Minecraft"); private transient File configFile; @@ -26,15 +27,10 @@ public class EssentialsConf extends Configuration public EssentialsConf(final File configFile) { - super(configFile); + super(); this.configFile = configFile; - if (this.root == null) - { - this.root = new HashMap(); - } } - @Override public void load() { configFile = configFile.getAbsoluteFile(); @@ -105,20 +101,24 @@ public class EssentialsConf extends Configuration } } + try { - super.load(); + super.load(configFile); } - catch (RuntimeException e) - { - File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis()); - configFile.renameTo(broken); - LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), e.getCause()); + catch (FileNotFoundException ex) + { + LOGGER.log(Level.SEVERE, null, ex); } - - if (this.root == null) + catch (IOException ex) { - this.root = new HashMap(); + LOGGER.log(Level.SEVERE, null, ex); + } + catch (InvalidConfigurationException ex) + { + File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis()); + configFile.renameTo(broken); + LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), ex.getCause()); } } @@ -193,7 +193,7 @@ public class EssentialsConf extends Configuration public boolean hasProperty(final String path) { - return getProperty(path) != null; + return isSet(path); } public Location getLocation(final String path, final Server server) throws Exception @@ -218,24 +218,25 @@ public class EssentialsConf extends Configuration public void setProperty(final String path, final Location loc) { - setProperty((path == null ? "" : path + ".") + "world", loc.getWorld().getName()); - setProperty((path == null ? "" : path + ".") + "x", loc.getX()); - setProperty((path == null ? "" : path + ".") + "y", loc.getY()); - setProperty((path == null ? "" : path + ".") + "z", loc.getZ()); - setProperty((path == null ? "" : path + ".") + "yaw", loc.getYaw()); - setProperty((path == null ? "" : path + ".") + "pitch", loc.getPitch()); + set((path == null ? "" : path + ".") + "world", loc.getWorld().getName()); + set((path == null ? "" : path + ".") + "x", loc.getX()); + set((path == null ? "" : path + ".") + "y", loc.getY()); + set((path == null ? "" : path + ".") + "z", loc.getZ()); + set((path == null ? "" : path + ".") + "yaw", loc.getYaw()); + set((path == null ? "" : path + ".") + "pitch", loc.getPitch()); } + @Override public ItemStack getItemStack(final String path) { final ItemStack stack = new ItemStack( Material.valueOf(getString(path + ".type", "AIR")), getInt(path + ".amount", 1), (short)getInt(path + ".damage", 0)); - final List enchants = getKeys(path + ".enchant"); + final ConfigurationSection enchants = getConfigurationSection(path + ".enchant"); if (enchants != null) { - for (String enchant : enchants) + for (String enchant : enchants.getKeys(false)) { final Enchantment enchantment = Enchantment.getByName(enchant.toUpperCase(Locale.ENGLISH)); if (enchantment == null) @@ -271,14 +272,14 @@ public class EssentialsConf extends Configuration } // getData().getData() is broken //map.put("data", stack.getDurability()); - setProperty(path, map); + set(path, map); } public long getLong(final String path, final long def) { try { - final Number num = (Number)getProperty(path); + final Number num = (Number)get(path); return num == null ? def : num.longValue(); } catch (ClassCastException ex) @@ -292,7 +293,7 @@ public class EssentialsConf extends Configuration { try { - Number num = (Number)getProperty(path); + Number num = (Number)get(path); return num == null ? def : num.doubleValue(); } catch (ClassCastException ex) @@ -300,4 +301,27 @@ public class EssentialsConf extends Configuration return def; } } + + public void save() { + try + { + save(configFile); + } + catch (IOException ex) + { + LOGGER.log(Level.SEVERE, null, ex); + } + } + + public Object getProperty(String path) { + return get(path); + } + + public void setProperty(String path, Object object) { + set(path, object); + } + + public void removeProperty(String path) { + set(path, null); + } } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java index ae444af2e..26e6f25bc 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsUpgrade.java @@ -95,7 +95,7 @@ public class EssentialsUpgrade } final EssentialsConf conf = new EssentialsConf(configFile); conf.load(); - List lines = conf.getStringList(name, null); + List lines = conf.getStringList(name); if (lines != null && !lines.isEmpty()) { if (!file.createNewFile()) @@ -332,7 +332,7 @@ public class EssentialsUpgrade config.setProperty("homes.home", defloc); } - List worlds = config.getKeys("home.worlds"); + Set worlds = config.getConfigurationSection("home.worlds").getKeys(false); Location loc; String worldName; @@ -381,7 +381,7 @@ public class EssentialsUpgrade } final EssentialsConf usersConfig = new EssentialsConf(usersFile); usersConfig.load(); - for (String username : usersConfig.getKeys(null)) + for (String username : usersConfig.getKeys(false)) { final User user = new User(new OfflinePlayer(username, ess), ess); final String nickname = usersConfig.getString(username + ".nickname"); @@ -389,7 +389,7 @@ public class EssentialsUpgrade { user.setNickname(nickname); } - final List mails = usersConfig.getStringList(username + ".mail", null); + final List mails = usersConfig.getStringList(username + ".mail"); if (mails != null && !mails.isEmpty()) { user.setMails(mails); @@ -701,7 +701,7 @@ public class EssentialsUpgrade if (!config.hasProperty("spawns")) { final Spawns spawns = new Spawns(); - List keys = config.getKeys(); + Set keys = config.getKeys(false); for (String group : keys) { Location loc = getFakeLocation(config, group); @@ -748,7 +748,7 @@ public class EssentialsUpgrade if (!config.hasProperty("jails")) { final com.earth2me.essentials.settings.Jails jails = new com.earth2me.essentials.settings.Jails(); - List keys = config.getKeys(); + Set keys = config.getKeys(false); for (String jailName : keys) { Location loc = getFakeLocation(config, jailName); diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index c29cc5b1a..b7a128ebc 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -65,7 +65,7 @@ public interface ISettings extends IConf boolean getRespawnAtHome(); - List getMultipleHomes(); + Set getMultipleHomes(); int getHomeLimit(String set); diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index 18fc60cbc..440d3fad3 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -666,18 +666,6 @@ public class OfflinePlayer implements Player throw new UnsupportedOperationException("Not supported yet."); } - @Override - public int getExperience() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setExperience(int i) - { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public int getLevel() { diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 592b80694..218a9163c 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -45,15 +45,15 @@ public class Settings implements ISettings } @Override - public List getMultipleHomes() + public Set getMultipleHomes() { - return config.getKeys("sethome-multiple"); + return config.getConfigurationSection("sethome-multiple").getKeys(false); } @Override public int getHomeLimit(final User user) { - final List homeList = getMultipleHomes(); + final Set homeList = getMultipleHomes(); if (homeList == null) { //TODO: Replace this code to remove backwards compat, after settings are automatically updated @@ -116,7 +116,7 @@ public class Settings implements ISettings @Override public boolean isCommandDisabled(String label) { - for (String c : config.getStringList("disabled-commands", new ArrayList(0))) + for (String c : config.getStringList("disabled-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -136,7 +136,7 @@ public class Settings implements ISettings @Override public boolean isCommandRestricted(String label) { - for (String c : config.getStringList("restricted-commands", new ArrayList(0))) + for (String c : config.getStringList("restricted-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -150,7 +150,7 @@ public class Settings implements ISettings @Override public boolean isPlayerCommand(String label) { - for (String c : config.getStringList("player-commands", new ArrayList(0))) + for (String c : config.getStringList("player-commands")) { if (!c.equalsIgnoreCase(label)) { @@ -164,9 +164,7 @@ public class Settings implements ISettings @Override public boolean isCommandOverridden(String name) { - List defaultList = new ArrayList(1); - defaultList.add("god"); - for (String c : config.getStringList("overridden-commands", defaultList)) + for (String c : config.getStringList("overridden-commands")) { if (!c.equalsIgnoreCase(name)) { @@ -215,7 +213,7 @@ public class Settings implements ISettings @Override public Object getKit(String name) { - Map kits = (Map)config.getProperty("kits"); + Map kits = (Map)config.get("kits"); for (Map.Entry entry : kits.entrySet()) { if (entry.getKey().equalsIgnoreCase(name.replace('.', '_').replace('/', '_'))) @@ -229,7 +227,7 @@ public class Settings implements ISettings @Override public Map getKits() { - return (Map)config.getProperty("kits"); + return (Map)config.get("kits"); } @Override @@ -254,7 +252,7 @@ public class Settings implements ISettings { } - return ChatColor.getByCode(Integer.parseInt(colorName, 16)); + return ChatColor.getByChar(colorName); } @Override @@ -355,7 +353,7 @@ public class Settings implements ISettings public void reloadConfig() { config.load(); - noGodWorlds = new HashSet(config.getStringList("no-god-in-worlds", Collections.emptyList())); + noGodWorlds = new HashSet(config.getStringList("no-god-in-worlds")); enabledSigns = getEnabledSigns(); itemSpawnBl = getItemSpawnBlacklist(); chatFormats.clear(); @@ -407,7 +405,7 @@ public class Settings implements ISettings { List newSigns = new ArrayList(); - for (String signName : config.getStringList("enabledSigns", null)) + for (String signName : config.getStringList("enabledSigns")) { signName = signName.trim().toUpperCase(Locale.ENGLISH); if (signName.isEmpty()) diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java index e2a365ad2..44ac096b9 100644 --- a/Essentials/src/com/earth2me/essentials/UserData.java +++ b/Essentials/src/com/earth2me/essentials/UserData.java @@ -209,7 +209,7 @@ public abstract class UserData extends PlayerExtension implements IConf private List _getUnlimited() { - return config.getIntList("unlimited", new ArrayList()); + return config.getIntegerList("unlimited"); } public List getUnlimited() @@ -383,7 +383,7 @@ public abstract class UserData extends PlayerExtension implements IConf private List _getMails() { - return config.getStringList("mail", new ArrayList()); + return config.getStringList("mail"); } public List getMails() @@ -491,7 +491,7 @@ public abstract class UserData extends PlayerExtension implements IConf public List getIgnoredPlayers() { - return config.getStringList("ignore", new ArrayList()); + return config.getStringList("ignore"); } public void setIgnoredPlayers(List players) diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index 3fbb7874c..0ea06e72b 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -231,12 +231,6 @@ public class FakeWorld implements World return name; } - @Override - public long getId() - { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public Location getSpawnLocation() { @@ -578,4 +572,16 @@ public class FakeWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public Collection getEntitiesByClass(Class type) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Collection getEntitiesByClasses(Class... types) + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java index d9e28becc..a0446179f 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignEntityListener.java @@ -6,7 +6,7 @@ import org.bukkit.block.Block; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.EndermanPickupEvent; +import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityExplodeEvent; @@ -44,7 +44,7 @@ public class SignEntityListener implements Listener } @EventHandler(priority = EventPriority.LOW) - public void onEndermanPickup(final EndermanPickupEvent event) + public void onEntityChangeBlock(final EntityChangeBlockEvent event) { if (event.isCancelled() || ess.getSettings().areSignsDisabled()) { diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java index 14f81b605..a7335a957 100644 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ b/Essentials/test/com/earth2me/essentials/FakeServer.java @@ -14,6 +14,7 @@ import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.PluginCommand; import org.bukkit.entity.Player; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; import org.bukkit.map.MapView; import org.bukkit.plugin.Plugin; @@ -250,7 +251,6 @@ public class FakeServer implements Server return worlds; } - @Override public World createWorld(String string, Environment e) { World w = new FakeWorld(string, e); @@ -258,7 +258,6 @@ public class FakeServer implements Server return w; } - @Override public World createWorld(String string, Environment e, long l) { World w = new FakeWorld(string, e); @@ -331,18 +330,6 @@ public class FakeServer implements Server return player; } - @Override - public World createWorld(String string, Environment e, ChunkGenerator cg) - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public World createWorld(String string, Environment e, long l, ChunkGenerator cg) - { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public World createWorld(WorldCreator creator) { @@ -666,4 +653,28 @@ public class FakeServer implements Server { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public List getRecipesFor(ItemStack is) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Iterator recipeIterator() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void clearRecipes() + { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void resetRecipes() + { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index 8115b1a75..e766b6c78 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -856,7 +856,7 @@ public class WorldDataHolder { PluginManager pm = server.getPluginManager(); Plugin[] plugins = pm.getPlugins(); for (int i = 0; i < plugins.length; i++) { - plugins[i].getConfiguration().load(); + //plugins[i].getConfiguration().load(); try { plugins[i].getClass().getMethod("setupPermissions").invoke(plugins[i]); } catch (Exception ex) { diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java index fdb740646..f109cf4f7 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMGroupEvent.java @@ -37,7 +37,7 @@ public class GMGroupEvent extends Event { protected Action action; public GMGroupEvent(Group group, Action action) { - super(action.toString()); + super(); this.group = group; this.action = action; @@ -45,7 +45,7 @@ public class GMGroupEvent extends Event { } public GMGroupEvent(String groupName, Action action) { - super(action.toString()); + super(); this.groupName = groupName; this.action = action; diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java index 1ff605d5c..6f4c0ea08 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMSystemEvent.java @@ -32,7 +32,7 @@ public class GMSystemEvent extends Event { protected Action action; public GMSystemEvent(Action action) { - super(action.toString()); + super(); this.action = action; } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java index d40a7d63e..543580f41 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/events/GMUserEvent.java @@ -37,7 +37,7 @@ public class GMUserEvent extends Event { protected Action action; public GMUserEvent(User user, Action action) { - super(action.toString()); + super(); this.user = user; this.action = action; @@ -45,7 +45,7 @@ public class GMUserEvent extends Event { } public GMUserEvent(String userName, Action action) { - super(action.toString()); + super(); this.userName = userName; this.action = action; diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java deleted file mode 100644 index 7ff17b381..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyBlockListener.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.block.BlockListener; - -@Deprecated -public class EmergencyBlockListener extends BlockListener -{ - - @Override - public void onBlockBurn(final BlockBurnEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockIgnite(final BlockIgniteEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockFromTo(final BlockFromToEvent event) - { - event.setCancelled(true); - } - - @Override - public void onBlockBreak(final BlockBreakEvent event) - { - event.setCancelled(true); - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java deleted file mode 100644 index 08b04aae1..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyEntityListener.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.entity.EntityListener; - -@Deprecated -public class EmergencyEntityListener extends EntityListener -{ - - @Override - public void onEntityExplode(final EntityExplodeEvent event) - { - event.setCancelled(true); - } - - @Override - public void onEntityDamage(final EntityDamageEvent event) - { - event.setCancelled(true); - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java deleted file mode 100644 index 169e9af79..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyPlayerListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerListener; - -@Deprecated -public class EmergencyPlayerListener extends PlayerListener -{ - - @Override - public void onPlayerJoin(PlayerJoinEvent event) - { - event.getPlayer().sendMessage("Essentials Protect is in emergency mode. Check your log for errors."); - } - -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java index af80647a6..9c257662d 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java @@ -9,8 +9,6 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; import org.bukkit.entity.Player; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -65,21 +63,8 @@ public class EssentialsProtect extends JavaPlugin implements IProtect private void enableEmergencyMode(final PluginManager pm) { - //final EmergencyListener emListener = new EmergencyListener(); - //pm.registerEvents(emListener, this); - - //TODO: Remove deprecated listners in a few weeks. - - final EmergencyBlockListener emBlockListener = new EmergencyBlockListener(); - final EmergencyEntityListener emEntityListener = new EmergencyEntityListener(); - final EmergencyPlayerListener emPlayerListener = new EmergencyPlayerListener(); - pm.registerEvent(Type.PLAYER_JOIN, emPlayerListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_BURN, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_IGNITE, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_FROMTO, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.BLOCK_BREAK, emBlockListener, Priority.Low, this); - pm.registerEvent(Type.ENTITY_DAMAGE, emEntityListener, Priority.Low, this); - pm.registerEvent(Type.ENTITY_EXPLODE, emEntityListener, Priority.Low, this); + final EmergencyListener emListener = new EmergencyListener(); + pm.registerEvents(emListener, this); for (Player player : getServer().getOnlinePlayers()) { diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java index 40167ec41..57302517f 100644 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java @@ -328,7 +328,7 @@ public class EssentialsProtectEntityListener implements Listener } @EventHandler(priority = EventPriority.HIGHEST) - public void onEndermanPickup(EndermanPickupEvent event) + public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (event.isCancelled()) { diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java index 930a31bda..02b35c3d6 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/InstallationFinishedEvent.java @@ -7,6 +7,6 @@ public class InstallationFinishedEvent extends Event { public InstallationFinishedEvent() { - super(Type.CUSTOM_EVENT); + super(); } } diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java index 85ef50949..a35312129 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java @@ -36,7 +36,7 @@ public class UserManager implements IConf public final String getUserByAddress(final String search) { - final List usernames = users.getKeys(null); + final Set usernames = users.getKeys(false); for (String username : usernames) { final String address = users.getString(username + "." + ADDRESS, null); @@ -73,7 +73,7 @@ public class UserManager implements IConf { users.load(); spyusers.clear(); - final List keys = users.getKeys(null); + final Set keys = users.getKeys(false); for (String key : keys) { if (isSpy(key)) diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java index 72bdb113d..bb44d3127 100644 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java +++ b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java @@ -183,7 +183,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager if (config.getBoolean("log-enabled", false)) { LOGGER.addHandler(this); - logUsers = config.getStringList("log-users", new ArrayList()); + logUsers = config.getStringList("log-users"); final String level = config.getString("log-level", "info"); try { @@ -351,7 +351,7 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager private void sendCommand(final Chat chat, final String message) { - if (config.getStringList("op-users", new ArrayList()).contains(StringUtils.parseBareAddress(chat.getParticipant()))) + if (config.getStringList("op-users").contains(StringUtils.parseBareAddress(chat.getParticipant()))) { try { -- cgit v1.2.3