1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-20 21:41:32 +02:00

Modified BetterLocation, and new Permission-System

This commit is contained in:
snowleo
2012-02-05 17:19:32 +01:00
parent 8080abacd6
commit 8ab5bad988
98 changed files with 874 additions and 710 deletions

View File

@@ -43,7 +43,7 @@ public class EssentialsConnect
return ess;
}
public void alert(final IUser user, final String item, final String type)
public void alert(final Player user, final String item, final String type)
{
final Location loc = user.getLocation();
final String warnMessage = _("alertFormat", user.getName(), type, item,
@@ -53,7 +53,7 @@ public class EssentialsConnect
for (Player p : ess.getServer().getOnlinePlayers())
{
final IUser alertUser = ess.getUser(p);
if (alertUser.isAuthorized("essentials.protect.alerts"))
if (Permissions.ALERTS.isAuthorized(alertUser))
{
alertUser.sendMessage(warnMessage);
}

View File

@@ -2,13 +2,13 @@ package com.earth2me.essentials.protect;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.protect.data.IProtectedBlock;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -34,12 +34,12 @@ public class EssentialsProtectBlockListener implements Listener
return;
}
final IUser user = ess.getUser(event.getPlayer());
final Player user = event.getPlayer();
final ProtectHolder settings = prot.getSettings();
settings.acquireReadLock();
try
{
if (!user.isAuthorized(Permissions.BUILD))
if (!Permissions.BUILD.isAuthorized(user))
{
event.setCancelled(true);
return;
@@ -48,13 +48,13 @@ public class EssentialsProtectBlockListener implements Listener
final Block blockPlaced = event.getBlockPlaced();
final int id = blockPlaced.getTypeId();
if (!user.isAuthorized(BlockPlacePermissions.getPermission(blockPlaced.getType())))
if (!BlockPlacePermissions.getPermission(blockPlaced.getType()).isAuthorized(user))
{
event.setCancelled(true);
return;
}
if (!user.hasPermission("essentials.protect.alerts.notrigger") &&
if (!Permissions.ALERTS_NOTRIGGER.isAuthorized(user) &&
settings.getData().getAlertOnPlacement().contains(blockPlaced.getType()))
{
prot.getEssentialsConnect().alert(user, blockPlaced.getType().toString(), _("alertPlaced"));
@@ -72,7 +72,7 @@ public class EssentialsProtectBlockListener implements Listener
final List<Block> protect = new ArrayList<Block>();
if ((blockPlaced.getType() == Material.RAILS || blockPlaced.getType() == Material.POWERED_RAIL || blockPlaced.getType() == Material.DETECTOR_RAIL)
&& settings.getData().getSignsAndRails().isProtectRails()
&& user.isAuthorized("essentials.protect"))
&& Permissions.RAILS.isAuthorized(user))
{
protect.add(blockPlaced);
if (settings.getData().getSignsAndRails().isBlockBelow()
@@ -81,7 +81,7 @@ public class EssentialsProtectBlockListener implements Listener
protect.add(blockPlaced.getRelative(BlockFace.DOWN));
}
}
if ((blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN)
/*if ((blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN)
&& settings.getData().getSignsAndRails().isProtectSigns()
&& user.isAuthorized("essentials.protect"))
{
@@ -93,7 +93,7 @@ public class EssentialsProtectBlockListener implements Listener
{
protect.add(event.getBlockAgainst());
}
}
}*/
for (Block block : protect)
{
prot.getStorage().protectBlock(block, user.getName());
@@ -144,7 +144,7 @@ public class EssentialsProtectBlockListener implements Listener
if (event.getCause().equals(BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL) && event.getPlayer() != null)
{
event.setCancelled(ess.getUser(event.getPlayer()).isAuthorized(Permissions.USEFLINTSTEEL));
event.setCancelled(Permissions.USEFLINTSTEEL.isAuthorized(event.getPlayer()));
return;
}
@@ -267,9 +267,9 @@ public class EssentialsProtectBlockListener implements Listener
{
return;
}
final IUser user = ess.getUser(event.getPlayer());
final Player user = event.getPlayer();
if (!user.isAuthorized(Permissions.BUILD))
if (!Permissions.BUILD.isAuthorized(user))
{
event.setCancelled(true);
return;
@@ -277,7 +277,7 @@ public class EssentialsProtectBlockListener implements Listener
final Block block = event.getBlock();
final int typeId = block.getTypeId();
if (!user.isAuthorized(BlockBreakPermissions.getPermission(block.getType())))
if (!BlockBreakPermissions.getPermission(block.getType()).isAuthorized(user))
{
event.setCancelled(true);
return;
@@ -288,13 +288,13 @@ public class EssentialsProtectBlockListener implements Listener
{
final Material type = block.getType();
if (!user.hasPermission("essentials.protect.alerts.notrigger") && settings.getData().getAlertOnBreak().contains(type))
if (!Permissions.ALERTS_NOTRIGGER.isAuthorized(user) && settings.getData().getAlertOnBreak().contains(type))
{
prot.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
}
final IProtectedBlock storage = prot.getStorage();
if (user.isAuthorized("essentials.protect.admin"))
if (Permissions.ADMIN.isAuthorized(user))
{
if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
@@ -489,7 +489,7 @@ public class EssentialsProtectBlockListener implements Listener
}
}
private boolean isProtected(final Block block, final IUser user, final ProtectHolder settings)
private boolean isProtected(final Block block, final Player user, final ProtectHolder settings)
{
final Material type = block.getType();
if (settings.getData().getSignsAndRails().isProtectSigns())

View File

@@ -1,7 +1,6 @@
package com.earth2me.essentials.protect;
import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.craftbukkit.FakeExplosion;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -46,28 +45,28 @@ public class EssentialsProtectEntityListener implements Listener
return;
}
final IUser user = target instanceof Player ? ess.getUser((Player)target) : null;
final Player user = target instanceof Player ? (Player)target : null;
if (target instanceof Player && event instanceof EntityDamageByBlockEvent)
{
final DamageCause cause = event.getCause();
if (cause == DamageCause.CONTACT
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_CONTACT)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_CONTACT.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.LAVA
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_LAVADAMAGE)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_LAVADAMAGE.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.BLOCK_EXPLOSION
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_TNT)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_TNT.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
@@ -78,11 +77,11 @@ public class EssentialsProtectEntityListener implements Listener
{
final EntityDamageByEntityEvent edEvent = (EntityDamageByEntityEvent)event;
final Entity eAttack = edEvent.getDamager();
final IUser attacker = eAttack instanceof Player ? ess.getUser((Player)eAttack) : null;
final Player attacker = eAttack instanceof Player ? (Player)eAttack : null;
// PVP Settings
if (target instanceof Player && eAttack instanceof Player
&& (!user.isAuthorized(Permissions.PVP) || !attacker.isAuthorized(Permissions.PVP)))
&& (!Permissions.PVP.isAuthorized(user) || !Permissions.PVP.isAuthorized(attacker)))
{
event.setCancelled(true);
return;
@@ -90,35 +89,35 @@ public class EssentialsProtectEntityListener implements Listener
//Creeper explode prevention
if (eAttack instanceof Creeper && settings.getData().getPrevent().isCreeperExplosion()
|| (user.isAuthorized(Permissions.PREVENTDAMAGE_CREEPER)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
|| (Permissions.PREVENTDAMAGE_CREEPER.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball)
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_FIREBALL)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_FIREBALL.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (eAttack instanceof TNTPrimed
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_TNT)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_TNT.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (edEvent.getDamager() instanceof Projectile
&& ((user.isAuthorized(Permissions.PREVENTDAMAGE_PROJECTILES)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE))
&& ((Permissions.PREVENTDAMAGE_PROJECTILES.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user))
|| (((Projectile)edEvent.getDamager()).getShooter() instanceof Player
&& (!user.isAuthorized(Permissions.PVP)
|| !ess.getUser((Player)((Projectile)edEvent.getDamager()).getShooter()).isAuthorized(Permissions.PVP)))))
&& (!Permissions.PVP.isAuthorized(user)
|| !Permissions.PVP.isAuthorized((Player)((Projectile)edEvent.getDamager()).getShooter())))))
{
event.setCancelled(true);
return;
@@ -129,38 +128,38 @@ public class EssentialsProtectEntityListener implements Listener
if (target instanceof Player)
{
if (cause == DamageCause.FALL
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_FALL)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_FALL.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.SUFFOCATION
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_SUFFOCATION)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_SUFFOCATION.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if ((cause == DamageCause.FIRE
|| cause == DamageCause.FIRE_TICK)
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_FIRE)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_FIRE.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.DROWNING
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_DROWNING)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_DROWNING.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
}
if (cause == DamageCause.LIGHTNING
&& (user.isAuthorized(Permissions.PREVENTDAMAGE_LIGHTNING)
&& !user.isAuthorized(Permissions.PREVENTDAMAGE_NONE)))
&& (Permissions.PREVENTDAMAGE_LIGHTNING.isAuthorized(user)
&& !Permissions.PREVENTDAMAGE_NONE.isAuthorized(user)))
{
event.setCancelled(true);
return;
@@ -289,14 +288,14 @@ public class EssentialsProtectEntityListener implements Listener
{
return;
}
final IUser user = ess.getUser((Player)event.getTarget());
final Player user = (Player)event.getTarget();
if ((event.getReason() == TargetReason.CLOSEST_PLAYER
|| event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY
|| event.getReason() == TargetReason.PIG_ZOMBIE_TARGET
|| event.getReason() == TargetReason.RANDOM_TARGET
|| event.getReason() == TargetReason.TARGET_ATTACKED_OWNER
|| event.getReason() == TargetReason.OWNER_ATTACKED_TARGET)
&& user.isAuthorized(Permissions.ENTITYTARGET))
&& Permissions.ENTITYTARGET.isAuthorized(user))
{
event.setCancelled(true);
return;

View File

@@ -2,9 +2,9 @@ package com.earth2me.essentials.protect;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.api.IUser;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -28,7 +28,7 @@ public class EssentialsProtectPlayerListener implements Listener
public void onPlayerInteract(final PlayerInteractEvent event)
{
// Do not return if cancelled, because the interact event has 2 cancelled states.
final IUser user = ess.getUser(event.getPlayer());
final Player user = event.getPlayer();
final ProtectHolder settings = prot.getSettings();
settings.acquireReadLock();
@@ -37,7 +37,7 @@ public class EssentialsProtectPlayerListener implements Listener
if (event.hasItem()
&& (event.getItem().getType() == Material.WATER_BUCKET
|| event.getItem().getType() == Material.LAVA_BUCKET)
&& !user.isAuthorized(Permissions.BUILD))
&& !Permissions.BUILD.isAuthorized(user))
{
if (settings.getData().isWarnOnBuildDisallow())
{
@@ -47,7 +47,7 @@ public class EssentialsProtectPlayerListener implements Listener
return;
}
if (!user.isAuthorized(Permissions.INTERACT))
if (!Permissions.INTERACT.isAuthorized(user))
{
if (settings.getData().isWarnOnBuildDisallow())
{
@@ -59,13 +59,13 @@ public class EssentialsProtectPlayerListener implements Listener
final ItemStack item = event.getItem();
if (item != null
&& !user.isAuthorized(ItemUsePermissions.getPermission(item.getType())))
&& !ItemUsePermissions.getPermission(item.getType()).isAuthorized(user))
{
event.setCancelled(true);
return;
}
if (user.isAuthorized("essentials.protect.ownerinfo") && event.getAction() == Action.RIGHT_CLICK_BLOCK)
if (Permissions.OWNERINFO.isAuthorized(user) && event.getAction() == Action.RIGHT_CLICK_BLOCK)
{
final StringBuilder stringBuilder = new StringBuilder();
boolean first = true;
@@ -86,8 +86,8 @@ public class EssentialsProtectPlayerListener implements Listener
}
}
if (item != null
&& !user.hasPermission("essentials.protect.alerts.notrigger")
&& settings.getData().getAlertOnUse().contains(item.getType()))
&& !Permissions.ALERTS_NOTRIGGER.isAuthorized(user)
&& settings.getData().getAlertOnUse().contains(item.getType()))
{
prot.getEssentialsConnect().alert(user, item.getType().toString(), _("alertUsed"));
}

View File

@@ -3,17 +3,21 @@ package com.earth2me.essentials.protect;
import com.earth2me.essentials.Util;
import com.earth2me.essentials.api.IPermission;
import java.util.Locale;
import org.bukkit.command.CommandSender;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public enum Permissions implements IPermission
{
ALERTS,
ALERTS_NOTRIGGER,
ADMIN,
BUILD(PermissionDefault.TRUE),
INTERACT(PermissionDefault.TRUE),
USEFLINTSTEEL(PermissionDefault.TRUE),
PVP(PermissionDefault.TRUE),
ENTITYTARGET(PermissionDefault.TRUE),
INTERACT(PermissionDefault.TRUE),
OWNERINFO,
PVP(PermissionDefault.TRUE),
PREVENTDAMAGE_FALL(PermissionDefault.FALSE),
PREVENTDAMAGE_CREEPER(PermissionDefault.FALSE),
PREVENTDAMAGE_CONTACT(PermissionDefault.FALSE),
@@ -25,7 +29,9 @@ public enum Permissions implements IPermission
PREVENTDAMAGE_FIRE(PermissionDefault.FALSE),
PREVENTDAMAGE_DROWNING(PermissionDefault.FALSE),
PREVENTDAMAGE_LIGHTNING(PermissionDefault.FALSE),
PREVENTDAMAGE_NONE(PermissionDefault.FALSE);
PREVENTDAMAGE_NONE(PermissionDefault.FALSE),
RAILS(PermissionDefault.TRUE),
USEFLINTSTEEL(PermissionDefault.TRUE);
private static final String base = "essentials.protect.";
private final String permission;
private final PermissionDefault defaultPerm;
@@ -66,4 +72,10 @@ public enum Permissions implements IPermission
{
return this.defaultPerm;
}
@Override
public boolean isAuthorized(CommandSender sender)
{
return sender.hasPermission(getBukkitPermission());
}
}