mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-14 18:44:48 +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.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.event.Event;
|
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
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 static final transient Logger LOGGER = Bukkit.getLogger();
|
||||||
private transient IEssentials ess;
|
private transient IEssentials ess;
|
||||||
|
private transient SignsConfigHolder config;
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
final PluginManager pluginManager = getServer().getPluginManager();
|
final PluginManager pluginManager = getServer().getPluginManager();
|
||||||
@@ -28,35 +29,29 @@ public class EssentialsSignsPlugin extends JavaPlugin
|
|||||||
this.setEnabled(false);
|
this.setEnabled(false);
|
||||||
return;
|
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);
|
final SignBlockListener signBlockListener = new SignBlockListener(ess, this);
|
||||||
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);
|
|
||||||
pluginManager.registerEvents(signBlockListener, this);
|
pluginManager.registerEvents(signBlockListener, this);
|
||||||
|
|
||||||
//final SignPlayerListener signPlayerListener = new SignPlayerListener(ess);
|
final SignPlayerListener signPlayerListener = new SignPlayerListener(ess, this);
|
||||||
pluginManager.registerEvents(signPlayerListener, this);
|
pluginManager.registerEvents(signPlayerListener, this);
|
||||||
|
|
||||||
//final SignEntityListener signEntityListener = new SignEntityListener(ess);
|
final SignEntityListener signEntityListener = new SignEntityListener(ess, this);
|
||||||
pluginManager.registerEvents(signEntityListener, this);
|
pluginManager.registerEvents(signEntityListener, this);
|
||||||
|
|
||||||
|
config = new SignsConfigHolder(ess, this);
|
||||||
|
|
||||||
LOGGER.info(_("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team"));
|
LOGGER.info(_("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onDisable()
|
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
|
public class SignBlockListener implements Listener
|
||||||
{
|
{
|
||||||
private final transient IEssentials ess;
|
private final transient IEssentials ess;
|
||||||
|
private final transient ISignsPlugin plugin;
|
||||||
private final static Logger LOGGER = Logger.getLogger("Minecraft");
|
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.ess = ess;
|
||||||
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
@@ -45,7 +47,7 @@ public class SignBlockListener implements Listener
|
|||||||
{
|
{
|
||||||
final Sign csign = (Sign)block.getState();
|
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())
|
if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())
|
||||||
&& !sign.onSignBreak(block, player, ess))
|
&& !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.");
|
LOGGER.log(Level.INFO, "Prevented that a block was broken next to a sign.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockBreak(block, player, ess))
|
&& !sign.onBlockBreak(block, player, ess))
|
||||||
@@ -158,7 +160,7 @@ public class SignBlockListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockBurn(block, ess))
|
&& !sign.onBlockBurn(block, ess))
|
||||||
@@ -186,7 +188,7 @@ public class SignBlockListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockIgnite(block, ess))
|
&& !sign.onBlockIgnite(block, ess))
|
||||||
@@ -210,7 +212,7 @@ public class SignBlockListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockPush(block, ess))
|
&& !sign.onBlockPush(block, ess))
|
||||||
@@ -236,7 +238,7 @@ public class SignBlockListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockPush(block, ess))
|
&& !sign.onBlockPush(block, ess))
|
||||||
|
@@ -13,10 +13,12 @@ import org.bukkit.event.entity.EntityExplodeEvent;
|
|||||||
public class SignEntityListener implements Listener
|
public class SignEntityListener implements Listener
|
||||||
{
|
{
|
||||||
private final transient IEssentials ess;
|
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.ess = ess;
|
||||||
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
@@ -32,7 +34,7 @@ public class SignEntityListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType()))
|
if (sign.getBlocks().contains(block.getType()))
|
||||||
{
|
{
|
||||||
@@ -60,7 +62,7 @@ public class SignEntityListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockBreak(block, ess))
|
&& !sign.onBlockBreak(block, ess))
|
||||||
|
@@ -14,10 +14,12 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
public class SignPlayerListener implements Listener
|
public class SignPlayerListener implements Listener
|
||||||
{
|
{
|
||||||
private final transient IEssentials ess;
|
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.ess = ess;
|
||||||
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
@@ -41,7 +43,7 @@ public class SignPlayerListener implements Listener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Sign csign = (Sign)block.getState();
|
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()))
|
if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()))
|
||||||
{
|
{
|
||||||
@@ -53,7 +55,7 @@ public class SignPlayerListener implements Listener
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (EssentialsSign sign : ess.getSettings().enabledSigns())
|
for (EssentialsSign sign : plugin.getSettings().getEnabledSigns())
|
||||||
{
|
{
|
||||||
if (sign.getBlocks().contains(block.getType())
|
if (sign.getBlocks().contains(block.getType())
|
||||||
&& !sign.onBlockInteract(block, event.getPlayer(), ess))
|
&& !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