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

Better .* Permission classes

This commit is contained in:
snowleo
2012-10-03 17:52:01 +02:00
parent b677dbfb25
commit a8c8e493b9
38 changed files with 185 additions and 381 deletions

View File

@@ -7,7 +7,7 @@ import java.util.TreeSet;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.bukkit.Enchantments;
import net.ess3.permissions.EnchantPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.utils.Util;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
@@ -30,7 +30,7 @@ public class Commandenchant extends EssentialsCommand
for (Map.Entry<String, Enchantment> entry : Enchantments.entrySet())
{
final String enchantmentName = entry.getValue().getName().toLowerCase(Locale.ENGLISH);
if (enchantmentslist.contains(enchantmentName) || EnchantPermissions.getPermission(enchantmentName).isAuthorized(user))
if (enchantmentslist.contains(enchantmentName) || Permissions.ENCHANT.isAuthorized(user, enchantmentName))
{
enchantmentslist.add(entry.getKey());
//enchantmentslist.add(enchantmentName);
@@ -85,7 +85,7 @@ public class Commandenchant extends EssentialsCommand
throw new Exception(_("enchantmentNotFound"));
}
final String enchantmentName = enchantment.getName().toLowerCase(Locale.ENGLISH);
if (user != null && !EnchantPermissions.getPermission(enchantmentName).isAuthorized(user))
if (user != null && !Permissions.ENCHANT.isAuthorized(user, enchantmentName))
{
throw new Exception(_("enchantmentPerm", enchantmentName));
}

View File

@@ -3,7 +3,7 @@ package net.ess3.commands;
import java.util.Locale;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.permissions.GivePermissions;
import net.ess3.permissions.Permissions;
import net.ess3.utils.Util;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@@ -26,7 +26,7 @@ public class Commandgive extends EssentialsCommand
final ItemStack stack = ess.getItemDb().get(args[1], giveTo);
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (!GivePermissions.getPermission(stack.getType()).isAuthorized(sender))
if (!Permissions.GIVE.isAuthorized(sender, stack))
{
throw new Exception(_("cantSpawnItem", itemname));
}

View File

@@ -6,7 +6,6 @@ import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.WorldPermissions;
import net.ess3.utils.Util;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -98,7 +97,7 @@ public class Commandhome extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
if (user.getPlayer().getWorld() != loc.getWorld() && ess.getSettings().getData().getGeneral().isWorldHomePermissions()
&& !WorldPermissions.getPermission(loc.getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, loc.getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + loc.getWorld().getName()));
}

View File

@@ -3,7 +3,7 @@ package net.ess3.commands;
import java.util.Locale;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.permissions.ItemPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
@@ -20,7 +20,7 @@ public class Commanditem extends EssentialsCommand
final ItemStack stack = ess.getItemDb().get(args[0], user);
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (!ItemPermissions.getPermission(stack.getType()).isAuthorized(user))
if (!Permissions.ITEMSPAWN.isAuthorized(user, stack))
{
throw new Exception(_("cantSpawnItem", itemname));
}

View File

@@ -5,7 +5,7 @@ import java.util.Locale;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.KitPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.settings.Kit;
import net.ess3.utils.Util;
@@ -26,7 +26,7 @@ public class Commandkit extends EssentialsCommand
{
for (String kitName : kitList)
{
if (!KitPermissions.getPermission(kitName).isAuthorized(user))
if (!Permissions.KITS.isAuthorized(user, kitName))
{
kitList.remove(kitName);
}
@@ -40,7 +40,7 @@ public class Commandkit extends EssentialsCommand
final String kitName = args[0].toLowerCase(Locale.ENGLISH);
final Kit kit = ess.getKits().getKit(kitName);
if (!KitPermissions.getPermission(kitName).isAuthorized(user))
if (!Permissions.KITS.isAuthorized(user, kitName))
{
throw new Exception(_("noKitPermission", "essentials.kit." + kitName));
}

View File

@@ -4,7 +4,6 @@ import java.util.Locale;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.ItemPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.inventory.ItemStack;
@@ -39,7 +38,7 @@ public class Commandmore extends EssentialsCommand
throw new NoChargeException();
}
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (!ItemPermissions.getPermission(stack.getType()).isAuthorized(user))
if (!Permissions.ITEMSPAWN.isAuthorized(user, stack))
{
throw new Exception(_("cantSpawnItem", itemname));
}

View File

@@ -3,7 +3,7 @@ package net.ess3.commands;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.api.IWarps;
import net.ess3.permissions.WarpPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.Location;
@@ -36,7 +36,7 @@ public class Commandsetwarp extends EssentialsCommand
{
}
if (warpLoc == null || WarpPermissions.getPermission("overwrite." + args[0]).isAuthorized(user))
if (warpLoc == null || Permissions.WARP_OVERWRITE.isAuthorized(user, args[0]))
{
warps.setWarp(args[0], loc);

View File

@@ -5,7 +5,7 @@ import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.bukkit.LivingEntities;
import net.ess3.economy.Trade;
import net.ess3.permissions.SpawnerPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.utils.LocationUtil;
import net.ess3.utils.Util;
import org.bukkit.Location;
@@ -41,7 +41,7 @@ public class Commandspawner extends EssentialsCommand
user.sendMessage(_("invalidMob"));
return;
}
if (!SpawnerPermissions.getPermission(mob.getName()).isAuthorized(user))
if (!Permissions.SPAWNER.isAuthorized(user, mob.getName()))
{
throw new Exception(_("unableToSpawnMob"));
}

View File

@@ -9,7 +9,7 @@ import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.bukkit.LivingEntities;
import net.ess3.bukkit.LivingEntities.MobException;
import net.ess3.permissions.SpawnmobPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.utils.LocationUtil;
import net.ess3.utils.Util;
import org.bukkit.DyeColor;
@@ -18,7 +18,7 @@ import org.bukkit.block.Block;
import org.bukkit.entity.*;
import org.bukkit.entity.Villager.Profession;
import org.bukkit.material.Colorable;
//TODO - Bukkit cleanup
public class Commandspawnmob extends EssentialsCommand
{
@@ -31,7 +31,7 @@ public class Commandspawnmob extends EssentialsCommand
final Set<String> availableList = new HashSet<String>();
for (String mob : mobList)
{
if (SpawnmobPermissions.getPermission(mob).isAuthorized(user))
if (Permissions.SPAWNMOB.isAuthorized(user, mob))
{
availableList.add(mob);
}
@@ -76,7 +76,7 @@ public class Commandspawnmob extends EssentialsCommand
throw new Exception(_("invalidMob"));
}
if (!SpawnmobPermissions.getPermission(mob.getName()).isAuthorized(user))
if (!Permissions.SPAWNMOB.isAuthorized(user, mob.getName()))
{
throw new Exception(_("noPermToSpawnMob"));
}
@@ -111,7 +111,7 @@ public class Commandspawnmob extends EssentialsCommand
return;
}
if (!SpawnmobPermissions.getPermission(mobMount.getName()).isAuthorized(user))
if (!Permissions.SPAWNMOB.isAuthorized(user, mobMount.getName()))
{
throw new Exception(_("noPermToSpawnMob"));
}
@@ -279,6 +279,6 @@ public class Commandspawnmob extends EssentialsCommand
((Villager)spawned).setProfession(prof);
}
}
}
}
}
}

View File

@@ -7,7 +7,6 @@ import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.WorldPermissions;
import org.bukkit.command.CommandSender;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -34,7 +33,7 @@ public class Commandtp extends EssentialsCommand
throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName()));
}
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(player.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, player.getPlayer().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + player.getPlayer().getWorld().getName()));
}
@@ -66,7 +65,7 @@ public class Commandtp extends EssentialsCommand
throw new Exception(_("teleportDisabled", toPlayer.getPlayer().getDisplayName()));
}
if (target.getPlayer().getWorld() != toPlayer.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(toPlayer.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, toPlayer.getPlayer().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + toPlayer.getPlayer().getWorld().getName()));
}
@@ -86,7 +85,7 @@ public class Commandtp extends EssentialsCommand
sender.sendMessage(_("teleporting"));
final IUser target = ess.getUserMap().getUser(args[0]);
final IUser toPlayer =ess.getUserMap().getUser(args[1]);
final IUser toPlayer = ess.getUserMap().getUser(args[1]);
target.getTeleport().now(toPlayer.getPlayer(), false, TeleportCause.COMMAND);
target.sendMessage(_("teleportAtoB", Console.NAME, toPlayer.getPlayer().getDisplayName()));
}

View File

@@ -4,7 +4,7 @@ import lombok.Cleanup;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.WorldPermissions;
import net.ess3.permissions.Permissions;
public class Commandtpa extends EssentialsCommand
@@ -28,7 +28,7 @@ public class Commandtpa extends EssentialsCommand
ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, user.getPlayer().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + player.getPlayer().getWorld().getName()));
}

View File

@@ -4,7 +4,7 @@ import lombok.Cleanup;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.WorldPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -48,7 +48,7 @@ public class Commandtpaall extends EssentialsCommand
ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, user.getPlayer().getWorld().getName()))
{
continue;
}

View File

@@ -4,7 +4,7 @@ import lombok.Cleanup;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.WorldPermissions;
import net.ess3.permissions.Permissions;
public class Commandtpahere extends EssentialsCommand
@@ -28,7 +28,7 @@ public class Commandtpahere extends EssentialsCommand
ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, user.getPlayer().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + user.getPlayer().getWorld().getName()));
}

View File

@@ -4,7 +4,7 @@ import lombok.Cleanup;
import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.WorldPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -44,7 +44,7 @@ public class Commandtpall extends EssentialsCommand
settings.acquireReadLock();
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getPlayer().getWorld().getName()).isAuthorized(user))
&& !Permissions.WORLD.isAuthorized(user, user.getPlayer().getWorld().getName()))
{
continue;
}

View File

@@ -5,7 +5,6 @@ import static net.ess3.I18n._;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.WorldPermissions;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -32,7 +31,7 @@ public class Commandtpohere extends EssentialsCommand
settings.acquireReadLock();
//todo - common method
if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getPlayer().getWorld().getName()).isAuthorized(player))
&& !Permissions.WORLD.isAuthorized(player, user.getPlayer().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + user.getPlayer().getWorld().getName()));
}

View File

@@ -7,7 +7,6 @@ import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.craftbukkit.InventoryWorkaround;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.UnlimitedItemPermissions;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@@ -82,7 +81,7 @@ public class Commandunlimited extends EssentialsCommand
stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2));
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (!UnlimitedItemPermissions.getPermission(stack.getType()).isAuthorized(user))
if (!Permissions.UNLIMITED.isAuthorized(user, stack))
{
throw new Exception(_("unlimitedItemPermission", itemname));
}

View File

@@ -9,7 +9,6 @@ import net.ess3.api.IUser;
import net.ess3.api.IWarps;
import net.ess3.economy.Trade;
import net.ess3.permissions.Permissions;
import net.ess3.permissions.WarpPermissions;
import net.ess3.utils.Util;
import org.bukkit.command.CommandSender;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -83,7 +82,7 @@ public class Commandwarp extends EssentialsCommand
while (iterator.hasNext())
{
final String warpName = iterator.next();
if (!WarpPermissions.getPermission(warpName).isAuthorized(sender))
if (!Permissions.WARPS.isAuthorized(sender, warpName))
{
iterator.remove();
}
@@ -116,7 +115,7 @@ public class Commandwarp extends EssentialsCommand
final double fullCharge = chargeWarp.getCommandCost(user) + chargeCmd.getCommandCost(user);
final Trade charge = new Trade(fullCharge, ess);
charge.isAffordableFor(user);
if (WarpPermissions.getPermission(name).isAuthorized(user))
if (Permissions.WARPS.isAuthorized(user, name))
{
user.getTeleport().warp(name, charge, TeleportCause.COMMAND);
return;

View File

@@ -4,7 +4,7 @@ import java.util.List;
import static net.ess3.I18n._;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.WorldPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -50,7 +50,7 @@ public class Commandworld extends EssentialsCommand
}
if (!WorldPermissions.getPermission(world.getName()).isAuthorized(user))
if (!Permissions.WORLD.isAuthorized(user, world.getName()))
{
user.sendMessage(_("invalidWorld")); //TODO: Make a "world teleport denied" translation
throw new NoChargeException();

View File

@@ -16,7 +16,6 @@ import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.craftbukkit.InventoryWorkaround;
import net.ess3.permissions.NoCommandCostPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
@@ -172,7 +171,7 @@ public class Trade
user.getPlayer().updateInventory();
}
if (command != null && !command.isEmpty()
&& !NoCommandCostPermissions.getPermission(command).isAuthorized(user))
&& !Permissions.NOCOMMANDCOST.isAuthorized(user, command))
{
@Cleanup
final ISettings settings = ess.getSettings();
@@ -214,8 +213,7 @@ public class Trade
{
double cost = 0d;
if (command != null && !command.isEmpty()
&& !NoCommandCostPermissions.getPermission("all").isAuthorized(user)
&& !NoCommandCostPermissions.getPermission(command).isAuthorized(user))
&& !Permissions.NOCOMMANDCOST.isAuthorized(user, command))
{
cost = ess.getSettings().getData().getEconomy().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command);
if (cost == 0.0 && fallbackCommand != null && !fallbackCommand.isEmpty())

View File

@@ -0,0 +1,62 @@
package net.ess3.permissions;
import org.bukkit.command.CommandSender;
import org.bukkit.permissions.PermissionDefault;
public class DotStarPermission extends AbstractSuperpermsPermission
{
private final String base;
private final String dotStarPermission;
private final PermissionDefault defaultPerm;
public DotStarPermission(final String base)
{
this(base, PermissionDefault.OP);
}
public DotStarPermission(final String base, final PermissionDefault defaultPerm)
{
this.base = base+".";
this.dotStarPermission = base + ".*";
this.defaultPerm = defaultPerm;
}
protected String getBase()
{
return base;
}
@Override
public String getPermissionName()
{
return dotStarPermission;
}
@Override
public PermissionDefault getPermissionDefault()
{
return defaultPerm;
}
public boolean isAuthorized(CommandSender sender, final String... subPerms)
{
for (String subPerm : subPerms)
{
final String permission = getBase().concat(subPerm);
if (sender.isPermissionSet(permission))
{
return sender.hasPermission(permission);
}
}
final String parentPermission = getParentPermission();
if (parentPermission != null && sender.isPermissionSet(parentPermission))
{
return sender.hasPermission(parentPermission);
}
else
{
return getPermissionDefault().getValue(sender.isOp());
}
}
}

View File

@@ -1,23 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class EnchantPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String enchantName)
{
IPermission perm = permissions.get(enchantName);
if (perm == null)
{
perm = new BasePermission("essentials.enchant.",enchantName.toLowerCase(Locale.ENGLISH));
permissions.put(enchantName, perm);
}
return perm;
}
}

View File

@@ -1,30 +0,0 @@
package net.ess3.permissions;
import java.util.EnumMap;
import java.util.Locale;
import net.ess3.api.IPermission;
import org.bukkit.Material;
import org.bukkit.permissions.PermissionDefault;
public class GivePermissions {
private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
public static IPermission getPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
if (perm == null)
{
perm = new BasePermission("essentials.give.item-", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
{
@Override
public PermissionDefault getPermissionDefault()
{
return PermissionDefault.TRUE;
}
};
permissions.put(mat, perm);
}
return perm;
}
}

View File

@@ -1,23 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class GroupsPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String groupName)
{
IPermission perm = permissions.get(groupName);
if (perm == null)
{
perm = new BasePermission("essentials.groups.",groupName.toLowerCase(Locale.ENGLISH));
permissions.put(groupName, perm);
}
return perm;
}
}

View File

@@ -1,23 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class HelpPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String pluginName)
{
IPermission perm = permissions.get(pluginName);
if (perm == null)
{
perm = new BasePermission("essentials.help.", pluginName.toLowerCase(Locale.ENGLISH));
permissions.put(pluginName, perm);
}
return perm;
}
}

View File

@@ -1,32 +0,0 @@
package net.ess3.permissions;
import java.util.EnumMap;
import java.util.Locale;
import net.ess3.api.IPermission;
import org.bukkit.Material;
import org.bukkit.permissions.PermissionDefault;
public class ItemPermissions
{
private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
public static IPermission getPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
if (perm == null)
{
perm = new BasePermission("essentials.itemspawn.item-", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""))
{
@Override
public PermissionDefault getPermissionDefault()
{
return PermissionDefault.TRUE;
}
};
permissions.put(mat, perm);
}
return perm;
}
}

View File

@@ -0,0 +1,44 @@
package net.ess3.permissions;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Colorable;
import org.bukkit.material.MaterialData;
import org.bukkit.material.TexturedMaterial;
import org.bukkit.permissions.PermissionDefault;
public class ItemStackDotStarPermission extends DotStarPermission {
public ItemStackDotStarPermission(String base)
{
super(base);
}
public ItemStackDotStarPermission(String base, PermissionDefault defaultPerm)
{
super(base, defaultPerm);
}
public boolean isAuthorized(CommandSender sender, ItemStack item)
{
MaterialData data;
Material material = item.getType();
String materialName = material.name();
String materialId = String.valueOf(material.getId());
if (material.getMaxDurability() == 0 && (data = item.getData()) != null) {
String durName = materialName + ":" + item.getDurability();
String durId = materialId + ":" + item.getDurability();
if (data instanceof Colorable) {
return super.isAuthorized(sender, materialName+":"+((Colorable)data).getColor().name(), durName, durId, materialName, materialId);
}
if (data instanceof TexturedMaterial) {
return super.isAuthorized(sender, materialName+":"+((TexturedMaterial)data).getMaterial().name(), durName, durId, materialName, materialId);
}
return super.isAuthorized(sender, durName, durId, materialName, materialId);
}
return super.isAuthorized(sender, materialName, materialId);
}
}

View File

@@ -1,31 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
import org.bukkit.permissions.PermissionDefault;
public class KitPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String kitName)
{
IPermission perm = permissions.get(kitName);
if (perm == null)
{
perm = new BasePermission("essentials.kit.", kitName.toLowerCase(Locale.ENGLISH))
{
@Override
public PermissionDefault getPermissionDefault()
{
return PermissionDefault.TRUE;
}
};
permissions.put(kitName, perm);
}
return perm;
}
}

View File

@@ -1,23 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class NoCommandCostPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String command)
{
IPermission perm = permissions.get(command);
if (perm == null)
{
perm = new BasePermission("essentials.nocommandcost.", command.toLowerCase(Locale.ENGLISH));
permissions.put(command, perm);
}
return perm;
}
}

View File

@@ -138,4 +138,17 @@ public enum Permissions implements IPermission
{
return PermissionFactory.checkPermission(sender, this);
}
public static DotStarPermission ENCHANT = new DotStarPermission("essentials.enchant");
public static ItemStackDotStarPermission GIVE = new ItemStackDotStarPermission("essentials.give", PermissionDefault.TRUE);
public static DotStarPermission RANKS = new DotStarPermission("essentials.ranks");
public static DotStarPermission HELP = new DotStarPermission("essentials.help");
public static ItemStackDotStarPermission ITEMSPAWN = new ItemStackDotStarPermission("essentials.itemspawn", PermissionDefault.TRUE);
public static DotStarPermission KITS = new DotStarPermission("essentials.kits", PermissionDefault.TRUE);
public static DotStarPermission NOCOMMANDCOST = new DotStarPermission("essentials.nocommandcost");
public static DotStarPermission SPAWNER = new DotStarPermission("essentials.spawner");
public static DotStarPermission SPAWNMOB = new DotStarPermission("essentials.spawnmob");
public static ItemStackDotStarPermission UNLIMITED = new ItemStackDotStarPermission("essentials.unlimited.items");
public static DotStarPermission WARPS = new DotStarPermission("essentials.warps", PermissionDefault.TRUE);
public static DotStarPermission WARP_OVERWRITE = new DotStarPermission("essentials.warp.overwrite");
public static DotStarPermission WORLD = new DotStarPermission("essentials.world");
}

View File

@@ -1,23 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class SpawnerPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String mobName)
{
IPermission perm = permissions.get(mobName);
if (perm == null)
{
perm = new BasePermission("essentials.spawner.", mobName.toLowerCase(Locale.ENGLISH).replace("_", ""));
permissions.put(mobName, perm);
}
return perm;
}
}

View File

@@ -1,21 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class SpawnmobPermissions {
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String mobName)
{
IPermission perm = permissions.get(mobName);
if (perm == null)
{
perm = new BasePermission("essentials.spawnmob.", mobName.toLowerCase(Locale.ENGLISH).replace("_", ""));
permissions.put(mobName, perm);
}
return perm;
}
}

View File

@@ -1,22 +0,0 @@
package net.ess3.permissions;
import java.util.EnumMap;
import java.util.Locale;
import net.ess3.api.IPermission;
import org.bukkit.Material;
public class UnlimitedItemPermissions
{
private static EnumMap<Material, IPermission> permissions = new EnumMap<Material, IPermission>(Material.class);
public static IPermission getPermission(final Material mat)
{
IPermission perm = permissions.get(mat);
if (perm == null)
{
perm = new BasePermission("essentials.unlimited.item-", mat.toString().toLowerCase(Locale.ENGLISH).replace("_", ""));
permissions.put(mat, perm);
}
return perm;
}
}

View File

@@ -1,31 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
import org.bukkit.permissions.PermissionDefault;
public class WarpPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String warpName)
{
IPermission perm = permissions.get(warpName);
if (perm == null)
{
perm = new BasePermission("essentials.warp.", warpName.toLowerCase(Locale.ENGLISH))
{
@Override
public PermissionDefault getPermissionDefault()
{
return PermissionDefault.TRUE;
}
};
permissions.put(warpName, perm);
}
return perm;
}
}

View File

@@ -1,22 +0,0 @@
package net.ess3.permissions;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.ess3.api.IPermission;
public class WorldPermissions
{
private static Map<String, IPermission> permissions = new HashMap<String, IPermission>();
public static IPermission getPermission(final String worldName)
{
IPermission perm = permissions.get(worldName);
if (perm == null)
{
perm = new BasePermission("essentials.world.", worldName.toLowerCase(Locale.ENGLISH));
permissions.put(worldName, perm);
}
return perm;
}
}

View File

@@ -12,25 +12,23 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IRanks;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.GroupsPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.storage.AsyncStorageObjectHolder;
import net.ess3.utils.FormatUtil;
public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRanks
{
@Override
public void finishRead()
{
}
@Override
public void finishWrite()
{
}
public RanksStorage(final IEssentials ess)
{
super(ess, Ranks.class);
@@ -42,7 +40,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
{
return new File(ess.getPlugin().getDataFolder(), "ranks.yml");
}
public Collection<Entry<String, RankOptions>> getGroups(final IUser player)
{
acquireReadLock();
@@ -56,11 +54,11 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
final ArrayList<Entry<String, RankOptions>> list = new ArrayList();
for (Entry<String, RankOptions> entry : groups.entrySet())
{
if (GroupsPermissions.getPermission(entry.getKey()).isAuthorized(player))
if (Permissions.RANKS.isAuthorized(player, entry.getKey()))
{
if(entry.getValue() != null)
if (entry.getValue() != null)
{
list.add(entry);
list.add(entry);
}
}
}
@@ -97,7 +95,7 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
}
return 0;
}
@Override
public double getTeleportDelay(final IUser player)
{
@@ -149,23 +147,23 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
}
return 0;
}
//TODO: Reimplement caching
@Override
public MessageFormat getChatFormat(final IUser player)
{
String format = getRawChatFormat(player);
format = FormatUtil.replaceFormat(format);
format = format.replace("{DISPLAYNAME}", "%1$s");
format = format.replace("{GROUP}", "{0}");
format = format.replace("{MESSAGE}", "%2$s");
format = format.replace("{WORLDNAME}", "{1}");
format = format.replace("{SHORTWORLDNAME}", "{2}");
format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]");
MessageFormat mFormat = new MessageFormat(format);
return mFormat;
String format = getRawChatFormat(player);
format = FormatUtil.replaceFormat(format);
format = format.replace("{DISPLAYNAME}", "%1$s");
format = format.replace("{GROUP}", "{0}");
format = format.replace("{MESSAGE}", "%2$s");
format = format.replace("{WORLDNAME}", "{1}");
format = format.replace("{SHORTWORLDNAME}", "{2}");
format = format.replaceAll("\\{(\\D*)\\}", "\\[$1\\]");
MessageFormat mFormat = new MessageFormat(format);
return mFormat;
}
private String getRawChatFormat(final IUser player)
{
for (Entry<String, RankOptions> groupOptions : getGroups(player))
@@ -203,5 +201,4 @@ public class RanksStorage extends AsyncStorageObjectHolder<Ranks> implements IRa
}
return "default";
}
}

View File

@@ -9,7 +9,7 @@ import static net.ess3.I18n._;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.permissions.HelpPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
@@ -87,7 +87,7 @@ public class HelpInput implements IText
{
permissions = value.get(PERMISSIONS);
}
if (HelpPermissions.getPermission(pluginNameLow).isAuthorized(user))
if (Permissions.HELP.isAuthorized(user, pluginNameLow))
{
pluginLines.add(_("helpLine", k.getKey(), value.get(DESCRIPTION)));
}

View File

@@ -4,7 +4,7 @@ import net.ess3.api.ChargeException;
import net.ess3.economy.Trade;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.permissions.KitPermissions;
import net.ess3.permissions.Permissions;
import net.ess3.settings.Kit;
import java.util.Locale;
@@ -53,7 +53,7 @@ public class SignKit extends EssentialsSign
final String kitName = sign.getLine(1).toLowerCase(Locale.ENGLISH);
final String group = sign.getLine(2);
if ((!group.isEmpty() && ("§2Everyone".equals(group) || ess.getRanks().inGroup(player, group)))
|| (group.isEmpty() && KitPermissions.getPermission(kitName).isAuthorized(player)))
|| (group.isEmpty() && Permissions.KITS.isAuthorized(player, kitName)))
{
final Trade charge = getTrade(sign, 3, ess);
charge.isAffordableFor(player);

View File

@@ -4,7 +4,7 @@ import net.ess3.api.ChargeException;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.economy.Trade;
import net.ess3.permissions.WarpPermissions;
import net.ess3.permissions.Permissions;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -52,7 +52,7 @@ public class SignWarp extends EssentialsSign
final String group = sign.getLine(2);
if ((!group.isEmpty() && ("§2Everyone".equals(group) || ess.getRanks().inGroup(player, group)))
|| (group.isEmpty() && WarpPermissions.getPermission(warpName).isAuthorized(player)))
|| (group.isEmpty() && Permissions.WARPS.isAuthorized(player, warpName)))
{
final Trade charge = getTrade(sign, 3, ess);
try