Merge branch 'master' into release

This commit is contained in:
snowleo 2011-07-18 01:49:45 +02:00
commit 21d0661d79
27 changed files with 553 additions and 144 deletions

View File

@ -0,0 +1,39 @@
package com.earth2me.essentials;
import org.bukkit.entity.Player;
public class BukkitPermissionsHandler implements IPermissionsHandler
{
public String getGroup(Player base)
{
return "default";
}
public boolean canBuild(Player base, String group)
{
return true;
}
public boolean inGroup(Player base, String group)
{
return false;
}
public boolean hasPermission(Player base, String node)
{
return base.hasPermission(node);
}
public String getPrefix(Player base)
{
return "";
}
public String getSuffix(Player base)
{
return "";
}
}

View File

@ -46,7 +46,7 @@ import org.bukkit.plugin.java.*;
public class Essentials extends JavaPlugin implements IEssentials public class Essentials extends JavaPlugin implements IEssentials
{ {
public static final int BUKKIT_VERSION = 974; public static final int BUKKIT_VERSION = 1000;
private static final Logger LOGGER = Logger.getLogger("Minecraft"); private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient ISettings settings; private transient ISettings settings;
private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this); private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this);
@ -158,7 +158,14 @@ public class Essentials extends JavaPlugin implements IEssentials
} }
else else
{ {
this.permissionsHandler = new ConfigPermissionsHandler(this); if (this.getSettings().useBukkitPermissions())
{
this.permissionsHandler = new BukkitPermissionsHandler();
}
else
{
this.permissionsHandler = new ConfigPermissionsHandler(this);
}
} }
final ServerListener serverListener = new EssentialsPluginListener(paymentMethod); final ServerListener serverListener = new EssentialsPluginListener(paymentMethod);
@ -190,6 +197,8 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.BLOCK_BREAK, signBlockListener, Priority.Highest, this); pm.registerEvent(Type.BLOCK_BREAK, signBlockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_IGNITE, signBlockListener, Priority.Low, this); pm.registerEvent(Type.BLOCK_IGNITE, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_BURN, signBlockListener, Priority.Low, this); pm.registerEvent(Type.BLOCK_BURN, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_PISTON_EXTEND, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_PISTON_RETRACT, signBlockListener, Priority.Low, this);
final SignPlayerListener signPlayerListener = new SignPlayerListener(this); final SignPlayerListener signPlayerListener = new SignPlayerListener(this);
pm.registerEvent(Type.PLAYER_INTERACT, signPlayerListener, Priority.Low, this); pm.registerEvent(Type.PLAYER_INTERACT, signPlayerListener, Priority.Low, this);
@ -642,7 +651,7 @@ public class Essentials extends JavaPlugin implements IEssentials
{ {
return bans; return bans;
} }
public ItemDb getItemDb() public ItemDb getItemDb()
{ {
return itemDb; return itemDb;

View File

@ -60,6 +60,7 @@ public class EssentialsPlayerListener extends PlayerListener
if (user.isMuted()) if (user.isMuted())
{ {
event.setCancelled(true); event.setCancelled(true);
user.sendMessage(Util.i18n("playerMuted"));
LOGGER.info(Util.format("mutedUserSpeaks", user.getName())); LOGGER.info(Util.format("mutedUserSpeaks", user.getName()));
} }
final Iterator<Player> it = event.getRecipients().iterator(); final Iterator<Player> it = event.getRecipients().iterator();

View File

@ -1,6 +1,7 @@
package com.earth2me.essentials; package com.earth2me.essentials;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.bukkit.BlockChangeDelegate; import org.bukkit.BlockChangeDelegate;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot; import org.bukkit.ChunkSnapshot;
@ -8,6 +9,7 @@ import org.bukkit.Effect;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.TreeType; import org.bukkit.TreeType;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Boat; import org.bukkit.entity.Boat;
@ -172,26 +174,6 @@ public class FakeWorld implements World
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
public Minecart spawnMinecart(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public StorageMinecart spawnStorageMinecart(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PoweredMinecart spawnPoweredMinecart(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Boat spawnBoat(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public LivingEntity spawnCreature(Location lctn, CreatureType ct) public LivingEntity spawnCreature(Location lctn, CreatureType ct)
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
@ -392,7 +374,33 @@ public class FakeWorld implements World
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
public long getUID() public UUID getUID()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Block getHighestBlockAt(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Block getHighestBlockAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Biome getBiome(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public double getTemperature(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public double getHumidity(int i, int i1)
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }

View File

@ -128,4 +128,6 @@ public interface ISettings extends IConf
boolean changeDisplayName(); boolean changeDisplayName();
boolean isPlayerCommand(String string); boolean isPlayerCommand(String string);
public boolean useBukkitPermissions();
} }

View File

@ -3,6 +3,7 @@ package com.earth2me.essentials;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Achievement; import org.bukkit.Achievement;
import org.bukkit.Effect; import org.bukkit.Effect;
@ -23,6 +24,10 @@ import org.bukkit.entity.Vehicle;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
@ -513,4 +518,62 @@ public class OfflinePlayer implements Player
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
public boolean isPermissionSet(String string)
{
return false;
}
public boolean isPermissionSet(Permission prmsn)
{
return false;
}
public boolean hasPermission(String string)
{
return false;
}
public boolean hasPermission(Permission prmsn)
{
return false;
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void removeAttachment(PermissionAttachment pa)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void recalculatePermissions()
{
}
public Set<PermissionAttachmentInfo> getEffectivePermissions()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setOp(boolean bln)
{
}
} }

View File

@ -7,6 +7,10 @@ import org.bukkit.block.Block;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.*; import org.bukkit.inventory.*;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
public class PlayerWrapper implements Player public class PlayerWrapper implements Player
@ -560,4 +564,64 @@ public class PlayerWrapper implements Player
{ {
base.resetPlayerTime(); base.resetPlayerTime();
} }
public boolean isPermissionSet(String string)
{
return base.isPermissionSet(string);
}
public boolean isPermissionSet(Permission prmsn)
{
return base.isPermissionSet(prmsn);
}
public boolean hasPermission(String string)
{
return base.hasPermission(string);
}
public boolean hasPermission(Permission prmsn)
{
return base.hasPermission(prmsn);
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln)
{
return base.addAttachment(plugin, string, bln);
}
public PermissionAttachment addAttachment(Plugin plugin)
{
return base.addAttachment(plugin);
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln, int i)
{
return base.addAttachment(plugin, string, bln, i);
}
public PermissionAttachment addAttachment(Plugin plugin, int i)
{
return base.addAttachment(plugin, i);
}
public void removeAttachment(PermissionAttachment pa)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void recalculatePermissions()
{
base.recalculatePermissions();
}
public Set<PermissionAttachmentInfo> getEffectivePermissions()
{
return base.getEffectivePermissions();
}
public void setOp(boolean bln)
{
base.setOp(bln);
}
} }

View File

@ -463,5 +463,9 @@ public class Settings implements ISettings
{ {
return config.getBoolean("change-displayname", true); return config.getBoolean("change-displayname", true);
} }
public boolean useBukkitPermissions()
{
return config.getBoolean("use-bukkit-permissions", false);
}
} }

View File

@ -375,7 +375,6 @@ public class Util
} }
catch (IOException ex) catch (IOException ex)
{ {
return cl.getResourceAsStream(string);
} }
} }
} }

View File

@ -1,42 +1,52 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.earth2me.essentials.User; import com.earth2me.essentials.User;
import com.earth2me.essentials.Util; import com.earth2me.essentials.Util;
public class Commandmute extends EssentialsCommand public class Commandmute extends EssentialsCommand
{ {
public Commandmute() public Commandmute()
{ {
super("mute"); super("mute");
} }
@Override @Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{ {
if (args.length < 1) if (args.length < 1)
{ {
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
} }
User p = getPlayer(server, args, 0, true); User p = getPlayer(server, args, 0, true);
long muteTimestamp = 0; if (p.isAuthorized("essentials.mute.exempt"))
if (args.length > 1) {
{ sender.sendMessage(Util.i18n("muteExempt"));
String time = getFinalArg(args, 1); return;
muteTimestamp = Util.parseDateDiff(time, true); }
} long muteTimestamp = 0;
p.setMuteTimeout(muteTimestamp); if (args.length > 1)
charge(sender); {
String time = getFinalArg(args, 1);
muteTimestamp = Util.parseDateDiff(time, true);
sender.sendMessage( }
p.toggleMuted() p.setMuteTimeout(muteTimestamp);
? (muteTimestamp > 0 charge(sender);
? Util.format("mutedPlayerFor", p.getDisplayName(), Util.formatDateDiff(muteTimestamp)) boolean muted = p.toggleMuted();
: Util.format("mutedPlayer", p.getDisplayName())) sender.sendMessage(
: Util.format("unmutedPlayer", p.getDisplayName())); muted
} ? (muteTimestamp > 0
} ? Util.format("mutedPlayerFor", p.getDisplayName(), Util.formatDateDiff(muteTimestamp))
: Util.format("mutedPlayer", p.getDisplayName()))
: Util.format("unmutedPlayer", p.getDisplayName()));
p.sendMessage(
muted
? (muteTimestamp > 0
? Util.format("playerMutedFor", Util.formatDateDiff(muteTimestamp))
: Util.i18n("playerMuted"))
: Util.i18n("playerUnmuted"));
}
}

View File

@ -189,9 +189,14 @@ public class EssentialsSign
return true; return true;
} }
public boolean onBlockPush(Block block, IEssentials ess)
{
return true;
}
public static boolean checkIfBlockBreaksSigns(final Block block) public static boolean checkIfBlockBreaksSigns(final Block block)
{ {
if (block.getFace(BlockFace.UP).getType() == Material.SIGN_POST) if (block.getRelative(BlockFace.UP).getType() == Material.SIGN_POST)
{ {
return true; return true;
} }
@ -204,7 +209,7 @@ public class EssentialsSign
}; };
for (BlockFace blockFace : directions) for (BlockFace blockFace : directions)
{ {
final Block signblock = block.getFace(blockFace); final Block signblock = block.getRelative(blockFace);
if (signblock.getType() == Material.WALL_SIGN) if (signblock.getType() == Material.WALL_SIGN)
{ {
final org.bukkit.material.Sign sign = (org.bukkit.material.Sign)signblock.getState().getData(); final org.bukkit.material.Sign sign = (org.bukkit.material.Sign)signblock.getState().getData();
@ -333,7 +338,7 @@ public class EssentialsSign
protected final Double getDoublePositive(final String line) throws SignException protected final Double getDoublePositive(final String line) throws SignException
{ {
final double quantity = getDouble(line); final double quantity = getDouble(line);
if (Math.round(quantity*100.0) < 1.0) if (Math.round(quantity * 100.0) < 1.0)
{ {
throw new SignException(Util.i18n("moreThanZero")); throw new SignException(Util.i18n("moreThanZero"));
} }
@ -425,7 +430,6 @@ public class EssentialsSign
{ {
return; return;
} }
} }
@ -454,7 +458,7 @@ public class EssentialsSign
{ {
return block; return block;
} }
public final void updateSign() public final void updateSign()
{ {
sign.update(); sign.update();
@ -469,7 +473,7 @@ public class EssentialsSign
void setLine(final int index, final String text); void setLine(final int index, final String text);
public Block getBlock(); public Block getBlock();
void updateSign(); void updateSign();
} }
} }

View File

@ -13,6 +13,8 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
@ -21,12 +23,12 @@ public class SignBlockListener extends BlockListener
{ {
private final transient IEssentials ess; private final transient IEssentials ess;
private final static Logger LOGGER = Logger.getLogger("Minecraft"); private final static Logger LOGGER = Logger.getLogger("Minecraft");
public SignBlockListener(IEssentials ess) public SignBlockListener(IEssentials ess)
{ {
this.ess = ess; this.ess = ess;
} }
@Override @Override
public void onBlockBreak(final BlockBreakEvent event) public void onBlockBreak(final BlockBreakEvent event)
{ {
@ -34,13 +36,13 @@ public class SignBlockListener extends BlockListener
{ {
return; return;
} }
if (protectSignsAndBlocks(event.getBlock(), event.getPlayer())) if (protectSignsAndBlocks(event.getBlock(), event.getPlayer()))
{ {
event.setCancelled(true); event.setCancelled(true);
} }
} }
public boolean protectSignsAndBlocks(final Block block, final Player player) public boolean protectSignsAndBlocks(final Block block, final Player player)
{ {
final int mat = block.getTypeId(); final int mat = block.getTypeId();
@ -78,7 +80,7 @@ public class SignBlockListener extends BlockListener
} }
return false; return false;
} }
@Override @Override
public void onSignChange(final SignChangeEvent event) public void onSignChange(final SignChangeEvent event)
{ {
@ -104,12 +106,13 @@ public class SignBlockListener extends BlockListener
User user = ess.getUser(event.getPlayer()); User user = ess.getUser(event.getPlayer());
if (user.isAuthorized("essentials.signs.color")) if (user.isAuthorized("essentials.signs.color"))
{ {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++)
{
event.setLine(i, event.getLine(i).replaceAll("&([0-9a-f])", "§$1")); event.setLine(i, event.getLine(i).replaceAll("&([0-9a-f])", "§$1"));
} }
} }
} }
@Override @Override
public void onBlockPlace(final BlockPlaceEvent event) public void onBlockPlace(final BlockPlaceEvent event)
{ {
@ -117,7 +120,7 @@ public class SignBlockListener extends BlockListener
{ {
return; return;
} }
final Block against = event.getBlockAgainst(); final Block against = event.getBlockAgainst();
if (against.getType() == Material.WALL_SIGN if (against.getType() == Material.WALL_SIGN
|| against.getType() == Material.SIGN_POST) || against.getType() == Material.SIGN_POST)
@ -142,7 +145,7 @@ public class SignBlockListener extends BlockListener
} }
} }
} }
@Override @Override
public void onBlockBurn(final BlockBurnEvent event) public void onBlockBurn(final BlockBurnEvent event)
{ {
@ -150,7 +153,7 @@ public class SignBlockListener extends BlockListener
{ {
return; return;
} }
final Block block = event.getBlock(); final Block block = event.getBlock();
if ((block.getType() == Material.WALL_SIGN if ((block.getType() == Material.WALL_SIGN
|| block.getType() == Material.SIGN_POST || block.getType() == Material.SIGN_POST
@ -170,7 +173,7 @@ public class SignBlockListener extends BlockListener
} }
} }
} }
@Override @Override
public void onBlockIgnite(final BlockIgniteEvent event) public void onBlockIgnite(final BlockIgniteEvent event)
{ {
@ -178,10 +181,61 @@ public class SignBlockListener extends BlockListener
{ {
return; return;
} }
if (protectSignsAndBlocks(event.getBlock(), event.getPlayer())) if (protectSignsAndBlocks(event.getBlock(), event.getPlayer()))
{ {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@Override
public void onBlockPistonExtend(BlockPistonExtendEvent event)
{
for (Block block : event.getBlocks())
{
if ((block.getType() == Material.WALL_SIGN
|| block.getType() == Material.SIGN_POST
|| EssentialsSign.checkIfBlockBreaksSigns(block)))
{
event.setCancelled(true);
return;
}
for (Signs signs : Signs.values())
{
final EssentialsSign sign = signs.getSign();
if (sign.getBlocks().contains(block.getType())
&& !sign.onBlockPush(block, ess))
{
event.setCancelled(true);
return;
}
}
}
}
@Override
public void onBlockPistonRetract(BlockPistonRetractEvent event)
{
if (event.isSticky())
{
final Block block = event.getBlock();
if ((block.getType() == Material.WALL_SIGN
|| block.getType() == Material.SIGN_POST
|| EssentialsSign.checkIfBlockBreaksSigns(block)))
{
event.setCancelled(true);
return;
}
for (Signs signs : Signs.values())
{
final EssentialsSign sign = signs.getSign();
if (sign.getBlocks().contains(block.getType())
&& !sign.onBlockPush(block, ess))
{
event.setCancelled(true);
return;
}
}
}
}
} }

View File

@ -21,7 +21,7 @@ import org.bukkit.inventory.ItemStack;
public class SignProtection extends EssentialsSign public class SignProtection extends EssentialsSign
{ {
private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class); private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class);
public SignProtection() public SignProtection()
{ {
super("Protection"); super("Protection");
@ -30,7 +30,7 @@ public class SignProtection extends EssentialsSign
protectedBlocks.add(Material.FURNACE); protectedBlocks.add(Material.FURNACE);
protectedBlocks.add(Material.DISPENSER); protectedBlocks.add(Material.DISPENSER);
} }
@Override @Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException
{ {
@ -43,14 +43,14 @@ public class SignProtection extends EssentialsSign
player.sendMessage("§4You are not allowed to create sign here."); player.sendMessage("§4You are not allowed to create sign here.");
return false; return false;
} }
@Override @Override
protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{ {
final SignProtectionState state = checkProtectionSign(sign, player, username); final SignProtectionState state = checkProtectionSign(sign, player, username);
return state == SignProtectionState.OWNER; return state == SignProtectionState.OWNER;
} }
public boolean hasAdjacentBlock(final Block block, final Block... ignoredBlocks) public boolean hasAdjacentBlock(final Block block, final Block... ignoredBlocks)
{ {
final Block[] faces = getAdjacentBlocks(block); final Block[] faces = getAdjacentBlocks(block);
@ -70,7 +70,7 @@ public class SignProtection extends EssentialsSign
} }
return false; return false;
} }
private void checkIfSignsAreBroken(final Block block, final User player, final String username, final IEssentials ess) private void checkIfSignsAreBroken(final Block block, final User player, final String username, final IEssentials ess)
{ {
final Map<Location, SignProtectionState> signs = getConnectedSigns(block, player, username, false); final Map<Location, SignProtectionState> signs = getConnectedSigns(block, player, username, false);
@ -88,14 +88,14 @@ public class SignProtection extends EssentialsSign
} }
} }
} }
private Map<Location, SignProtectionState> getConnectedSigns(final Block block, final User user, final String username, boolean secure) private Map<Location, SignProtectionState> getConnectedSigns(final Block block, final User user, final String username, boolean secure)
{ {
final Map<Location, SignProtectionState> signs = new HashMap<Location, SignProtectionState>(); final Map<Location, SignProtectionState> signs = new HashMap<Location, SignProtectionState>();
getConnectedSigns(block, signs, user, username, secure ? 4 : 2); getConnectedSigns(block, signs, user, username, secure ? 4 : 2);
return signs; return signs;
} }
private void getConnectedSigns(final Block block, final Map<Location, SignProtectionState> signs, final User user, final String username, final int depth) private void getConnectedSigns(final Block block, final Map<Location, SignProtectionState> signs, final User user, final String username, final int depth)
{ {
final Block[] faces = getAdjacentBlocks(block); final Block[] faces = getAdjacentBlocks(block);
@ -108,20 +108,20 @@ public class SignProtection extends EssentialsSign
} }
final SignProtectionState check = checkProtectionSign(b, user, username); final SignProtectionState check = checkProtectionSign(b, user, username);
signs.put(loc, check); signs.put(loc, check);
if (protectedBlocks.contains(b.getType()) && depth > 0) if (protectedBlocks.contains(b.getType()) && depth > 0)
{ {
getConnectedSigns(b, signs, user, username, depth - 1); getConnectedSigns(b, signs, user, username, depth - 1);
} }
} }
} }
public enum SignProtectionState public enum SignProtectionState
{ {
NOT_ALLOWED, ALLOWED, NOSIGN, OWNER NOT_ALLOWED, ALLOWED, NOSIGN, OWNER
} }
private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) private SignProtectionState checkProtectionSign(final Block block, final User user, final String username)
{ {
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN)
@ -134,7 +134,7 @@ public class SignProtection extends EssentialsSign
} }
return SignProtectionState.NOSIGN; return SignProtectionState.NOSIGN;
} }
private SignProtectionState checkProtectionSign(final ISign sign, final User user, final String username) private SignProtectionState checkProtectionSign(final ISign sign, final User user, final String username)
{ {
if (user == null || username == null) if (user == null || username == null)
@ -163,20 +163,20 @@ public class SignProtection extends EssentialsSign
} }
return SignProtectionState.NOT_ALLOWED; return SignProtectionState.NOT_ALLOWED;
} }
private Block[] getAdjacentBlocks(final Block block) private Block[] getAdjacentBlocks(final Block block)
{ {
return new Block[] return new Block[]
{ {
block.getFace(BlockFace.NORTH), block.getRelative(BlockFace.NORTH),
block.getFace(BlockFace.SOUTH), block.getRelative(BlockFace.SOUTH),
block.getFace(BlockFace.EAST), block.getRelative(BlockFace.EAST),
block.getFace(BlockFace.WEST), block.getRelative(BlockFace.WEST),
block.getFace(BlockFace.DOWN), block.getRelative(BlockFace.DOWN),
block.getFace(BlockFace.UP) block.getRelative(BlockFace.UP)
}; };
} }
public SignProtectionState isBlockProtected(final Block block, final User user, final String username, boolean secure) public SignProtectionState isBlockProtected(final Block block, final User user, final String username, boolean secure)
{ {
final Map<Location, SignProtectionState> signs = getConnectedSigns(block, user, username, secure); final Map<Location, SignProtectionState> signs = getConnectedSigns(block, user, username, secure);
@ -194,7 +194,7 @@ public class SignProtection extends EssentialsSign
} }
return retstate; return retstate;
} }
public boolean isBlockProtected(final Block block) public boolean isBlockProtected(final Block block)
{ {
final Block[] faces = getAdjacentBlocks(block); final Block[] faces = getAdjacentBlocks(block);
@ -211,7 +211,7 @@ public class SignProtection extends EssentialsSign
if (protectedBlocks.contains(b.getType())) if (protectedBlocks.contains(b.getType()))
{ {
final Block[] faceChest = getAdjacentBlocks(b); final Block[] faceChest = getAdjacentBlocks(b);
for (Block a : faceChest) for (Block a : faceChest)
{ {
if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN)
@ -227,20 +227,20 @@ public class SignProtection extends EssentialsSign
} }
return false; return false;
} }
@Override @Override
public Set<Material> getBlocks() public Set<Material> getBlocks()
{ {
return protectedBlocks; return protectedBlocks;
} }
@Override @Override
protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException
{ {
for (Block adjBlock : getAdjacentBlocks(block)) for (Block adjBlock : getAdjacentBlocks(block))
{ {
final SignProtectionState state = isBlockProtected(adjBlock, player, username, true); final SignProtectionState state = isBlockProtected(adjBlock, player, username, true);
if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED) if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED)
&& !player.isAuthorized("essentials.signs.protection.override")) && !player.isAuthorized("essentials.signs.protection.override"))
{ {
@ -249,66 +249,74 @@ public class SignProtection extends EssentialsSign
} }
} }
return true; return true;
} }
@Override @Override
protected boolean onBlockInteract(final Block block, final User player, final String username, final IEssentials ess) throws SignException protected boolean onBlockInteract(final Block block, final User player, final String username, final IEssentials ess) throws SignException
{ {
final SignProtectionState state = isBlockProtected(block, player, username, false); final SignProtectionState state = isBlockProtected(block, player, username, false);
if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN || state == SignProtectionState.ALLOWED) if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN || state == SignProtectionState.ALLOWED)
{ {
return true; return true;
} }
if (state == SignProtectionState.NOT_ALLOWED if (state == SignProtectionState.NOT_ALLOWED
&& player.isAuthorized("essentials.signs.protection.override")) && player.isAuthorized("essentials.signs.protection.override"))
{ {
return true; return true;
} }
player.sendMessage(Util.format("noAccessPermission", block.getType().toString().toLowerCase())); player.sendMessage(Util.format("noAccessPermission", block.getType().toString().toLowerCase()));
return false; return false;
} }
@Override @Override
protected boolean onBlockBreak(final Block block, final User player, final String username, final IEssentials ess) throws SignException protected boolean onBlockBreak(final Block block, final User player, final String username, final IEssentials ess) throws SignException
{ {
final SignProtectionState state = isBlockProtected(block, player, username, false); final SignProtectionState state = isBlockProtected(block, player, username, false);
if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN) if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN)
{ {
checkIfSignsAreBroken(block, player, username, ess); checkIfSignsAreBroken(block, player, username, ess);
return true; return true;
} }
if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED) if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED)
&& player.isAuthorized("essentials.signs.protection.override")) && player.isAuthorized("essentials.signs.protection.override"))
{ {
checkIfSignsAreBroken(block, player, username, ess); checkIfSignsAreBroken(block, player, username, ess);
return true; return true;
} }
player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase())); player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase()));
return false; return false;
} }
@Override @Override
public boolean onBlockExplode(final Block block, final IEssentials ess) public boolean onBlockExplode(final Block block, final IEssentials ess)
{ {
final SignProtectionState state = isBlockProtected(block, null, null, false); final SignProtectionState state = isBlockProtected(block, null, null, false);
return state == SignProtectionState.NOSIGN; return state == SignProtectionState.NOSIGN;
} }
@Override @Override
public boolean onBlockBurn(final Block block, final IEssentials ess) public boolean onBlockBurn(final Block block, final IEssentials ess)
{ {
final SignProtectionState state = isBlockProtected(block, null, null, false); final SignProtectionState state = isBlockProtected(block, null, null, false);
return state == SignProtectionState.NOSIGN;
}
@Override
public boolean onBlockPush(final Block block, final IEssentials ess)
{
final SignProtectionState state = isBlockProtected(block, null, null, false);
return state == SignProtectionState.NOSIGN; return state == SignProtectionState.NOSIGN;
} }
} }

View File

@ -182,10 +182,16 @@ debug: false
# Set the locale for all messages # Set the locale for all messages
# If you don't set this, the default locale of the server will be used. # If you don't set this, the default locale of the server will be used.
# Don't forget to remove the # infront of the line
#locale: de_DE #locale: de_DE
#turn off god mode when people exit #turn off god mode when people exit
remove-god-on-disconnect: false remove-god-on-disconnect: false
# Use the permission system of bukkit
# This only works if no other permission plugins are installed
use-bukkit-permissions: false
############################################################ ############################################################
# +------------------------------------------------------+ # # +------------------------------------------------------+ #
# | EssentialsHome | # # | EssentialsHome | #
@ -299,7 +305,7 @@ protect:
on-placement: 10,11,46 on-placement: 10,11,46
on-use: on-use:
# 46: TNT # 46: TNT
on-break: 46 on-break:
# Users cannot PLACE these types of blocks/items. # Users cannot PLACE these types of blocks/items.
# < 255 designates a BLOCK # < 255 designates a BLOCK
@ -311,7 +317,9 @@ protect:
#prevent people from breaking blocks #prevent people from breaking blocks
#break: 20,50 #break: 20,50
break: break:
# Which blocks should not be pushed by pistons
piston:
# General physics/behavior modifications # General physics/behavior modifications
prevent: prevent:

View File

@ -168,6 +168,7 @@ month = month
months = months months = months
moreThanZero = Quantities must be greater than 0. moreThanZero = Quantities must be greater than 0.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Player {0} muted. mutedPlayer = Player {0} muted.
mutedPlayerFor = Player {0} muted for {1}. mutedPlayerFor = Player {0} muted for {1}.
mutedUserSpeaks = {0} tried to speak, but is muted. mutedUserSpeaks = {0} tried to speak, but is muted.
@ -182,6 +183,7 @@ nickSet = \u00a77Your nickname is now \u00a7c{0}
noAccessCommand = \u00a7cYou do not have access to that command. noAccessCommand = \u00a7cYou do not have access to that command.
noAccessPermission = \u00a7cYou do not have permission to access that {0}. noAccessPermission = \u00a7cYou do not have permission to access that {0}.
noDestroyPermission = \u00a7cYou do not have permission to destroy that {0}. noDestroyPermission = \u00a7cYou do not have permission to destroy that {0}.
noHelpFound = \u00a7cNo matching commands.
noHomeSet = You have not set a home. noHomeSet = You have not set a home.
noHomeSetPlayer = Player has not set a home. noHomeSetPlayer = Player has not set a home.
noKitPermission = \u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit. noKitPermission = \u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit.
@ -213,8 +215,11 @@ playerInJail = \u00a7cPlayer is already in jail {0}.
playerJailed = \u00a77Player {0} jailed. playerJailed = \u00a77Player {0} jailed.
playerJailedFor = \u00a77Player {0} jailed for {1}. playerJailedFor = \u00a77Player {0} jailed for {1}.
playerKicked = \u00a7cPlayer {0} kicked: {1} playerKicked = \u00a7cPlayer {0} kicked: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cPlayer {0} was never on this server. playerNeverOnServer = \u00a7cPlayer {0} was never on this server.
playerNotFound = \u00a7cPlayer not found. playerNotFound = \u00a7cPlayer not found.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77Possible worlds are the numbers 0 through {0}. possibleWorlds = \u00a77Possible worlds are the numbers 0 through {0}.
powerToolAir = Command can''t be attached to air. powerToolAir = Command can''t be attached to air.

View File

@ -170,6 +170,7 @@ month = m\u00e5ned
months = m\u00e5neder months = m\u00e5neder
moreThanZero = M\u00e6ngder skal v\u00e6re st\u00f8rre end 0. moreThanZero = M\u00e6ngder skal v\u00e6re st\u00f8rre end 0.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Spiller {0} d\u00e6mpet. mutedPlayer = Spiller {0} d\u00e6mpet.
mutedPlayerFor = Spiller {0} d\u00e6mpet for {1}. mutedPlayerFor = Spiller {0} d\u00e6mpet for {1}.
mutedUserSpeaks = {0} pr\u00f8vede at snakke, men er muted. mutedUserSpeaks = {0} pr\u00f8vede at snakke, men er muted.
@ -184,6 +185,7 @@ nickSet = \u00a77Dit kaldenavn er nu \u00a7c{0}
noAccessCommand = \u00a7cDu har ikke adgang til den kommando. noAccessCommand = \u00a7cDu har ikke adgang til den kommando.
noAccessPermission = \u00a7cDu har ikke tilladelse til at f\u00e5 adgang til det {0}. noAccessPermission = \u00a7cDu har ikke tilladelse til at f\u00e5 adgang til det {0}.
noDestroyPermission = \u00a7cDu har ikke tilladelse til at \u00f8del\u00e6gge det {0}. noDestroyPermission = \u00a7cDu har ikke tilladelse til at \u00f8del\u00e6gge det {0}.
noHelpFound = \u00a7cNo matching commands.
noHomeSet = Du har sat et nyt hjem. noHomeSet = Du har sat et nyt hjem.
noHomeSetPlayer = Spiller har ikke sat et hjem. noHomeSetPlayer = Spiller har ikke sat et hjem.
noKitPermission = \u00a7cDu har brug for \u00a7c{0}\u00a7c tilladelsen for at bruge den pakke. noKitPermission = \u00a7cDu har brug for \u00a7c{0}\u00a7c tilladelsen for at bruge den pakke.
@ -215,8 +217,11 @@ playerInJail = \u00a7cSpiller er allerede i f\u00e6ngsel {0}.
playerJailed = \u00a77Spiller {0} f\u00e6ngslet. playerJailed = \u00a77Spiller {0} f\u00e6ngslet.
playerJailedFor = \u00a77Spiller {0} f\u00e6ngslet for {1}. playerJailedFor = \u00a77Spiller {0} f\u00e6ngslet for {1}.
playerKicked = \u00a7cPlayer {0} kicked: {1} playerKicked = \u00a7cPlayer {0} kicked: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cSpiller {0} var aldrig p\u00e5 denne server. playerNeverOnServer = \u00a7cSpiller {0} var aldrig p\u00e5 denne server.
playerNotFound = \u00a7cSpiller ikke fundet. playerNotFound = \u00a7cSpiller ikke fundet.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77Mulige verdener er numrene 0 igennem {0}. possibleWorlds = \u00a77Mulige verdener er numrene 0 igennem {0}.
powerToolAir = Kommando kan ikke blive tildelt luft. powerToolAir = Kommando kan ikke blive tildelt luft.

View File

@ -168,6 +168,7 @@ month = Monat
months = Monate months = Monate
moreThanZero = Anzahl muss gr\u00f6sser als 0 sein. moreThanZero = Anzahl muss gr\u00f6sser als 0 sein.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Player {0} ist nun stumm. mutedPlayer = Player {0} ist nun stumm.
mutedPlayerFor = Player {0} ist nun stumm f\u00fcr {1}. mutedPlayerFor = Player {0} ist nun stumm f\u00fcr {1}.
mutedUserSpeaks = {0} versuchte zu sprechen, aber ist stumm geschalt. mutedUserSpeaks = {0} versuchte zu sprechen, aber ist stumm geschalt.
@ -182,6 +183,7 @@ nickSet = \u00a77Dein Nickname ist nun \u00a7c{0}
noAccessCommand = \u00a7cDu hast keinen Zugriff auf diesen Befehl. noAccessCommand = \u00a7cDu hast keinen Zugriff auf diesen Befehl.
noAccessPermission = \u00a7cDu hast keine Rechte, den Block {0} zu \u00f6ffnen. noAccessPermission = \u00a7cDu hast keine Rechte, den Block {0} zu \u00f6ffnen.
noDestroyPermission = \u00a7cDu hast keine Rechte, den Block {0} zu zerst\u00f6ren. noDestroyPermission = \u00a7cDu hast keine Rechte, den Block {0} zu zerst\u00f6ren.
noHelpFound = \u00a7cNo matching commands.
noHomeSet = Du hast kein Zuhause gesetzt. noHomeSet = Du hast kein Zuhause gesetzt.
noHomeSetPlayer = Spieler hat kein Zuhause gesetzt. noHomeSetPlayer = Spieler hat kein Zuhause gesetzt.
noKitPermission = \u00a7cDu brauchst die Berechtigung \u00a7c{0}\u00a7c um diese Ausr\u00fcstung anzufordern. noKitPermission = \u00a7cDu brauchst die Berechtigung \u00a7c{0}\u00a7c um diese Ausr\u00fcstung anzufordern.
@ -213,8 +215,11 @@ playerInJail = \u00a7cSpieler ist bereits in Gef\u00e4ngnis {0}.
playerJailed = \u00a77Spieler {0} eingesperrt. playerJailed = \u00a77Spieler {0} eingesperrt.
playerJailedFor = \u00a77Spieler {0} eingesperrt f\u00fcr {1}. playerJailedFor = \u00a77Spieler {0} eingesperrt f\u00fcr {1}.
playerKicked = \u00a7cSpieler {0} rausgeworfen: {1} playerKicked = \u00a7cSpieler {0} rausgeworfen: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cSpieler {0} war niemals auf diesem Server. playerNeverOnServer = \u00a7cSpieler {0} war niemals auf diesem Server.
playerNotFound = \u00a7cSpieler nicht gefunden. playerNotFound = \u00a7cSpieler nicht gefunden.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77M\u00f6gliche Welten sind nummeriet von 0 bis {0}. possibleWorlds = \u00a77M\u00f6gliche Welten sind nummeriet von 0 bis {0}.
powerToolAir = Befehl kann nicht mit Luft verbunden werden. powerToolAir = Befehl kann nicht mit Luft verbunden werden.

View File

@ -168,6 +168,7 @@ month = month
months = months months = months
moreThanZero = Quantities must be greater than 0. moreThanZero = Quantities must be greater than 0.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Player {0} muted. mutedPlayer = Player {0} muted.
mutedPlayerFor = Player {0} muted for {1}. mutedPlayerFor = Player {0} muted for {1}.
mutedUserSpeaks = {0} tried to speak, but is muted. mutedUserSpeaks = {0} tried to speak, but is muted.
@ -214,8 +215,11 @@ playerInJail = \u00a7cPlayer is already in jail {0}.
playerJailed = \u00a77Player {0} jailed. playerJailed = \u00a77Player {0} jailed.
playerJailedFor = \u00a77Player {0} jailed for {1}. playerJailedFor = \u00a77Player {0} jailed for {1}.
playerKicked = \u00a7cPlayer {0} kicked: {1} playerKicked = \u00a7cPlayer {0} kicked: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cPlayer {0} was never on this server. playerNeverOnServer = \u00a7cPlayer {0} was never on this server.
playerNotFound = \u00a7cPlayer not found. playerNotFound = \u00a7cPlayer not found.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77Possible worlds are the numbers 0 through {0}. possibleWorlds = \u00a77Possible worlds are the numbers 0 through {0}.
powerToolAir = Command can''t be attached to air. powerToolAir = Command can''t be attached to air.

View File

@ -168,6 +168,7 @@ month = mois
months = mois months = mois
moreThanZero = Les Quantit\u00e9s doivent \u00eatre sup\u00e9rieures \u00e0 z\u00e9ro. moreThanZero = Les Quantit\u00e9s doivent \u00eatre sup\u00e9rieures \u00e0 z\u00e9ro.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Le joueur {0} est d\u00e9sormais muet. mutedPlayer = Le joueur {0} est d\u00e9sormais muet.
mutedPlayerFor = {0} a \u00e9t\u00e9 mute pour {1}. mutedPlayerFor = {0} a \u00e9t\u00e9 mute pour {1}.
mutedUserSpeaks = {0} a essay\u00e9 de parler mais est muet. mutedUserSpeaks = {0} a essay\u00e9 de parler mais est muet.
@ -182,6 +183,7 @@ nickSet = \u00a77Votre pseudo est maintenant \u00a7c{0}
noAccessCommand = \u00a7cVous n''avez pas acc\u00e8s \u00e0 cette commande. noAccessCommand = \u00a7cVous n''avez pas acc\u00e8s \u00e0 cette commande.
noAccessPermission = \u00a7cVous n''avez pas la permissions d''acc\u00e9der \u00e0 cette {0} noAccessPermission = \u00a7cVous n''avez pas la permissions d''acc\u00e9der \u00e0 cette {0}
noDestroyPermission = \u00a7cVous n''avez pas la permission de d\u00e9truire ce {0}. noDestroyPermission = \u00a7cVous n''avez pas la permission de d\u00e9truire ce {0}.
noHelpFound = \u00a7cNo matching commands.
noHomeSet = Vous n''avez pas d\u00e9fini de home. noHomeSet = Vous n''avez pas d\u00e9fini de home.
noHomeSetPlayer = Le joueur n''a pas d\u00e9fini son home. noHomeSetPlayer = Le joueur n''a pas d\u00e9fini son home.
noKitPermission = \u00a7cVous avez besoin de la permission \u00a7c{0}\u00a7c pour utiliser ce kit. noKitPermission = \u00a7cVous avez besoin de la permission \u00a7c{0}\u00a7c pour utiliser ce kit.
@ -213,8 +215,11 @@ playerInJail = \u00a7cLe joueur est d\u00e9j\u00e0 dans la prison {0}.
playerJailed = \u00a77Le joueur {0} a \u00e9t\u00e9 emprisonn\u00e9. playerJailed = \u00a77Le joueur {0} a \u00e9t\u00e9 emprisonn\u00e9.
playerJailedFor = \u00a77{0} a \u00e9t\u00e9 emprisonn\u00e9 pour {1}. playerJailedFor = \u00a77{0} a \u00e9t\u00e9 emprisonn\u00e9 pour {1}.
playerKicked = \u00a7cPlayer {0} kicked: {1} playerKicked = \u00a7cPlayer {0} kicked: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cLe joueur {0} n''a jamais \u00e9t\u00e9 sur le serveur. playerNeverOnServer = \u00a7cLe joueur {0} n''a jamais \u00e9t\u00e9 sur le serveur.
playerNotFound = \u00a7cLe joueur est introuvable. playerNotFound = \u00a7cLe joueur est introuvable.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77Les mondes possibles sont les nombres 0 par {0}. possibleWorlds = \u00a77Les mondes possibles sont les nombres 0 par {0}.
powerToolAir = La commande ne peut pas \u00eatre attach\u00e9e \u00e0 l''air. powerToolAir = La commande ne peut pas \u00eatre attach\u00e9e \u00e0 l''air.

View File

@ -169,6 +169,7 @@ month = maand
months = maanden months = maanden
moreThanZero = Aantal moet groter zijn dan 0. moreThanZero = Aantal moet groter zijn dan 0.
msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2} msgFormat = \u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt = \u00a7cYou may not mute that player.
mutedPlayer = Speler {0} gemute. mutedPlayer = Speler {0} gemute.
mutedPlayerFor = Speler {0} is gemute voor {1}. mutedPlayerFor = Speler {0} is gemute voor {1}.
mutedUserSpeaks = {0} probeerde te praten, maar is gemute. mutedUserSpeaks = {0} probeerde te praten, maar is gemute.
@ -183,6 +184,7 @@ nickSet = \u00a77Je nickname is nu \u00a7c{0}
noAccessCommand = \u00a7cJe hebt geen toegang tot die opdracht. noAccessCommand = \u00a7cJe hebt geen toegang tot die opdracht.
noAccessPermission = \u00a7cJe hebt hier geen toegang voor {0}. noAccessPermission = \u00a7cJe hebt hier geen toegang voor {0}.
noDestroyPermission = \u00a7cJe hebt geen toegang om dat te vernietigen {0}. noDestroyPermission = \u00a7cJe hebt geen toegang om dat te vernietigen {0}.
noHelpFound = \u00a7cNo matching commands.
noHomeSet = Je hebt geen home gemaakt. noHomeSet = Je hebt geen home gemaakt.
noHomeSetPlayer = Speler heeft geen home. noHomeSetPlayer = Speler heeft geen home.
noKitPermission = \u00a7cJe hebt de \u00a7c{0}\u00a7c toestemming nodig om die kit te gebruiken. noKitPermission = \u00a7cJe hebt de \u00a7c{0}\u00a7c toestemming nodig om die kit te gebruiken.
@ -214,8 +216,11 @@ playerInJail = \u00a7cSpeler zit al in de gevangenis {0}.
playerJailed = \u00a77Speler {0} is in de gevangenis gezet. playerJailed = \u00a77Speler {0} is in de gevangenis gezet.
playerJailedFor = \u00a77Speler {0} is in de gevangenis gezet voor {1}. playerJailedFor = \u00a77Speler {0} is in de gevangenis gezet voor {1}.
playerKicked = \u00a7cPlayer {0} kicked: {1} playerKicked = \u00a7cPlayer {0} kicked: {1}
playerMuted = "\u00a77You have been muted"
playerMutedFor = "\u00a77You have been muted for {0}"
playerNeverOnServer = \u00a7cSpeler {0} is nooit op deze server geweest. playerNeverOnServer = \u00a7cSpeler {0} is nooit op deze server geweest.
playerNotFound = \u00a7cSpeler niet gevonden. playerNotFound = \u00a7cSpeler niet gevonden.
playerUnmuted = "\u00a77You have been unmuted"
pong = Pong! pong = Pong!
possibleWorlds = \u00a77Mogelijk zijn de werelden de nummer 0 tot en met {0}. possibleWorlds = \u00a77Mogelijk zijn de werelden de nummer 0 tot en met {0}.
powerToolAir = Command kan niet worden bevestigd aan de lucht. powerToolAir = Command kan niet worden bevestigd aan de lucht.

View File

@ -4,6 +4,7 @@ import com.avaje.ebean.config.ServerConfig;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Server; import org.bukkit.Server;
@ -244,4 +245,9 @@ public class FakeServer implements Server
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
public World getWorld(UUID uuid)
{
throw new UnsupportedOperationException("Not supported yet.");
}
} }

View File

@ -45,6 +45,8 @@ public class EssentialsProtect extends JavaPlugin implements IConf, IProtect
pm.registerEvent(Type.BLOCK_IGNITE, blockListener, Priority.Highest, this); pm.registerEvent(Type.BLOCK_IGNITE, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_BURN, blockListener, Priority.Highest, this); pm.registerEvent(Type.BLOCK_BURN, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this); pm.registerEvent(Type.BLOCK_BREAK, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_PISTON_EXTEND, blockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_PISTON_RETRACT, blockListener, Priority.Highest, this);
final EssentialsProtectEntityListener entityListener = new EssentialsProtectEntityListener(this); final EssentialsProtectEntityListener entityListener = new EssentialsProtectEntityListener(this);
pm.registerEvent(Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this); pm.registerEvent(Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this);

View File

@ -14,6 +14,8 @@ import org.bukkit.event.block.BlockBurnEvent;
import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockIgniteEvent;
import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
@ -58,7 +60,7 @@ public class EssentialsProtectBlockListener extends BlockListener
prot.alert(user, blockPlaced.getType().toString(), Util.i18n("alertPlaced")); prot.alert(user, blockPlaced.getType().toString(), Util.i18n("alertPlaced"));
} }
final Block below = blockPlaced.getFace(BlockFace.DOWN); final Block below = blockPlaced.getRelative(BlockFace.DOWN);
if (below.getType() == Material.RAILS if (below.getType() == Material.RAILS
&& prot.getSettingBool(ProtectConfig.prevent_block_on_rail) && prot.getSettingBool(ProtectConfig.prevent_block_on_rail)
&& prot.getStorage().isProtected(below, user.getName())) && prot.getStorage().isProtected(below, user.getName()))
@ -75,7 +77,7 @@ public class EssentialsProtectBlockListener extends BlockListener
protect.add(blockPlaced); protect.add(blockPlaced);
if (prot.getSettingBool(ProtectConfig.protect_below_rails)) if (prot.getSettingBool(ProtectConfig.protect_below_rails))
{ {
protect.add(blockPlaced.getFace(BlockFace.DOWN)); 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)
@ -115,7 +117,7 @@ public class EssentialsProtectBlockListener extends BlockListener
return; return;
} }
if (event.getBlock().getType() == Material.OBSIDIAN if (event.getBlock().getType() == Material.OBSIDIAN
|| event.getBlock().getFace(BlockFace.DOWN).getType() == Material.OBSIDIAN) || event.getBlock().getRelative(BlockFace.DOWN).getType() == Material.OBSIDIAN)
{ {
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation)); event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation));
return; return;
@ -260,14 +262,14 @@ public class EssentialsProtectBlockListener extends BlockListener
storage.unprotectBlock(block); storage.unprotectBlock(block);
if (type == Material.RAILS || type == Material.SIGN_POST) if (type == Material.RAILS || type == Material.SIGN_POST)
{ {
final Block below = block.getFace(BlockFace.DOWN); final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below); storage.unprotectBlock(below);
} }
else else
{ {
for (BlockFace blockFace : faces) for (BlockFace blockFace : faces)
{ {
final Block against = block.getFace(blockFace); final Block against = block.getRelative(blockFace);
storage.unprotectBlock(against); storage.unprotectBlock(against);
} }
} }
@ -276,7 +278,7 @@ public class EssentialsProtectBlockListener extends BlockListener
{ {
for (BlockFace blockFace : faces) for (BlockFace blockFace : faces)
{ {
final Block against = block.getFace(blockFace); final Block against = block.getRelative(blockFace);
storage.unprotectBlock(against); storage.unprotectBlock(against);
} }
} }
@ -296,14 +298,14 @@ public class EssentialsProtectBlockListener extends BlockListener
storage.unprotectBlock(block); storage.unprotectBlock(block);
if (type == Material.RAILS || type == Material.SIGN_POST) if (type == Material.RAILS || type == Material.SIGN_POST)
{ {
final Block below = block.getFace(BlockFace.DOWN); final Block below = block.getRelative(BlockFace.DOWN);
storage.unprotectBlock(below); storage.unprotectBlock(below);
} }
else else
{ {
for (BlockFace blockFace : faces) for (BlockFace blockFace : faces)
{ {
final Block against = block.getFace(blockFace); final Block against = block.getRelative(blockFace);
storage.unprotectBlock(against); storage.unprotectBlock(against);
} }
} }
@ -312,11 +314,107 @@ public class EssentialsProtectBlockListener extends BlockListener
{ {
for (BlockFace blockFace : faces) for (BlockFace blockFace : faces)
{ {
final Block against = block.getFace(blockFace); final Block against = block.getRelative(blockFace);
storage.unprotectBlock(against); storage.unprotectBlock(against);
} }
} }
} }
} }
} }
@Override
public void onBlockPistonExtend(BlockPistonExtendEvent event)
{
if (event.isCancelled())
{
return;
}
for (Block block : event.getBlocks())
{
if (prot.checkProtectionItems(ProtectConfig.blacklist_piston, block.getTypeId()))
{
event.setCancelled(true);
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
|| block.getType() == Material.RAILS)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
return;
}
if (prot.getSettingBool(ProtectConfig.protect_signs))
{
for (BlockFace blockFace : faces)
{
if (blockFace == BlockFace.DOWN)
{
continue;
}
final Block sign = block.getRelative(blockFace);
if ((blockFace == BlockFace.UP || blockFace == BlockFace.SELF)
&& sign.getType() == Material.SIGN_POST)
{
event.setCancelled(true);
return;
}
if ((blockFace == BlockFace.NORTH || blockFace == BlockFace.EAST
|| blockFace == BlockFace.SOUTH || blockFace == BlockFace.WEST
|| blockFace == BlockFace.SELF)
&& sign.getType() == Material.WALL_SIGN)
{
event.setCancelled(true);
return;
}
}
}
}
}
@Override
public void onBlockPistonRetract(BlockPistonRetractEvent event)
{
if (event.isCancelled() || !event.isSticky())
{
return;
}
final Block block = event.getRetractLocation().getBlock();
if (prot.checkProtectionItems(ProtectConfig.blacklist_piston, block.getTypeId()))
{
event.setCancelled(true);
return;
}
if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
|| block.getType() == Material.RAILS)
&& prot.getSettingBool(ProtectConfig.protect_rails))
{
event.setCancelled(true);
return;
}
if (prot.getSettingBool(ProtectConfig.protect_signs))
{
for (BlockFace blockFace : faces)
{
if (blockFace == BlockFace.DOWN)
{
continue;
}
final Block sign = block.getRelative(blockFace);
if ((blockFace == BlockFace.UP || blockFace == BlockFace.SELF)
&& sign.getType() == Material.SIGN_POST)
{
event.setCancelled(true);
return;
}
if ((blockFace == BlockFace.NORTH || blockFace == BlockFace.EAST
|| blockFace == BlockFace.SOUTH || blockFace == BlockFace.WEST
|| blockFace == BlockFace.SELF)
&& sign.getType() == Material.WALL_SIGN)
{
event.setCancelled(true);
return;
}
}
}
}
} }

View File

@ -240,19 +240,19 @@ public class EssentialsProtectEntityListener extends EntityListener
for (Block block : event.blockList()) for (Block block : event.blockList())
{ {
if ((block.getType() == Material.RAILS || block.getFace(BlockFace.UP).getType() == Material.RAILS) if ((block.getType() == Material.RAILS || block.getRelative(BlockFace.UP).getType() == Material.RAILS)
&& prot.getSettingBool(ProtectConfig.protect_rails)) && prot.getSettingBool(ProtectConfig.protect_rails))
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if ((block.getType() == Material.WALL_SIGN if ((block.getType() == Material.WALL_SIGN
|| block.getFace(BlockFace.NORTH).getType() == Material.WALL_SIGN || block.getRelative(BlockFace.NORTH).getType() == Material.WALL_SIGN
|| block.getFace(BlockFace.EAST).getType() == Material.WALL_SIGN || block.getRelative(BlockFace.EAST).getType() == Material.WALL_SIGN
|| block.getFace(BlockFace.SOUTH).getType() == Material.WALL_SIGN || block.getRelative(BlockFace.SOUTH).getType() == Material.WALL_SIGN
|| block.getFace(BlockFace.WEST).getType() == Material.WALL_SIGN || block.getRelative(BlockFace.WEST).getType() == Material.WALL_SIGN
|| block.getType() == Material.SIGN_POST || block.getType() == Material.SIGN_POST
|| block.getFace(BlockFace.UP).getType() == Material.SIGN_POST) || block.getRelative(BlockFace.UP).getType() == Material.SIGN_POST)
&& prot.getSettingBool(ProtectConfig.protect_signs)) && prot.getSettingBool(ProtectConfig.protect_signs))
{ {
event.setCancelled(true); event.setCancelled(true);

View File

@ -45,7 +45,8 @@ public enum ProtectConfig
alert_on_break("protect.alert.on-break"), alert_on_break("protect.alert.on-break"),
blacklist_placement("protect.blacklist.placement"), blacklist_placement("protect.blacklist.placement"),
blacklist_usage("protect.blacklist.usage"), blacklist_usage("protect.blacklist.usage"),
blacklist_break("protect.blacklist.break"); blacklist_break("protect.blacklist.break"),
blacklist_piston("protect.blacklist.piston");
private final String configName; private final String configName;
private final String defValueString; private final String defValueString;
private final boolean defValueBoolean; private final boolean defValueBoolean;

Binary file not shown.

Binary file not shown.