diff options
17 files changed, 155 insertions, 112 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index c329e3b20..1656a4e29 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -46,7 +46,7 @@ import org.bukkit.plugin.java.*; public class Essentials extends JavaPlugin implements IEssentials { public static final String AUTHORS = "Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology"; - public static final int minBukkitBuildVersion = 939; + public static final int minBukkitBuildVersion = 953; private static final Logger logger = Logger.getLogger("Minecraft"); private Settings settings; private TNTExplodeListener tntListener; diff --git a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java index b2e1d7d43..4e70346fb 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java @@ -304,6 +304,8 @@ public class EssentialsBlockListener extends BlockListener case JACK_O_LANTERN: case WOOD_PLATE: case STONE_PLATE: + case PISTON_STICKY_BASE: + case PISTON_BASE: is.setDurability((short)0); break; } diff --git a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java index 9ac63c374..3cbcd1b2e 100644 --- a/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java +++ b/Essentials/src/com/earth2me/essentials/InventoryWorkaround.java @@ -80,7 +80,7 @@ public final class InventoryWorkaround ItemStack[] combined = new ItemStack[items.length]; for (int i = 0; i < items.length; i++) { - if (items[i] == null) + if (items[i] == null || items[i].getAmount() < 1) { continue; } diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java index e63d1699e..429834b02 100644 --- a/Essentials/src/com/earth2me/essentials/Teleport.java +++ b/Essentials/src/com/earth2me/essentials/Teleport.java @@ -10,6 +10,7 @@ import org.bukkit.entity.Entity; public class Teleport implements Runnable { + private static final double MOVE_CONSTANT = 0.3; private static class Target { private final Location location; @@ -57,9 +58,9 @@ public class Teleport implements Runnable this.started = System.currentTimeMillis(); this.delay = delay; this.health = user.getHealth(); - this.initX = Math.round(user.getLocation().getX() * 10000); - this.initY = Math.round(user.getLocation().getY() * 10000); - this.initZ = Math.round(user.getLocation().getZ() * 10000); + this.initX = Math.round(user.getLocation().getX()*MOVE_CONSTANT); + this.initY = Math.round(user.getLocation().getY()*MOVE_CONSTANT); + this.initZ = Math.round(user.getLocation().getZ()*MOVE_CONSTANT); this.teleportTarget = target; this.chargeFor = chargeFor; } @@ -72,9 +73,9 @@ public class Teleport implements Runnable cancel(); return; } - if (Math.round(user.getLocation().getX() * 10000) != initX - || Math.round(user.getLocation().getY() * 10000) != initY - || Math.round(user.getLocation().getZ() * 10000) != initZ + if (Math.round(user.getLocation().getX()*MOVE_CONSTANT) != initX + || Math.round(user.getLocation().getY()*MOVE_CONSTANT) != initY + || Math.round(user.getLocation().getZ()*MOVE_CONSTANT) != initZ || user.getHealth() < health) { // user moved, cancel teleport cancel(true); @@ -237,9 +238,12 @@ public class Teleport implements Runnable now(new Target(loc)); } - public void now(Entity entity) throws Exception + public void now(Entity entity, boolean cooldown) throws Exception { - cooldown(false); + if (cooldown) + { + cooldown(false); + } now(new Target(entity)); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java index a8b805e8d..c147c5d25 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java @@ -44,7 +44,7 @@ public class Commandtp extends EssentialsCommand charge(user); User target = getPlayer(server, args, 0); User toPlayer = getPlayer(server, args, 1); - target.getTeleport().now(toPlayer); + target.getTeleport().now(toPlayer, false); target.sendMessage(Util.format("teleportAtoB", user.getDisplayName(), toPlayer.getDisplayName())); break; } @@ -61,7 +61,7 @@ public class Commandtp extends EssentialsCommand sender.sendMessage(Util.i18n("teleporting")); User target = getPlayer(server, args, 0); User toPlayer = getPlayer(server, args, 1); - target.getTeleport().now(toPlayer); + target.getTeleport().now(toPlayer, false); target.sendMessage(Util.format("teleportAtoB", Console.NAME, toPlayer.getDisplayName())); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java index d564e90ea..cc58944d7 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpall.java @@ -45,7 +45,7 @@ public class Commandtpall extends EssentialsCommand } try { - u.getTeleport().now(p); + u.getTeleport().now(p, false); } catch (Exception ex) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java index 6b74f5062..2a9e34da8 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java @@ -23,7 +23,7 @@ public class Commandtpo extends EssentialsCommand //Just basically the old tp command User p = getPlayer(server, args, 0); charge(user); - user.getTeleport().now(p); + user.getTeleport().now(p, false); user.sendMessage(Util.i18n("teleporting")); } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java index 5dc7a4478..593d17b59 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java @@ -23,7 +23,7 @@ public class Commandtpohere extends EssentialsCommand //Just basically the old tphere command User p = getPlayer(server, args, 0); charge(user); - p.getTeleport().now(user); + p.getTeleport().now(user, false); user.sendMessage(Util.i18n("teleporting")); } } diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java index f46f82e87..810103f78 100644 --- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java +++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java @@ -194,7 +194,7 @@ public class EssentialsSign { if (block.getFace(BlockFace.UP).getType() == Material.SIGN_POST) { - return false; + return true; } final BlockFace[] directions = new BlockFace[] { @@ -211,11 +211,11 @@ public class EssentialsSign final org.bukkit.material.Sign sign = (org.bukkit.material.Sign)signblock.getState().getData(); if (sign.getFacing() == blockFace) { - return false; + return true; } } } - return true; + return false; } protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException, ChargeException @@ -290,7 +290,7 @@ public class EssentialsSign protected final int getIntegerPositive(final String line) throws SignException { final int quantity = getInteger(line); - if (quantity <= 1) + if (quantity < 1) { throw new SignException(Util.i18n("moreThanZero")); } @@ -327,20 +327,25 @@ public class EssentialsSign protected final Double getMoney(final String line) throws SignException { - final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+"); - return isMoney ? getDouble(line.substring(1)) : null; + final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+$"); + return isMoney ? getDoublePositive(line.substring(1)) : null; + } + + protected final Double getDoublePositive(final String line) throws SignException + { + final double quantity = getDouble(line); + if (quantity <= 0.0) + { + throw new SignException(Util.i18n("moreThanZero")); + } + return quantity; } protected final Double getDouble(final String line) throws SignException { try { - final double quantity = Double.parseDouble(line); - if (quantity <= 0.0) - { - throw new SignException(Util.i18n("moreThanZero")); - } - return quantity; + return Double.parseDouble(line); } catch (NumberFormatException ex) { @@ -381,15 +386,12 @@ public class EssentialsSign { final ItemStack stack = getItemStack(item, quantity); sign.setLine(index, quantity + " " + item); - return new Trade(quantity, ess); + return new Trade(stack, ess); } } else { return new Trade(money, ess); - - - } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java index b7a47de14..dfa1ed052 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java @@ -1,6 +1,8 @@ package com.earth2me.essentials.signs; import com.earth2me.essentials.IEssentials; +import java.util.logging.Level; +import java.util.logging.Logger; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; @@ -17,12 +19,13 @@ import org.bukkit.event.block.SignChangeEvent; public class SignBlockListener extends BlockListener { private final transient IEssentials ess; - + private final static Logger LOGGER = Logger.getLogger("Minecraft"); + public SignBlockListener(IEssentials ess) { this.ess = ess; } - + @Override public void onBlockBreak(final BlockBreakEvent event) { @@ -30,13 +33,13 @@ public class SignBlockListener extends BlockListener { return; } - + if (protectSignsAndBlocks(event.getBlock(), event.getPlayer())) { event.setCancelled(true); } } - + public boolean protectSignsAndBlocks(final Block block, final Player player) { final int mat = block.getTypeId(); @@ -58,6 +61,7 @@ public class SignBlockListener extends BlockListener // prevent any signs be broken by destroying the block they are attached to if (EssentialsSign.checkIfBlockBreaksSigns(block)) { + LOGGER.log(Level.INFO, "Prevented that a block was broken next to a sign."); return true; } for (Signs signs : Signs.values()) @@ -66,13 +70,14 @@ public class SignBlockListener extends BlockListener if (sign.getBlocks().contains(block.getType()) && !sign.onBlockBreak(block, player, ess)) { + LOGGER.log(Level.INFO, "A block was protected by a sign."); return true; } } } return false; } - + @Override public void onSignChange(final SignChangeEvent event) { @@ -83,6 +88,11 @@ public class SignBlockListener extends BlockListener for (Signs signs : Signs.values()) { final EssentialsSign sign = signs.getSign(); + if (event.getLine(0).equalsIgnoreCase(sign.getSuccessName())) + { + event.setCancelled(true); + return; + } if (event.getLine(0).equalsIgnoreCase(sign.getTemplateName()) && !sign.onSignCreate(event, ess)) { @@ -91,7 +101,7 @@ public class SignBlockListener extends BlockListener } } } - + @Override public void onBlockPlace(final BlockPlaceEvent event) { @@ -99,7 +109,14 @@ public class SignBlockListener extends BlockListener { return; } - + + final Block against = event.getBlockAgainst(); + if (against.getType() == Material.WALL_SIGN + || against.getType() == Material.SIGN_POST) + { + event.setCancelled(true); + return; + } final Block block = event.getBlock(); if (block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) @@ -117,7 +134,7 @@ public class SignBlockListener extends BlockListener } } } - + @Override public void onBlockBurn(final BlockBurnEvent event) { @@ -125,7 +142,7 @@ public class SignBlockListener extends BlockListener { return; } - + final Block block = event.getBlock(); if ((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST @@ -145,7 +162,7 @@ public class SignBlockListener extends BlockListener } } } - + @Override public void onBlockIgnite(final BlockIgniteEvent event) { @@ -153,7 +170,7 @@ public class SignBlockListener extends BlockListener { return; } - + if (protectSignsAndBlocks(event.getBlock(), event.getPlayer())) { event.setCancelled(true); diff --git a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java index ba94868af..1df9e3640 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java @@ -5,6 +5,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.craftbukkit.block.CraftSign; +import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerListener; @@ -30,13 +31,17 @@ public class SignPlayerListener extends PlayerListener final int mat = block.getTypeId(); if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId()) { + if (event.getAction() != Action.RIGHT_CLICK_BLOCK) + { + return; + } final Sign csign = new CraftSign(block); for (Signs signs : Signs.values()) { final EssentialsSign sign = signs.getSign(); - if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName()) - && !sign.onSignInteract(block, event.getPlayer(), ess)) + if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())) { + sign.onSignInteract(block, event.getPlayer(), ess); event.setCancelled(true); return; } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java index 8e0f4461f..555bb0114 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java @@ -21,7 +21,7 @@ import org.bukkit.inventory.ItemStack; public class SignProtection extends EssentialsSign { private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class); - + public SignProtection() { super("Protection"); @@ -30,25 +30,27 @@ public class SignProtection extends EssentialsSign protectedBlocks.add(Material.FURNACE); protectedBlocks.add(Material.DISPENSER); } - + @Override protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException { sign.setLine(3, "§4" + username); - if (hasAdjacentBlock(sign.getBlock()) && isBlockProtected(sign.getBlock(), player, username) != SignProtectionState.NOT_ALLOWED) + if (hasAdjacentBlock(sign.getBlock()) && isBlockProtected(sign.getBlock(), player, username, true) != SignProtectionState.NOT_ALLOWED) { sign.setLine(3, "§1" + username); + return true; } - return true; + player.sendMessage("§4You are not allowed to create sign here."); + return false; } - + @Override protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException { final SignProtectionState state = checkProtectionSign(sign, player, username); return state == SignProtectionState.OWNER; } - + public boolean hasAdjacentBlock(final Block block, final Block... ignoredBlocks) { final Block[] faces = getAdjacentBlocks(block); @@ -68,10 +70,10 @@ public class SignProtection extends EssentialsSign } return false; } - + private void checkIfSignsAreBroken(final Block block, final User player, final String username, final IEssentials ess) { - final Map<Location, SignProtectionState> signs = getConnectedSigns(block, player, username); + final Map<Location, SignProtectionState> signs = getConnectedSigns(block, player, username, false); for (Map.Entry<Location, SignProtectionState> entry : signs.entrySet()) { if (entry.getValue() != SignProtectionState.NOSIGN) @@ -86,14 +88,14 @@ public class SignProtection extends EssentialsSign } } } - - private Map<Location, SignProtectionState> getConnectedSigns(final Block block, final User user, final String username) + + 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>(); - getConnectedSigns(block, signs, user, username, 2); + getConnectedSigns(block, signs, user, username, secure ? 4 : 2); return signs; } - + 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); @@ -106,20 +108,20 @@ public class SignProtection extends EssentialsSign } final SignProtectionState check = checkProtectionSign(b, user, username); signs.put(loc, check); - + if (protectedBlocks.contains(b.getType()) && depth > 0) { getConnectedSigns(b, signs, user, username, depth - 1); } } } - - + + public enum SignProtectionState { NOT_ALLOWED, ALLOWED, NOSIGN, OWNER } - + private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) { if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) @@ -132,7 +134,7 @@ public class SignProtection extends EssentialsSign } return SignProtectionState.NOSIGN; } - + private SignProtectionState checkProtectionSign(final ISign sign, final User user, final String username) { if (user == null || username == null) @@ -155,13 +157,13 @@ public class SignProtection extends EssentialsSign return SignProtectionState.ALLOWED; } } - if (sign.getLine(3).equalsIgnoreCase(username)) + if (sign.getLine(3).substring(2).equalsIgnoreCase(username)) { return SignProtectionState.OWNER; } return SignProtectionState.NOT_ALLOWED; } - + private Block[] getAdjacentBlocks(final Block block) { return new Block[] @@ -174,10 +176,10 @@ public class SignProtection extends EssentialsSign block.getFace(BlockFace.UP) }; } - - public SignProtectionState isBlockProtected(final Block block, final User user, final String username) + + public SignProtectionState isBlockProtected(final Block block, final User user, final String username, boolean secure) { - final Map<Location, SignProtectionState> signs = getConnectedSigns(block, user, username); + final Map<Location, SignProtectionState> signs = getConnectedSigns(block, user, username, secure); SignProtectionState retstate = SignProtectionState.NOSIGN; for (SignProtectionState state : signs.values()) { @@ -192,7 +194,7 @@ public class SignProtection extends EssentialsSign } return retstate; } - + public boolean isBlockProtected(final Block block) { final Block[] faces = getAdjacentBlocks(block); @@ -209,7 +211,7 @@ public class SignProtection extends EssentialsSign if (protectedBlocks.contains(b.getType())) { final Block[] faceChest = getAdjacentBlocks(b); - + for (Block a : faceChest) { if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) @@ -225,7 +227,7 @@ public class SignProtection extends EssentialsSign } return false; } - + @Override public Set<Material> getBlocks() { @@ -235,81 +237,78 @@ public class SignProtection extends EssentialsSign @Override protected boolean onBlockPlace(final Block block, final User player, final String username, final IEssentials ess) throws SignException { - final SignProtectionState state = isBlockProtected(block, player, username); - - if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN) + for (Block adjBlock : getAdjacentBlocks(block)) { - return true; - } - - if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED) - && player.isAuthorized("essentials.signs.protection.override")) - { - return true; + final SignProtectionState state = isBlockProtected(adjBlock, player, username, true); + + if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED) + && !player.isAuthorized("essentials.signs.protection.override")) + { + player.sendMessage(Util.format("noPlacePermission", block.getType().toString().toLowerCase())); + return false; + } } - - - player.sendMessage(Util.format("noPlacePermission", block.getType().toString().toLowerCase())); - return false; + return true; + } @Override protected boolean onBlockInteract(final Block block, final User player, final String username, final IEssentials ess) throws SignException { - final SignProtectionState state = isBlockProtected(block, player, username); - + final SignProtectionState state = isBlockProtected(block, player, username, false); + if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN || state == SignProtectionState.ALLOWED) { return true; } - + if (state == SignProtectionState.NOT_ALLOWED && player.isAuthorized("essentials.signs.protection.override")) { return true; } - - + + player.sendMessage(Util.format("noAccessPermission", block.getType().toString().toLowerCase())); return false; } - + @Override protected boolean onBlockBreak(final Block block, final User player, final String username, final IEssentials ess) throws SignException { - final SignProtectionState state = isBlockProtected(block, player, username); - + final SignProtectionState state = isBlockProtected(block, player, username, false); + if (state == SignProtectionState.OWNER || state == SignProtectionState.NOSIGN) { checkIfSignsAreBroken(block, player, username, ess); return true; } - + if ((state == SignProtectionState.ALLOWED || state == SignProtectionState.NOT_ALLOWED) && player.isAuthorized("essentials.signs.protection.override")) { checkIfSignsAreBroken(block, player, username, ess); return true; } - - + + player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase())); return false; } - + @Override public boolean onBlockExplode(final Block block, final IEssentials ess) { - final SignProtectionState state = isBlockProtected(block, null, null); - + final SignProtectionState state = isBlockProtected(block, null, null, false); + return state == SignProtectionState.NOSIGN; } - + @Override public boolean onBlockBurn(final Block block, final IEssentials ess) { - final SignProtectionState state = isBlockProtected(block, null, null); - + final SignProtectionState state = isBlockProtected(block, null, null, false); + return state == SignProtectionState.NOSIGN; } } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java index 5a0354afa..e63ff49b8 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignTrade.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignTrade.java @@ -20,7 +20,7 @@ public class SignTrade extends EssentialsSign { validateTrade(sign, 1, false, ess); validateTrade(sign, 2, true, ess); - final Trade charge = getTrade(sign, 2, true, ess); + final Trade charge = getTrade(sign, 2, true, true, ess); charge.isAffordableFor(player); sign.setLine(3, "§8" + username); charge.charge(player); @@ -32,14 +32,14 @@ public class SignTrade extends EssentialsSign { if (sign.getLine(3).substring(2).equalsIgnoreCase(username)) { - final Trade stored = getTrade(sign, 1, true, ess); + final Trade stored = getTrade(sign, 1, true, true, ess); substractAmount(sign, 1, stored); stored.pay(player); } else { - final Trade charge = getTrade(sign, 1, false, ess); - final Trade trade = getTrade(sign, 2, false, ess); + final Trade charge = getTrade(sign, 1, false, false, ess); + final Trade trade = getTrade(sign, 2, false, true, ess); charge.isAffordableFor(player); substractAmount(sign, 2, trade); trade.pay(player); @@ -54,8 +54,8 @@ public class SignTrade extends EssentialsSign { if (sign.getLine(3).length() > 3 && sign.getLine(3).substring(2).equalsIgnoreCase(username)) { - final Trade stored1 = getTrade(sign, 1, true, ess); - final Trade stored2 = getTrade(sign, 2, true, ess); + final Trade stored1 = getTrade(sign, 1, true, false, ess); + final Trade stored2 = getTrade(sign, 2, true, false, ess); stored1.pay(player); stored2.pay(player); return true; @@ -88,7 +88,7 @@ public class SignTrade extends EssentialsSign if (split.length == 2 && amountNeeded) { final Double money = getMoney(split[0]); - final Double amount = getDouble(split[1]); + final Double amount = getDoublePositive(split[1]); if (money != null && amount != null) { sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount).substring(1)); @@ -124,7 +124,7 @@ public class SignTrade extends EssentialsSign throw new SignException(Util.format("invalidSignLine", index)); } - protected final Trade getTrade(final ISign sign, final int index, final boolean fullAmount, final IEssentials ess) throws SignException + protected final Trade getTrade(final ISign sign, final int index, final boolean fullAmount, final boolean notEmpty, final IEssentials ess) throws SignException { final String line = sign.getLine(index).trim(); if (line.isEmpty()) @@ -136,7 +136,7 @@ public class SignTrade extends EssentialsSign if (split.length == 2) { final Double money = getMoney(split[0]); - final Double amount = getDouble(split[1]); + final Double amount = notEmpty ? getDoublePositive(split[1]) : getDouble(split[1]); if (money != null && amount != null) { return new Trade(fullAmount ? amount : money, ess); @@ -147,9 +147,9 @@ public class SignTrade extends EssentialsSign { final int stackamount = getIntegerPositive(split[0]); final ItemStack item = getItemStack(split[1], stackamount); - int amount = getIntegerPositive(split[2]); + int amount = getInteger(split[2]); amount -= amount % stackamount; - if (amount < 1 || stackamount < 1 || item.getTypeId() == 0) + if (notEmpty && (amount < 1 || stackamount < 1 || item.getTypeId() == 0)) { throw new SignException(Util.i18n("moreThanZero")); } diff --git a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java index 776d97924..244450d8a 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignWarp.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignWarp.java @@ -51,7 +51,7 @@ public class SignWarp extends EssentialsSign if ((!group.isEmpty() && ("§2Everyone".equals(group) || player.inGroup(group))) - || (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName))) + || (group.isEmpty() && (!ess.getSettings().getPerWarpPermission() || player.isAuthorized("essentials.warp." + warpName)))) { final Trade charge = getTrade(sign, 3, ess); try diff --git a/Essentials/src/items.csv b/Essentials/src/items.csv index 845170a00..2268c7def 100644 --- a/Essentials/src/items.csv +++ b/Essentials/src/items.csv @@ -447,6 +447,12 @@ detecttrack,28,0 detectrail,28,0
dtrack,28,0
drail,28,0
+pistonstickybase,29,0
+stickypiston,29,0
+stickyp,29,0
+psticky,29,0
+spiston,29,0
+pistons,29,0
spiderweb,30,0
sweb,30,0
web,30,0
@@ -466,6 +472,11 @@ deadshrub,32,0 shrubdead,32,0
dshrub,32,0
shrubd,32,0
+pistonbase,33,0
+piston,33,0
+pistonblock,33,0
+pistonextension,34,0
+pistonext,34,0
whitecloth,35,0
whitewool,35,0
whitecotton,35,0
@@ -595,6 +606,8 @@ blackcotton,35,15 blacloth,35,15
blawool,35,15
blacotton,35,15
+pistonmovingpiece,36,0
+pistonmp,36,0
yellowflower,37,0
yflower,37,0
flower,37,0
@@ -1957,6 +1970,7 @@ diode,356,0 cookie,357,0
map,358,0
chart,358,0
+shears,359,0
goldmusicrecord,2256,0
goldmusicdisk,2256,0
goldmusiccd,2256,0
diff --git a/lib/bukkit-0.0.1-SNAPSHOT.jar b/lib/bukkit-0.0.1-SNAPSHOT.jar Binary files differindex 32c122305..862601752 100644 --- a/lib/bukkit-0.0.1-SNAPSHOT.jar +++ b/lib/bukkit-0.0.1-SNAPSHOT.jar diff --git a/lib/craftbukkit-0.0.1-SNAPSHOT.jar b/lib/craftbukkit-0.0.1-SNAPSHOT.jar Binary files differindex 1de0f1621..216a4a943 100644 --- a/lib/craftbukkit-0.0.1-SNAPSHOT.jar +++ b/lib/craftbukkit-0.0.1-SNAPSHOT.jar |