mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-14 10:34:41 +02:00
Sign settings
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,7 @@
|
||||
package com.earth2me.essentials.signs;
|
||||
|
||||
import com.earth2me.essentials.api.IEssentialsModule;
|
||||
|
||||
public interface ISignsPlugin extends IEssentialsModule {
|
||||
SignsConfigHolder getSettings();
|
||||
}
|
@@ -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))
|
||||
|
@@ -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))
|
||||
|
@@ -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))
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user