1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-14 02:24:16 +02:00

Sign settings

This commit is contained in:
snowleo
2012-02-21 19:17:22 +01:00
parent 4da3f52164
commit 32840e68f3
7 changed files with 124 additions and 33 deletions

View File

@@ -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;
}
}

View File

@@ -0,0 +1,7 @@
package com.earth2me.essentials.signs;
import com.earth2me.essentials.api.IEssentialsModule;
public interface ISignsPlugin extends IEssentialsModule {
SignsConfigHolder getSettings();
}

View File

@@ -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))

View File

@@ -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))

View File

@@ -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))

View File

@@ -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<String, Boolean> signs = new HashMap<String, Boolean>();
public Map<String, Boolean> getSigns()
{
return signs;
}
public void setSigns(Map<String, Boolean> signs)
{
this.signs = signs;
}
}

View File

@@ -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<SignsConfig>
{
private final Plugin plugin;
private Set<EssentialsSign> enabledSigns = new HashSet<EssentialsSign>();
public SignsConfigHolder(final IEssentials ess, final Plugin plugin)
{
super(ess, SignsConfig.class);
this.plugin = plugin;
onReload();
acquireReadLock();
try
{
Map<String, Boolean> signs = getData().getSigns();
for (Map.Entry<String, Boolean> 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<String, Boolean> signs = new HashMap<String, Boolean>();
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<EssentialsSign> getEnabledSigns()
{
return enabledSigns;
}
}