summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-07-01 01:33:09 +0200
committersnowleo <schneeleo@gmail.com>2011-07-01 01:33:09 +0200
commite596f859534766d90e21463b6364f9b0ff628b6c (patch)
tree52039da34c2baa76ac848004c91e6f93dc8a5801
parentaef2ca3e5d5c4d475b8d0b1ef15c2842c1c1ab8e (diff)
downloadEssentials-e596f859534766d90e21463b6364f9b0ff628b6c.tar
Essentials-e596f859534766d90e21463b6364f9b0ff628b6c.tar.gz
Essentials-e596f859534766d90e21463b6364f9b0ff628b6c.tar.lz
Essentials-e596f859534766d90e21463b6364f9b0ff628b6c.tar.xz
Essentials-e596f859534766d90e21463b6364f9b0ff628b6c.zip
Fix Trade signs
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java21
-rw-r--r--Essentials/src/com/earth2me/essentials/signs/SignTrade.java22
2 files changed, 24 insertions, 19 deletions
diff --git a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
index c1be18e7e..810103f78 100644
--- a/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
+++ b/Essentials/src/com/earth2me/essentials/signs/EssentialsSign.java
@@ -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"));
}
@@ -328,19 +328,24 @@ 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;
+ 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)
{
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"));
}