summaryrefslogtreecommitdiffstats
path: root/EssentialsAntiBuild
diff options
context:
space:
mode:
authorementalo <ementalodev@gmx.co.uk>2012-09-27 15:27:25 +0100
committerementalo <ementalodev@gmx.co.uk>2012-09-27 15:27:25 +0100
commit0283adb8c519c82a9d36951cb169811134936b0e (patch)
treeecd9eefb92ec3b6903db68f98f253b16ba450e1c /EssentialsAntiBuild
parent622877dabe24fa623ea6bf88f736086741e4de36 (diff)
downloadEssentials-0283adb8c519c82a9d36951cb169811134936b0e.tar
Essentials-0283adb8c519c82a9d36951cb169811134936b0e.tar.gz
Essentials-0283adb8c519c82a9d36951cb169811134936b0e.tar.lz
Essentials-0283adb8c519c82a9d36951cb169811134936b0e.tar.xz
Essentials-0283adb8c519c82a9d36951cb169811134936b0e.zip
Updating antibuild to use 3.0 configs and perms.
AntiBuild listener still has some conversions to do
Diffstat (limited to 'EssentialsAntiBuild')
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildConfig.java73
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java40
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuild.java24
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java127
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsConnect.java47
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/IAntiBuild.java14
-rw-r--r--EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java177
7 files changed, 316 insertions, 186 deletions
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildConfig.java b/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildConfig.java
deleted file mode 100644
index 82c804b67..000000000
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildConfig.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package net.ess3.antibuild;
-
-
-public enum AntiBuildConfig
-{
- disable_build("protect.disable.build", true),
- disable_use("protect.disable.use", true),
- alert_on_placement("protect.alert.on-placement"),
- alert_on_use("protect.alert.on-use"),
- alert_on_break("protect.alert.on-break"),
- blacklist_placement("protect.blacklist.placement"),
- blacklist_usage("protect.blacklist.usage"),
- blacklist_break("protect.blacklist.break"),
- blacklist_piston("protect.blacklist.piston");
- private final String configName;
- private final String defValueString;
- private final boolean defValueBoolean;
- private final boolean isList;
- private final boolean isString;
-
- private AntiBuildConfig(final String configName)
- {
- this(configName, null, false, true, false);
- }
-
- private AntiBuildConfig(final String configName, final boolean defValueBoolean)
- {
- this(configName, null, defValueBoolean, false, false);
- }
-
- private AntiBuildConfig(final String configName, final String defValueString, final boolean defValueBoolean, final boolean isList, final boolean isString)
- {
- this.configName = configName;
- this.defValueString = defValueString;
- this.defValueBoolean = defValueBoolean;
- this.isList = isList;
- this.isString = isString;
- }
-
- /**
- * @return the configName
- */
- public String getConfigName()
- {
- return configName;
- }
-
- /**
- * @return the default value String
- */
- public String getDefaultValueString()
- {
- return defValueString;
- }
-
- /**
- * @return the default value boolean
- */
- public boolean getDefaultValueBoolean()
- {
- return defValueBoolean;
- }
-
- public boolean isString()
- {
- return isString;
- }
-
- public boolean isList()
- {
- return isList;
- }
-}
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java b/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java
new file mode 100644
index 000000000..60cc5d1a4
--- /dev/null
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/AntiBuildHolder.java
@@ -0,0 +1,40 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package net.ess3.antibuild;
+
+import java.io.File;
+import java.io.IOException;
+import net.ess3.api.IEssentials;
+import net.ess3.settings.antibuild.AntiBuild;
+import net.ess3.storage.AsyncStorageObjectHolder;
+
+
+/**
+ *
+ * @author devhome
+ */
+public class AntiBuildHolder extends AsyncStorageObjectHolder<AntiBuild>
+{
+ public AntiBuildHolder(final IEssentials ess)
+ {
+ super(ess, AntiBuild.class);
+ }
+
+ @Override
+ public File getStorageFile() throws IOException
+ {
+ return new File(ess.getPlugin().getDataFolder(), "protect.yml");
+ }
+
+ @Override
+ public void finishRead()
+ {
+ }
+
+ @Override
+ public void finishWrite()
+ {
+ }
+}
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuild.java b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuild.java
index e7ef71709..50e3f56f2 100644
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuild.java
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuild.java
@@ -12,9 +12,8 @@ import org.bukkit.plugin.java.JavaPlugin;
public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
- private final transient Map<AntiBuildConfig, Boolean> settingsBoolean = new EnumMap<AntiBuildConfig, Boolean>(AntiBuildConfig.class);
- private final transient Map<AntiBuildConfig, List<Integer>> settingsList = new EnumMap<AntiBuildConfig, List<Integer>>(AntiBuildConfig.class);
private transient EssentialsConnect ess = null;
+ private transient AntiBuildHolder settings = null;
@Override
public void onEnable()
@@ -32,7 +31,7 @@ public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild
}
@Override
- public boolean checkProtectionItems(final AntiBuildConfig list, final int id)
+ public boolean checkProtectionItems(final int id)
{
final List<Integer> itemList = settingsList.get(list);
return itemList != null && !itemList.isEmpty() && itemList.contains(id);
@@ -42,24 +41,17 @@ public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild
public EssentialsConnect getEssentialsConnect()
{
return ess;
- }
-
- @Override
- public Map<AntiBuildConfig, Boolean> getSettingsBoolean()
- {
- return settingsBoolean;
- }
-
+ }
+
@Override
- public Map<AntiBuildConfig, List<Integer>> getSettingsList()
+ public AntiBuildHolder getSettings()
{
- return settingsList;
+ return settings;
}
@Override
- public boolean getSettingBool(final AntiBuildConfig protectConfig)
+ public void setSettings(final AntiBuildHolder settings)
{
- final Boolean bool = settingsBoolean.get(protectConfig);
- return bool == null ? protectConfig.getDefaultValueBoolean() : bool;
+ this.settings = settings;
}
}
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java
index bec69ba28..03bce34b6 100644
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsAntiBuildListener.java
@@ -3,6 +3,7 @@ package net.ess3.antibuild;
import java.util.logging.Level;
import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
+import net.ess3.api.IUser;
import net.ess3.user.User;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -23,13 +24,13 @@ import org.bukkit.inventory.ItemStack;
public class EssentialsAntiBuildListener implements Listener
{
- final private transient IAntiBuild prot;
+ final private transient IAntiBuild antib;
final private transient IEssentials ess;
public EssentialsAntiBuildListener(final IAntiBuild parent)
{
- this.prot = parent;
- this.ess = prot.getEssentialsConnect().getEssentials();
+ this.antib = parent;
+ this.ess = antib.getEssentialsConnect().getEssentials();
}
private boolean metaPermCheck(final User user, final String action, final Block block)
@@ -70,73 +71,95 @@ public class EssentialsAntiBuildListener implements Listener
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(final BlockPlaceEvent event)
{
- final User user = ess.getUser(event.getPlayer());
+ final AntiBuildHolder ab = antib.getSettings();
+ ab.acquireReadLock();
+ final IUser user = ess.getUserMap().getUser(event.getPlayer());
final Block block = event.getBlockPlaced();
final int typeId = block.getTypeId();
final Material type = block.getType();
- if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")
- && !metaPermCheck(user, "place", block))
+ try
{
- if (ess.getSettings().warnOnBuildDisallow())
+
+ if (ab.getData().isBuild()
+ && !user.canBuild() && !user.hasPermission("essentials.build")
+ && !Permissions.getPlacePermission(type).isAuthorized(user))
+ //metaPermCheck(user, "place", block)) todo - double check metadata
{
- user.sendMessage(_("antiBuildPlace", type.toString()));
+ if (ab.getData().isWarnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildPlace", type.toString()));
+ }
+ event.setCancelled(true);
+ return;
}
- event.setCancelled(true);
- return;
- }
- if (prot.checkProtectionItems(AntiBuildConfig.blacklist_placement, typeId) && !user.isAuthorized("essentials.protect.exemptplacement"))
- {
- if (ess.getSettings().warnOnBuildDisallow())
+ if (ab.getData().getBlacklist().getPlacement().contains(type) && !Permissions.BLACKLIST_ALLOWPLACEMENT.isAuthorized(user))
+ //antib.checkProtectionItems(AntiBuildConfig.blacklist_placement, typeId) && !user.isAuthorized("essentials.protect.exemptplacement"))
{
- user.sendMessage(_("antiBuildPlace", type.toString()));
+ if (ab.getData().isWarnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildPlace", type.toString()));
+ }
+ event.setCancelled(true);
+ return;
}
- event.setCancelled(true);
- return;
- }
- if (prot.checkProtectionItems(AntiBuildConfig.alert_on_placement, typeId)
- && !user.isAuthorized("essentials.protect.alerts.notrigger"))
+ if (ab.getData().getAlert().getAlertOnPlacement().contains(type)
+ && !Permissions.ALERTS_NOTRIGGER.isAuthorized(user))
+ {
+ antib.getEssentialsConnect().alert(user, type.toString(), _("alertPlaced"));
+ }
+ }
+ finally
{
- prot.getEssentialsConnect().alert(user, type.toString(), _("alertPlaced"));
+ ab.unlock();
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(final BlockBreakEvent event)
{
- final User user = ess.getUser(event.getPlayer());
+ final AntiBuildHolder ab = antib.getSettings();
+ ab.acquireReadLock();
+ final IUser user = ess.getUserMap().getUser(event.getPlayer());
final Block block = event.getBlock();
final int typeId = block.getTypeId();
final Material type = block.getType();
- if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")
- && !metaPermCheck(user, "break", block))
+ try
{
- if (ess.getSettings().warnOnBuildDisallow())
+ if (ab.getData().isBuild() && !user.canBuild() && !user.isAuthorized("essentials.build")
+ && !Permissions.getBreakPermission(type).isAuthorized(user))
+ //!metaPermCheck(user, "break", block))
{
- user.sendMessage(_("antiBuildBreak", type.toString()));
+ if (ab.getData().isWarnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildBreak", type.toString()));
+ }
+ event.setCancelled(true);
+ return;
}
- event.setCancelled(true);
- return;
- }
- if (prot.checkProtectionItems(AntiBuildConfig.blacklist_break, typeId)
- && !user.isAuthorized("essentials.protect.exemptbreak"))
- {
- if (ess.getSettings().warnOnBuildDisallow())
+ if (ab.getData().getBlacklist().getBreaking().contains(type) && !Permissions.BLACKLIST_ALLOWBREAK.isAuthorized(user))
{
- user.sendMessage(_("antiBuildBreak", type.toString()));
+ if (ab.getData().isWarnOnBuildDisallow())
+ {
+ user.sendMessage(_("antiBuildBreak", type.toString()));
+ }
+ event.setCancelled(true);
+ return;
}
- event.setCancelled(true);
- return;
- }
- if (prot.checkProtectionItems(AntiBuildConfig.alert_on_break, typeId)
- && !user.isAuthorized("essentials.protect.alerts.notrigger"))
+ if (antib.checkProtectionItems(AntiBuildConfig.alert_on_break, typeId)
+ && !user.isAuthorized("essentials.protect.alerts.notrigger"))
+ {
+ antib.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
+ }
+ }
+ finally
{
- prot.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
+ ab.unlock();
}
}
@@ -147,7 +170,7 @@ public class EssentialsAntiBuildListener implements Listener
if (entity instanceof Player)
{
final User user = ess.getUser(entity);
- if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")
+ if (antib.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")
&& !metaPermCheck(user, "break", Material.PAINTING.getId()))
{
if (ess.getSettings().warnOnBuildDisallow())
@@ -164,7 +187,7 @@ public class EssentialsAntiBuildListener implements Listener
{
for (Block block : event.getBlocks())
{
- if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId()))
+ if (antib.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId()))
{
event.setCancelled(true);
return;
@@ -180,7 +203,7 @@ public class EssentialsAntiBuildListener implements Listener
return;
}
final Block block = event.getRetractLocation().getBlock();
- if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId()))
+ if (antib.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getTypeId()))
{
event.setCancelled(true);
return;
@@ -195,7 +218,7 @@ public class EssentialsAntiBuildListener implements Listener
final ItemStack item = event.getItem();
if (item != null
- && prot.checkProtectionItems(AntiBuildConfig.blacklist_usage, item.getTypeId())
+ && antib.checkProtectionItems(AntiBuildConfig.blacklist_usage, item.getTypeId())
&& !user.isAuthorized("essentials.protect.exemptusage"))
{
if (ess.getSettings().warnOnBuildDisallow())
@@ -207,13 +230,13 @@ public class EssentialsAntiBuildListener implements Listener
}
if (item != null
- && prot.checkProtectionItems(AntiBuildConfig.alert_on_use, item.getTypeId())
+ && antib.checkProtectionItems(AntiBuildConfig.alert_on_use, item.getTypeId())
&& !user.isAuthorized("essentials.protect.alerts.notrigger"))
{
- prot.getEssentialsConnect().alert(user, item.getType().toString(), _("alertUsed"));
+ antib.getEssentialsConnect().alert(user, item.getType().toString(), _("alertUsed"));
}
- if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ if (antib.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (event.hasItem() && !metaPermCheck(user, "interact", item.getTypeId(), item.getData().getData()))
{
@@ -245,7 +268,7 @@ public class EssentialsAntiBuildListener implements Listener
final User user = ess.getUser(entity);
final ItemStack item = event.getRecipe().getResult();
- if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ if (antib.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "craft", item.getTypeId(), item.getData().getData()))
{
@@ -266,7 +289,7 @@ public class EssentialsAntiBuildListener implements Listener
final User user = ess.getUser(event.getPlayer());
final ItemStack item = event.getItem().getItemStack();
- if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ if (antib.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "pickup", item.getTypeId(), item.getData().getData()))
{
@@ -280,15 +303,15 @@ public class EssentialsAntiBuildListener implements Listener
public void onPlayerDropItem(final PlayerDropItemEvent event)
{
- final User user = ess.getUser(event.getPlayer());
+ final IUser user = ess.getUserMap().getUser(event.getPlayer());
final ItemStack item = event.getItemDrop().getItemStack();
- if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
+ if (antib.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build"))
{
if (!metaPermCheck(user, "drop", item.getTypeId(), item.getData().getData()))
{
event.setCancelled(true);
- user.updateInventory();
+ user.getPlayer().updateInventory();
if (ess.getSettings().warnOnBuildDisallow())
{
user.sendMessage(_("antiBuildDrop", item.getType().toString()));
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsConnect.java b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsConnect.java
index 8391925ce..b9a669348 100644
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsConnect.java
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/EssentialsConnect.java
@@ -1,11 +1,10 @@
package net.ess3.antibuild;
-import net.ess3.api.IConf;
-import net.ess3.api.IEssentials;
-import static net.ess3.I18n._;
import java.util.logging.Level;
import java.util.logging.Logger;
-import net.ess3.user.User;
+import static net.ess3.I18n._;
+import net.ess3.api.IEssentials;
+import net.ess3.api.IUser;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@@ -15,7 +14,7 @@ public class EssentialsConnect
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final transient IEssentials ess;
- private final transient IAntiBuild protect;
+ private final transient IAntiBuild antib;
public EssentialsConnect(Plugin essPlugin, Plugin essProtect)
{
@@ -24,10 +23,8 @@ public class EssentialsConnect
LOGGER.log(Level.WARNING, _("versionMismatchAll"));
}
ess = (IEssentials)essPlugin;
- protect = (IAntiBuild)essProtect;
- AntiBuildReloader pr = new AntiBuildReloader();
- pr.reloadConfig();
- ess.addReloadListener(pr);
+ antib = (IAntiBuild)essProtect;
+ antib.setSettings(new AntiBuildHolder(ess));
}
public void onDisable()
@@ -39,42 +36,20 @@ public class EssentialsConnect
return ess;
}
- public void alert(final User user, final String item, final String type)
+ public void alert(final IUser user, final String item, final String type)
{
- final Location loc = user.getLocation();
+ final Location loc = user.getPlayer().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"))
+ final IUser alertUser = ess.getUserMap().getUser(p);
+ if (Permissions.ALERTS.isAuthorized(alertUser))
{
alertUser.sendMessage(warnMessage);
}
}
}
-
-
- private class AntiBuildReloader implements IConf
- {
- @Override
- public void reloadConfig()
- {
- for (AntiBuildConfig protectConfig : AntiBuildConfig.values())
- {
- if (protectConfig.isList())
- {
- protect.getSettingsList().put(protectConfig, ess.getSettings().getProtectList(protectConfig.getConfigName()));
- }
- else
- {
- protect.getSettingsBoolean().put(protectConfig, ess.getSettings().getProtectBoolean(protectConfig.getConfigName(), protectConfig.getDefaultValueBoolean()));
- }
-
- }
-
- }
- }
-}
+} \ No newline at end of file
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/IAntiBuild.java b/EssentialsAntiBuild/src/net/ess3/antibuild/IAntiBuild.java
index 00e65661f..e65773bd7 100644
--- a/EssentialsAntiBuild/src/net/ess3/antibuild/IAntiBuild.java
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/IAntiBuild.java
@@ -1,19 +1,15 @@
package net.ess3.antibuild;
-import java.util.List;
-import java.util.Map;
-import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.Plugin;
public interface IAntiBuild extends Plugin
{
- boolean checkProtectionItems(final AntiBuildConfig list, final int id);
-
- boolean getSettingBool(final AntiBuildConfig protectConfig);
+ boolean checkProtectionItems(final int id);
EssentialsConnect getEssentialsConnect();
+
+ AntiBuildHolder getSettings();
- Map<AntiBuildConfig, Boolean> getSettingsBoolean();
-
- Map<AntiBuildConfig, List<Integer>> getSettingsList();
+ void setSettings(AntiBuildHolder settings);
}
diff --git a/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java b/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java
new file mode 100644
index 000000000..7088fb0e0
--- /dev/null
+++ b/EssentialsAntiBuild/src/net/ess3/antibuild/Permissions.java
@@ -0,0 +1,177 @@
+package net.ess3.antibuild;
+
+import java.util.EnumMap;
+import java.util.Locale;
+import net.ess3.api.IPermission;
+import net.ess3.bukkit.PermissionFactory;
+import net.ess3.permissions.BasePermission;
+import org.bukkit.Material;
+import org.bukkit.command.CommandSender;
+import org.bukkit.permissions.Permission;
+import org.bukkit.permissions.PermissionDefault;
+
+
+public enum Permissions implements IPermission
+{
+
+ BLACKLIST_ALLOWPLACEMENT,
+ BLACKLIST_ALLOWUSAGE,
+ BLACKLIST_ALLOWBREAK,
+ ALERTS,
+ ALERTS_NOTRIGGER;
+ private static final String base = "essentials.build.";
+ private final String permission;
+ private final PermissionDefault defaultPerm;
+ private transient Permission bukkitPerm = null;
+
+ private Permissions()
+ {
+ this(PermissionDefault.OP);
+ }
+
+ private Permissions(final PermissionDefault defaultPerm)
+ {
+ permission = base + toString().toLowerCase(Locale.ENGLISH).replace('_', '.');
+ this.defaultPerm = defaultPerm;
+ }
+
+ @Override
+ public String getPermissionName()
+ {
+ return permission;
+ }
+
+ @Override
+ public Permission getPermission()
+ {
+ if (bukkitPerm != null)
+ {
+ return bukkitPerm;
+ }
+ else
+ {
+ return PermissionFactory.registerPermission(getPermissionName(), getPermissionDefault());
+ }
+ }
+
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return this.defaultPerm;
+ }
+
+ @Override
+ public boolean isAuthorized(final CommandSender sender)
+ {
+ return sender.hasPermission(getPermission());
+ }
+
+ private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
+
+ public static IPermission getPlacePermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.place.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+
+ public static IPermission getBreakPermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.break.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+
+ public static IPermission getInteractPermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.interact.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+ public static IPermission getCraftPermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.craft.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+
+ public static IPermission getPickupPermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.pickup.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+
+ public static IPermission getDropPermission(final Material mat)
+ {
+ IPermission perm = permissions.get(mat);
+ if (perm == null)
+ {
+ perm = new BasePermission("essentials.drop.", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
+ {
+ @Override
+ public PermissionDefault getPermissionDefault()
+ {
+ return PermissionDefault.TRUE;
+ }
+ };
+ permissions.put(mat, perm);
+ }
+ return perm;
+ }
+}