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..e50e9c16f 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,37 @@ 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); + 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 +600,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..e57919ab1 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)) { @@ -159,9 +158,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 +186,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 +210,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 +236,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..3ad4e3ce8 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -166,8 +166,28 @@ kits: - 278 1 - 279 1 -# Disable all signs -signs-disabled: false +# 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 + #- buy + #- sell + #- trade + #- free + #- disposal + #- warp + #- kit + #- mail + #- enchant + #- gamemode + #- heal + #- spawnmob + #- time + #- weather + #- protection # Backup runs a command while saving is disabled backup: 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.