summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/InventoryWorkaround.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Teleport.java20
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtp.java4
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpall.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpo.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java34
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignBlockListener.java39
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignPlayerListener.java9
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignProtection.java111
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignTrade.java22
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignWarp.java2
-rw-r--r--Essentials/src/items.csv14
-rw-r--r--lib/bukkit-0.0.1-SNAPSHOT.jarbin2691058 -> 2696052 bytes
-rw-r--r--lib/craftbukkit-0.0.1-SNAPSHOT.jarbin7683430 -> 7704329 bytes
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
index 32c122305..862601752 100644
--- a/lib/bukkit-0.0.1-SNAPSHOT.jar
+++ b/lib/bukkit-0.0.1-SNAPSHOT.jar
Binary files differ
diff --git a/lib/craftbukkit-0.0.1-SNAPSHOT.jar b/lib/craftbukkit-0.0.1-SNAPSHOT.jar
index 1de0f1621..216a4a943 100644
--- a/lib/craftbukkit-0.0.1-SNAPSHOT.jar
+++ b/lib/craftbukkit-0.0.1-SNAPSHOT.jar
Binary files differ