summaryrefslogtreecommitdiffstats
path: root/EssentialsProtect/src/com/earth2me/essentials/protect
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-11-30 21:25:11 +0100
committersnowleo <schneeleo@gmail.com>2011-11-30 21:25:11 +0100
commit1797b59b75dfaa336f6149bf2249fc65cc18f122 (patch)
treede78872b015285f25884071859c9c81d9ad8c05f /EssentialsProtect/src/com/earth2me/essentials/protect
parent3888b08f6d406ae45e3b9fe308c48ba8631fea53 (diff)
downloadEssentials-1797b59b75dfaa336f6149bf2249fc65cc18f122.tar
Essentials-1797b59b75dfaa336f6149bf2249fc65cc18f122.tar.gz
Essentials-1797b59b75dfaa336f6149bf2249fc65cc18f122.tar.lz
Essentials-1797b59b75dfaa336f6149bf2249fc65cc18f122.tar.xz
Essentials-1797b59b75dfaa336f6149bf2249fc65cc18f122.zip
Allow EssentialsProtect to go into emergency mode, if Essentials core is not present at all.
Diffstat (limited to 'EssentialsProtect/src/com/earth2me/essentials/protect')
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java124
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java117
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java6
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java2
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java4
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java19
6 files changed, 169 insertions, 103 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java
new file mode 100644
index 000000000..569123cd5
--- /dev/null
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java
@@ -0,0 +1,124 @@
+package com.earth2me.essentials.protect;
+
+import com.earth2me.essentials.IConf;
+import com.earth2me.essentials.IEssentials;
+import com.earth2me.essentials.User;
+import com.earth2me.essentials.protect.data.ProtectedBlockMemory;
+import com.earth2me.essentials.protect.data.ProtectedBlockMySQL;
+import com.earth2me.essentials.protect.data.ProtectedBlockSQLite;
+import java.beans.PropertyVetoException;
+import static com.earth2me.essentials.I18n._;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+
+
+public class EssentialsConnect
+{
+ private static final Logger LOGGER = Logger.getLogger("Minecraft");
+ private final transient IEssentials ess;
+ private final transient IProtect protect;
+
+ public EssentialsConnect(Plugin essPlugin, Plugin essProtect)
+ {
+ if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion()))
+ {
+ LOGGER.log(Level.WARNING, _("versionMismatchAll"));
+ }
+ ess = (IEssentials)essPlugin;
+ protect = (IProtect)essProtect;
+ ProtectReloader pr = new ProtectReloader();
+ pr.reloadConfig();
+ ess.addReloadListener(pr);
+ LOGGER.info(_("loadinfo", essProtect.getDescription().getName(), essProtect.getDescription().getVersion(), "essentials team"));
+
+ }
+
+ public void onDisable()
+ {
+ }
+
+ public IEssentials getEssentials()
+ {
+ return ess;
+ }
+
+ public void alert(final User user, final String item, final String type)
+ {
+ final Location loc = user.getLocation();
+ final String warnMessage = _("alertFormat", user.getName(), type, item,
+ loc.getWorld().getName() + "," + loc.getBlockX() + ","
+ + loc.getBlockY() + "," + loc.getBlockZ());
+ LOGGER.log(Level.WARNING, warnMessage);
+ for (Player p : ess.getServer().getOnlinePlayers())
+ {
+ final User alertUser = ess.getUser(p);
+ if (alertUser.isAuthorized("essentials.protect.alerts"))
+ {
+ alertUser.sendMessage(warnMessage);
+ }
+ }
+ }
+
+
+ private class ProtectReloader implements IConf
+ {
+ @Override
+ public void reloadConfig()
+ {
+ if (protect.getStorage() != null)
+ {
+ protect.getStorage().onPluginDeactivation();
+ }
+ for (ProtectConfig protectConfig : ProtectConfig.values())
+ {
+ if (protectConfig.isList())
+ {
+ protect.getSettingsList().put(protectConfig, ess.getSettings().getProtectList(protectConfig.getConfigName()));
+ }
+ else if (protectConfig.isString())
+ {
+ protect.getSettingsString().put(protectConfig, ess.getSettings().getProtectString(protectConfig.getConfigName()));
+ }
+ else
+ {
+ protect.getSettingsBoolean().put(protectConfig, ess.getSettings().getProtectBoolean(protectConfig.getConfigName(), protectConfig.getDefaultValueBoolean()));
+ }
+
+ }
+
+ if (protect.getSettingString(ProtectConfig.datatype).equalsIgnoreCase("mysql"))
+ {
+ try
+ {
+ protect.setStorage(new ProtectedBlockMySQL(
+ protect.getSettingString(ProtectConfig.mysqlDB),
+ protect.getSettingString(ProtectConfig.dbUsername),
+ protect.getSettingString(ProtectConfig.dbPassword)));
+ }
+ catch (PropertyVetoException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+ else
+ {
+ try
+ {
+ protect.setStorage(new ProtectedBlockSQLite("jdbc:sqlite:plugins/Essentials/EssentialsProtect.db"));
+ }
+ catch (PropertyVetoException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+ if (protect.getSettingBool(ProtectConfig.memstore))
+ {
+ protect.setStorage(new ProtectedBlockMemory(protect.getStorage(), protect));
+ }
+
+ }
+ }
+}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
index 13e931f8d..e313298cd 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
@@ -1,14 +1,6 @@
package com.earth2me.essentials.protect;
-import static com.earth2me.essentials.I18n._;
-import com.earth2me.essentials.IConf;
-import com.earth2me.essentials.IEssentials;
-import com.earth2me.essentials.User;
import com.earth2me.essentials.protect.data.IProtectedBlock;
-import com.earth2me.essentials.protect.data.ProtectedBlockMemory;
-import com.earth2me.essentials.protect.data.ProtectedBlockMySQL;
-import com.earth2me.essentials.protect.data.ProtectedBlockSQLite;
-import java.beans.PropertyVetoException;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
@@ -16,15 +8,15 @@ import java.util.logging.Filter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
-import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.Event.Type;
+import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
-public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
+public class EssentialsProtect extends JavaPlugin implements IProtect
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private static com.mchange.v2.log.MLogger C3P0logger;
@@ -32,7 +24,7 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
private final transient Map<ProtectConfig, String> settingsString = new EnumMap<ProtectConfig, String>(ProtectConfig.class);
private final transient Map<ProtectConfig, List<Integer>> settingsList = new EnumMap<ProtectConfig, List<Integer>>(ProtectConfig.class);
private transient IProtectedBlock storage = null;
- public transient IEssentials ess = null;
+ private transient EssentialsConnect ess = null;
@Override
public void onLoad()
@@ -50,15 +42,13 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
public void onEnable()
{
final PluginManager pm = this.getServer().getPluginManager();
- ess = (IEssentials)pm.getPlugin("Essentials");
- if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
+ final Plugin essPlugin = pm.getPlugin("Essentials");
+ if (essPlugin == null || !essPlugin.isEnabled())
{
- LOGGER.log(Level.WARNING, _("versionMismatchAll"));
- }
- if (!ess.isEnabled()) {
enableEmergencyMode(pm);
return;
}
+ ess = new EssentialsConnect(essPlugin, this);
final EssentialsProtectPlayerListener playerListener = new EssentialsProtectPlayerListener(this);
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.Low, this);
@@ -84,10 +74,6 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
pm.registerEvent(Type.LIGHTNING_STRIKE, weatherListener, Priority.Highest, this);
pm.registerEvent(Type.THUNDER_CHANGE, weatherListener, Priority.Highest, this);
pm.registerEvent(Type.WEATHER_CHANGE, weatherListener, Priority.Highest, this);
-
- reloadConfig();
- ess.addReloadListener(this);
- LOGGER.info(_("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), "essentials team"));
}
private void enableEmergencyMode(final PluginManager pm)
@@ -117,81 +103,35 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
}
@Override
- public void alert(final User user, final String item, final String type)
+ public IProtectedBlock getStorage()
{
- final Location loc = user.getLocation();
- final String warnMessage = _("alertFormat", user.getName(), type, item,
- loc.getWorld().getName() + "," + loc.getBlockX() + ","
- + loc.getBlockY() + "," + loc.getBlockZ());
- LOGGER.log(Level.WARNING, warnMessage);
- for (Player p : this.getServer().getOnlinePlayers())
- {
- final User alertUser = ess.getUser(p);
- if (alertUser.isAuthorized("essentials.protect.alerts"))
- {
- alertUser.sendMessage(warnMessage);
- }
- }
+ return storage;
}
- public void reloadConfig()
+ @Override
+ public void setStorage(IProtectedBlock pb)
{
- if (storage != null)
- {
- storage.onPluginDeactivation();
- }
- for (ProtectConfig protectConfig : ProtectConfig.values())
- {
- if (protectConfig.isList())
- {
- settingsList.put(protectConfig, ess.getSettings().getProtectList(protectConfig.getConfigName()));
- }
- else if (protectConfig.isString())
- {
- settingsString.put(protectConfig, ess.getSettings().getProtectString(protectConfig.getConfigName()));
- }
- else
- {
- settingsBoolean.put(protectConfig, ess.getSettings().getProtectBoolean(protectConfig.getConfigName(), protectConfig.getDefaultValueBoolean()));
- }
+ storage = pb;
+ }
- }
+ public EssentialsConnect getEssentialsConnect()
+ {
+ return ess;
+ }
+
+ public Map<ProtectConfig, Boolean> getSettingsBoolean()
+ {
+ return settingsBoolean;
+ }
- if (getSettingString(ProtectConfig.datatype).equalsIgnoreCase("mysql"))
- {
- try
- {
- storage = new ProtectedBlockMySQL(
- getSettingString(ProtectConfig.mysqlDB),
- getSettingString(ProtectConfig.dbUsername),
- getSettingString(ProtectConfig.dbPassword));
- }
- catch (PropertyVetoException ex)
- {
- LOGGER.log(Level.SEVERE, null, ex);
- }
- }
- else
- {
- try
- {
- storage = new ProtectedBlockSQLite("jdbc:sqlite:plugins/Essentials/EssentialsProtect.db");
- }
- catch (PropertyVetoException ex)
- {
- LOGGER.log(Level.SEVERE, null, ex);
- }
- }
- if (getSettingBool(ProtectConfig.memstore))
- {
- storage = new ProtectedBlockMemory(storage, this);
- }
+ public Map<ProtectConfig, String> getSettingsString()
+ {
+ return settingsString;
}
- @Override
- public IProtectedBlock getStorage()
+ public Map<ProtectConfig, List<Integer>> getSettingsList()
{
- return storage;
+ return settingsList;
}
@Override
@@ -223,9 +163,4 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
{
}
}
-
- public IEssentials getEssentials()
- {
- return ess;
- }
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
index a14925ccd..03ad19cb4 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
@@ -20,7 +20,7 @@ public class EssentialsProtectBlockListener extends BlockListener
public EssentialsProtectBlockListener(final IProtect parent)
{
this.prot = parent;
- this.ess = prot.getEssentials();
+ this.ess = prot.getEssentialsConnect().getEssentials();
}
@Override
@@ -50,7 +50,7 @@ public class EssentialsProtectBlockListener extends BlockListener
if (prot.checkProtectionItems(ProtectConfig.alert_on_placement, id))
{
- prot.alert(user, blockPlaced.getType().toString(), _("alertPlaced"));
+ prot.getEssentialsConnect().alert(user, blockPlaced.getType().toString(), _("alertPlaced"));
}
final Block below = blockPlaced.getRelative(BlockFace.DOWN);
@@ -248,7 +248,7 @@ public class EssentialsProtectBlockListener extends BlockListener
if (prot.checkProtectionItems(ProtectConfig.alert_on_break, typeId))
{
- prot.alert(user, type.toString(), _("alertBroke"));
+ prot.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
}
final IProtectedBlock storage = prot.getStorage();
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
index cd054d732..fbbb321f3 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
@@ -21,7 +21,7 @@ public class EssentialsProtectEntityListener extends EntityListener
public EssentialsProtectEntityListener(final IProtect prot)
{
this.prot = prot;
- this.ess = prot.getEssentials();
+ this.ess = prot.getEssentialsConnect().getEssentials();
}
@Override
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
index 98daecb97..ad7831a53 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
@@ -19,7 +19,7 @@ public class EssentialsProtectPlayerListener extends PlayerListener
public EssentialsProtectPlayerListener(final IProtect prot)
{
this.prot = prot;
- this.ess = prot.getEssentials();
+ this.ess = prot.getEssentialsConnect().getEssentials();
}
@Override
@@ -83,7 +83,7 @@ public class EssentialsProtectPlayerListener extends PlayerListener
if (item != null
&& prot.checkProtectionItems(ProtectConfig.alert_on_use, item.getTypeId()))
{
- prot.alert(user, item.getType().toString(), _("alertUsed"));
+ prot.getEssentialsConnect().alert(user, item.getType().toString(), _("alertUsed"));
}
}
}
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java
index ac095e33d..afcb6e8ce 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java
@@ -1,14 +1,13 @@
package com.earth2me.essentials.protect;
-import com.earth2me.essentials.IEssentials;
-import com.earth2me.essentials.User;
import com.earth2me.essentials.protect.data.IProtectedBlock;
+import java.util.List;
+import java.util.Map;
+import org.bukkit.plugin.Plugin;
-public interface IProtect
+public interface IProtect extends Plugin
{
- void alert(final User user, final String item, final String type);
-
boolean checkProtectionItems(final ProtectConfig list, final int id);
boolean getSettingBool(final ProtectConfig protectConfig);
@@ -17,5 +16,13 @@ public interface IProtect
IProtectedBlock getStorage();
- IEssentials getEssentials();
+ void setStorage(IProtectedBlock pb);
+
+ EssentialsConnect getEssentialsConnect();
+
+ Map<ProtectConfig, Boolean> getSettingsBoolean();
+
+ Map<ProtectConfig, String> getSettingsString();
+
+ Map<ProtectConfig, List<Integer>> getSettingsList();
}