From 32840e68f361c61ea42b77d33eb67d6164c136a4 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 21 Feb 2012 19:17:22 +0100 Subject: Sign settings --- .../essentials/signs/EssentialsSignsPlugin.java | 37 ++++++------- .../earth2me/essentials/signs/ISignsPlugin.java | 7 +++ .../essentials/signs/SignBlockListener.java | 16 +++--- .../essentials/signs/SignEntityListener.java | 8 ++- .../essentials/signs/SignPlayerListener.java | 8 ++- .../com/earth2me/essentials/signs/SignsConfig.java | 19 +++++++ .../essentials/signs/SignsConfigHolder.java | 64 ++++++++++++++++++++++ 7 files changed, 125 insertions(+), 34 deletions(-) create mode 100644 EssentialsSigns/src/com/earth2me/essentials/signs/ISignsPlugin.java create mode 100644 EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfig.java create mode 100644 EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfigHolder.java (limited to 'EssentialsSigns/src/com/earth2me/essentials/signs') diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/EssentialsSignsPlugin.java b/EssentialsSigns/src/com/earth2me/essentials/signs/EssentialsSignsPlugin.java index 986624125..6f21a0f1a 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/EssentialsSignsPlugin.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/EssentialsSignsPlugin.java @@ -5,16 +5,17 @@ import com.earth2me.essentials.api.IEssentials; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.Bukkit; -import org.bukkit.event.Event; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -public class EssentialsSignsPlugin extends JavaPlugin +public class EssentialsSignsPlugin extends JavaPlugin implements ISignsPlugin { private static final transient Logger LOGGER = Bukkit.getLogger(); private transient IEssentials ess; + private transient SignsConfigHolder config; + @Override public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); @@ -28,35 +29,29 @@ public class EssentialsSignsPlugin extends JavaPlugin this.setEnabled(false); return; } - - final SignBlockListener signBlockListener = new SignBlockListener(ess); - pluginManager.registerEvent(Event.Type.SIGN_CHANGE, signBlockListener, Event.Priority.Highest, this); - pluginManager.registerEvent(Event.Type.BLOCK_PLACE, signBlockListener, Event.Priority.Low, this); - pluginManager.registerEvent(Event.Type.BLOCK_BREAK, signBlockListener, Event.Priority.Highest, this); - pluginManager.registerEvent(Event.Type.BLOCK_IGNITE, signBlockListener, Event.Priority.Low, this); - pluginManager.registerEvent(Event.Type.BLOCK_BURN, signBlockListener, Event.Priority.Low, this); - pluginManager.registerEvent(Event.Type.BLOCK_PISTON_EXTEND, signBlockListener, Event.Priority.Low, this); - pluginManager.registerEvent(Event.Type.BLOCK_PISTON_RETRACT, signBlockListener, Event.Priority.Low, this); - - final SignPlayerListener signPlayerListener = new SignPlayerListener(ess); - pluginManager.registerEvent(Event.Type.PLAYER_INTERACT, signPlayerListener, Event.Priority.Low, this); - - final SignEntityListener signEntityListener = new SignEntityListener(ess); - pluginManager.registerEvent(Event.Type.ENTITY_EXPLODE, signEntityListener, Event.Priority.Low, this); - pluginManager.registerEvent(Event.Type.ENDERMAN_PICKUP, signEntityListener, Event.Priority.Low, this); - //final SignBlockListener signBlockListener = new SignBlockListener(ess); + + final SignBlockListener signBlockListener = new SignBlockListener(ess, this); pluginManager.registerEvents(signBlockListener, this); - //final SignPlayerListener signPlayerListener = new SignPlayerListener(ess); + final SignPlayerListener signPlayerListener = new SignPlayerListener(ess, this); pluginManager.registerEvents(signPlayerListener, this); - //final SignEntityListener signEntityListener = new SignEntityListener(ess); + final SignEntityListener signEntityListener = new SignEntityListener(ess, this); pluginManager.registerEvents(signEntityListener, this); + config = new SignsConfigHolder(ess, this); + LOGGER.info(_("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team")); } + @Override public void onDisable() { } + + @Override + public SignsConfigHolder getSettings() + { + return config; + } } diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/ISignsPlugin.java b/EssentialsSigns/src/com/earth2me/essentials/signs/ISignsPlugin.java new file mode 100644 index 000000000..98030a6e6 --- /dev/null +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/ISignsPlugin.java @@ -0,0 +1,7 @@ +package com.earth2me.essentials.signs; + +import com.earth2me.essentials.api.IEssentialsModule; + +public interface ISignsPlugin extends IEssentialsModule { + SignsConfigHolder getSettings(); +} diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignBlockListener.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignBlockListener.java index d7c53ac44..b16cdb07e 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -17,11 +17,13 @@ import org.bukkit.event.block.*; public class SignBlockListener implements Listener { private final transient IEssentials ess; + private final transient ISignsPlugin plugin; private final static Logger LOGGER = Logger.getLogger("Minecraft"); - public SignBlockListener(final IEssentials ess) + public SignBlockListener(final IEssentials ess, final ISignsPlugin plugin) { this.ess = ess; + this.plugin = plugin; } @EventHandler(priority = EventPriority.HIGHEST) @@ -45,7 +47,7 @@ public class SignBlockListener implements Listener { final Sign csign = (Sign)block.getState(); - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()) && !sign.onSignBreak(block, player, ess)) @@ -62,7 +64,7 @@ public class SignBlockListener implements Listener LOGGER.log(Level.INFO, "Prevented that a block was broken next to a sign."); return true; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBreak(block, player, ess)) @@ -158,7 +160,7 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBurn(block, ess)) @@ -186,7 +188,7 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockIgnite(block, ess)) @@ -210,7 +212,7 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPush(block, ess)) @@ -236,7 +238,7 @@ public class SignBlockListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockPush(block, ess)) diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignEntityListener.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignEntityListener.java index 1b540c807..96d5e7222 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/SignEntityListener.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignEntityListener.java @@ -13,10 +13,12 @@ import org.bukkit.event.entity.EntityExplodeEvent; public class SignEntityListener implements Listener { private final transient IEssentials ess; + private final transient ISignsPlugin plugin; - public SignEntityListener(final IEssentials ess) + public SignEntityListener(final IEssentials ess, final ISignsPlugin plugin) { this.ess = ess; + this.plugin = plugin; } @EventHandler(priority = EventPriority.LOW) @@ -32,7 +34,7 @@ public class SignEntityListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType())) { @@ -60,7 +62,7 @@ public class SignEntityListener implements Listener event.setCancelled(true); return; } - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBreak(block, ess)) diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignPlayerListener.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignPlayerListener.java index 11e4fb2b4..3aed5d155 100644 --- a/EssentialsSigns/src/com/earth2me/essentials/signs/SignPlayerListener.java +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignPlayerListener.java @@ -14,10 +14,12 @@ import org.bukkit.event.player.PlayerInteractEvent; public class SignPlayerListener implements Listener { private final transient IEssentials ess; + private final transient ISignsPlugin plugin; - public SignPlayerListener(final IEssentials ess) + public SignPlayerListener(final IEssentials ess, final ISignsPlugin plugin) { this.ess = ess; + this.plugin = plugin; } @EventHandler(priority = EventPriority.LOW) @@ -41,7 +43,7 @@ public class SignPlayerListener implements Listener return; } final Sign csign = (Sign)block.getState(); - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())) { @@ -53,7 +55,7 @@ public class SignPlayerListener implements Listener } else { - for (EssentialsSign sign : ess.getSettings().enabledSigns()) + for (EssentialsSign sign : plugin.getSettings().getEnabledSigns()) { if (sign.getBlocks().contains(block.getType()) && !sign.onBlockInteract(block, event.getPlayer(), ess)) diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfig.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfig.java new file mode 100644 index 000000000..c40e8f184 --- /dev/null +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfig.java @@ -0,0 +1,19 @@ +package com.earth2me.essentials.signs; + +import com.earth2me.essentials.storage.StorageObject; +import java.util.HashMap; +import java.util.Map; + +public class SignsConfig implements StorageObject { + private Map signs = new HashMap(); + + public Map getSigns() + { + return signs; + } + + public void setSigns(Map signs) + { + this.signs = signs; + } +} diff --git a/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfigHolder.java b/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfigHolder.java new file mode 100644 index 000000000..dcf436b03 --- /dev/null +++ b/EssentialsSigns/src/com/earth2me/essentials/signs/SignsConfigHolder.java @@ -0,0 +1,64 @@ +package com.earth2me.essentials.signs; + +import com.earth2me.essentials.api.IEssentials; +import com.earth2me.essentials.storage.AsyncStorageObjectHolder; +import java.io.File; +import java.io.IOException; +import java.util.*; +import org.bukkit.plugin.Plugin; + + +public class SignsConfigHolder extends AsyncStorageObjectHolder +{ + private final Plugin plugin; + private Set enabledSigns = new HashSet(); + + public SignsConfigHolder(final IEssentials ess, final Plugin plugin) + { + super(ess, SignsConfig.class); + this.plugin = plugin; + onReload(); + acquireReadLock(); + try + { + Map signs = getData().getSigns(); + for (Map.Entry entry : signs.entrySet()) + { + Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH)); + if (sign != null && entry.getValue()) + { + enabledSigns.add(sign.getSign()); + } + } + } + finally + { + unlock(); + } + acquireWriteLock(); + try + { + Map signs = new HashMap(); + for (Signs sign : Signs.values()) + { + signs.put(sign.toString(), enabledSigns.contains(sign.getSign())); + } + getData().setSigns(signs); + } + finally + { + unlock(); + } + } + + @Override + public File getStorageFile() throws IOException + { + return new File(plugin.getDataFolder(), "config.yml"); + } + + public Set getEnabledSigns() + { + return enabledSigns; + } +} -- cgit v1.2.3