Fix and give better sign errors.

This commit is contained in:
KHobbits 2012-09-24 00:19:39 +01:00
parent d722e6a9f0
commit f1930e76d6
6 changed files with 21 additions and 2 deletions

View file

@ -438,11 +438,13 @@ public class EssentialsSign
{ {
private final transient SignChangeEvent event; private final transient SignChangeEvent event;
private final transient Block block; private final transient Block block;
private final transient Sign sign;
public EventSign(final SignChangeEvent event) public EventSign(final SignChangeEvent event)
{ {
this.event = event; this.event = event;
this.block = event.getBlock(); this.block = event.getBlock();
this.sign = (Sign)block.getState();
} }
@Override @Override
@ -455,6 +457,8 @@ public class EssentialsSign
public final void setLine(final int index, final String text) public final void setLine(final int index, final String text)
{ {
event.setLine(index, text); event.setLine(index, text);
sign.setLine(index, text);
updateSign();
} }
@Override @Override
@ -466,6 +470,7 @@ public class EssentialsSign
@Override @Override
public void updateSign() public void updateSign()
{ {
sign.update();
} }
} }

View file

@ -21,11 +21,13 @@ public class SignEnchant extends EssentialsSign
final String[] enchantLevel = sign.getLine(2).split(":"); final String[] enchantLevel = sign.getLine(2).split(":");
if (enchantLevel.length != 2) if (enchantLevel.length != 2)
{ {
sign.setLine(2, "§c<enchant>");
throw new SignException(_("invalidSignLine", 3)); throw new SignException(_("invalidSignLine", 3));
} }
final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]); final Enchantment enchantment = Enchantments.getByName(enchantLevel[0]);
if (enchantment == null) if (enchantment == null)
{ {
sign.setLine(2, "§c<enchant>");
throw new SignException(_("enchantmentNotFound")); throw new SignException(_("enchantmentNotFound"));
} }
int level; int level;
@ -35,6 +37,7 @@ public class SignEnchant extends EssentialsSign
} }
catch (NumberFormatException ex) catch (NumberFormatException ex)
{ {
sign.setLine(2, "§c<enchant>");
throw new SignException(ex.getMessage(), ex); throw new SignException(ex.getMessage(), ex);
} }
if (level < 1 || level > enchantment.getMaxLevel()) if (level < 1 || level > enchantment.getMaxLevel())

View file

@ -19,7 +19,14 @@ public class SignFree extends EssentialsSign
@Override @Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{ {
getItemStack(sign.getLine(1), 1, ess); try {
getItemStack(sign.getLine(1), 1, ess);
}
catch (SignException ex)
{
sign.setLine(1, "§c<item>");
throw new SignException(ex.getMessage(), ex);
}
return true; return true;
} }

View file

@ -25,6 +25,7 @@ public class SignRepair extends EssentialsSign
} }
else if (!repairTarget.equalsIgnoreCase("all") && !repairTarget.equalsIgnoreCase("hand") ) else if (!repairTarget.equalsIgnoreCase("all") && !repairTarget.equalsIgnoreCase("hand") )
{ {
sign.setLine(1, "§c<hand|all>");
throw new SignException(_("invalidSignLine", 2)); throw new SignException(_("invalidSignLine", 2));
} }
validateTrade(sign, 2, ess); validateTrade(sign, 2, ess);

View file

@ -17,12 +17,14 @@ public class SignWarp extends EssentialsSign
@Override @Override
protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
{ {
ess.getLogger().info("triggered warp sign create");
validateTrade(sign, 3, ess); validateTrade(sign, 3, ess);
final String warpName = sign.getLine(1); final String warpName = sign.getLine(1);
if (warpName.isEmpty()) if (warpName.isEmpty())
{ {
sign.setLine(1, "§dWarp name!"); ess.getLogger().info("trying to change sign to show error");
sign.setLine(1, "§c<Warp name>");
return false; return false;
} }
else else

View file

@ -29,6 +29,7 @@ public class SignWeather extends EssentialsSign
sign.setLine(1, "§2Storm"); sign.setLine(1, "§2Storm");
return true; return true;
} }
sign.setLine(1, "§c<sun|storm>");
throw new SignException(_("onlySunStorm")); throw new SignException(_("onlySunStorm"));
} }