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

View file

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

View file

@ -19,7 +19,14 @@ public class SignFree extends EssentialsSign
@Override
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;
}

View file

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

View file

@ -17,12 +17,14 @@ public class SignWarp extends EssentialsSign
@Override
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);
final String warpName = sign.getLine(1);
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;
}
else

View file

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