mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-12-26 19:18:29 +01:00
Moved some code from EssentialsSign to SignTrade, because it's only needed there.
This commit is contained in:
parent
49bdf5719e
commit
34f650e270
@ -130,152 +130,7 @@ public class EssentialsSign
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final void validateTrade(final ISign sign, final int index, final boolean amountNeeded, final IEssentials ess) throws SignException
|
|
||||||
{
|
|
||||||
final String line = sign.getLine(index).trim();
|
|
||||||
if (line.isEmpty())
|
|
||||||
{
|
|
||||||
throw new SignException("Empty line");
|
|
||||||
}
|
|
||||||
final String[] split = line.split("[ :]+");
|
|
||||||
|
|
||||||
if (split.length == 1 && !amountNeeded)
|
|
||||||
{
|
|
||||||
final Double money = getMoney(split[0]);
|
|
||||||
if (money != null)
|
|
||||||
{
|
|
||||||
sign.setLine(index, Util.formatCurrency(money) + ":0");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (split.length == 2 && amountNeeded)
|
|
||||||
{
|
|
||||||
final Double money = getMoney(split[0]);
|
|
||||||
final Double amount = getDouble(split[1]);
|
|
||||||
if (money != null && amount != null)
|
|
||||||
{
|
|
||||||
sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount).substring(1));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (split.length == 2 && !amountNeeded)
|
|
||||||
{
|
|
||||||
final int amount = getInteger(split[0]);
|
|
||||||
final ItemStack item = getItemStack(split[1], amount);
|
|
||||||
if (amount < 1 || item.getTypeId() == 0)
|
|
||||||
{
|
|
||||||
throw new SignException(Util.i18n("moreThanZero"));
|
|
||||||
}
|
|
||||||
sign.setLine(index, amount + " " + split[1] + ":0");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (split.length == 3 && amountNeeded)
|
|
||||||
{
|
|
||||||
final int stackamount = getInteger(split[0]);
|
|
||||||
final ItemStack item = getItemStack(split[1], stackamount);
|
|
||||||
int amount = getInteger(split[2]);
|
|
||||||
amount -= amount % stackamount;
|
|
||||||
if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
|
|
||||||
{
|
|
||||||
throw new SignException(Util.i18n("moreThanZero"));
|
|
||||||
}
|
|
||||||
sign.setLine(index, stackamount + " " + split[1] + ":" + amount);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
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
|
|
||||||
{
|
|
||||||
final String line = sign.getLine(index).trim();
|
|
||||||
if (line.isEmpty())
|
|
||||||
{
|
|
||||||
throw new SignException("Empty line");
|
|
||||||
}
|
|
||||||
final String[] split = line.split("[ :]+");
|
|
||||||
|
|
||||||
if (split.length == 2)
|
|
||||||
{
|
|
||||||
final Double money = getMoney(split[0]);
|
|
||||||
final Double amount = getDouble(split[1]);
|
|
||||||
if (money != null && amount != null)
|
|
||||||
{
|
|
||||||
return new Trade(fullAmount ? amount : money, ess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (split.length == 3)
|
|
||||||
{
|
|
||||||
final int stackamount = getInteger(split[0]);
|
|
||||||
final ItemStack item = getItemStack(split[1], stackamount);
|
|
||||||
int amount = getInteger(split[2]);
|
|
||||||
amount -= amount % stackamount;
|
|
||||||
if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
|
|
||||||
{
|
|
||||||
throw new SignException(Util.i18n("moreThanZero"));
|
|
||||||
}
|
|
||||||
item.setAmount(fullAmount ? amount : stackamount);
|
|
||||||
return new Trade(item, ess);
|
|
||||||
}
|
|
||||||
throw new SignException(Util.format("invalidSignLine", index));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void substractAmount(final ISign sign, final int index, final Trade trade) throws SignException
|
|
||||||
{
|
|
||||||
final Double money = trade.getMoney();
|
|
||||||
if (money != null) {
|
|
||||||
changeAmount(sign, index, -money);
|
|
||||||
}
|
|
||||||
final ItemStack item = trade.getItemStack();
|
|
||||||
if (item != null) {
|
|
||||||
changeAmount(sign, index, -item.getAmount());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
protected final void addAmount(final ISign sign, final int index, final Trade trade) throws SignException
|
|
||||||
{
|
|
||||||
final Double money = trade.getMoney();
|
|
||||||
if (money != null) {
|
|
||||||
changeAmount(sign, index, money);
|
|
||||||
}
|
|
||||||
final ItemStack item = trade.getItemStack();
|
|
||||||
if (item != null) {
|
|
||||||
changeAmount(sign, index, item.getAmount());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void changeAmount(final ISign sign, final int index, final double value) throws SignException
|
|
||||||
{
|
|
||||||
final String line = sign.getLine(index).trim();
|
|
||||||
if (line.isEmpty())
|
|
||||||
{
|
|
||||||
throw new SignException("Empty line");
|
|
||||||
}
|
|
||||||
final String[] split = line.split("[ :]+");
|
|
||||||
|
|
||||||
if (split.length == 2)
|
|
||||||
{
|
|
||||||
final Double money = getMoney(split[0]);
|
|
||||||
final Double amount = getDouble(split[1]);
|
|
||||||
if (money != null && amount != null)
|
|
||||||
{
|
|
||||||
sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount+value).substring(1));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (split.length == 3)
|
|
||||||
{
|
|
||||||
final int stackamount = getInteger(split[0]);
|
|
||||||
final ItemStack item = getItemStack(split[1], stackamount);
|
|
||||||
int amount = getInteger(split[2]);
|
|
||||||
sign.setLine(index, stackamount + " " + split[1] + ":" + (amount+Math.round(value)));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
throw new SignException(Util.format("invalidSignLine", index));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void validateTrade(final ISign sign, final int amountIndex, final int itemIndex,
|
protected final void validateTrade(final ISign sign, final int amountIndex, final int itemIndex,
|
||||||
final User player, final IEssentials ess) throws SignException
|
final User player, final IEssentials ess) throws SignException
|
||||||
@ -342,13 +197,13 @@ public class EssentialsSign
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Double getMoney(final String line) throws SignException
|
protected final Double getMoney(final String line) throws SignException
|
||||||
{
|
{
|
||||||
final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+");
|
final boolean isMoney = line.matches("^[^0-9-\\.][\\.0-9]+");
|
||||||
return isMoney ? getDouble(line.substring(1)) : null;
|
return isMoney ? getDouble(line.substring(1)) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Double getDouble(final String line) throws SignException
|
protected final Double getDouble(final String line) throws SignException
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -4,6 +4,8 @@ import com.earth2me.essentials.ChargeException;
|
|||||||
import com.earth2me.essentials.IEssentials;
|
import com.earth2me.essentials.IEssentials;
|
||||||
import com.earth2me.essentials.Trade;
|
import com.earth2me.essentials.Trade;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
|
import com.earth2me.essentials.Util;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
public class SignTrade extends EssentialsSign
|
public class SignTrade extends EssentialsSign
|
||||||
@ -50,7 +52,7 @@ public class SignTrade extends EssentialsSign
|
|||||||
@Override
|
@Override
|
||||||
protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
|
protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException
|
||||||
{
|
{
|
||||||
if (sign.getLine(3).substring(2).equalsIgnoreCase(username))
|
if (sign.getLine(3).length() > 3 && sign.getLine(3).substring(2).equalsIgnoreCase(username))
|
||||||
{
|
{
|
||||||
final Trade stored1 = getTrade(sign, 1, true, ess);
|
final Trade stored1 = getTrade(sign, 1, true, ess);
|
||||||
final Trade stored2 = getTrade(sign, 2, true, ess);
|
final Trade stored2 = getTrade(sign, 2, true, ess);
|
||||||
@ -63,4 +65,156 @@ public class SignTrade extends EssentialsSign
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected final void validateTrade(final ISign sign, final int index, final boolean amountNeeded, final IEssentials ess) throws SignException
|
||||||
|
{
|
||||||
|
final String line = sign.getLine(index).trim();
|
||||||
|
if (line.isEmpty())
|
||||||
|
{
|
||||||
|
throw new SignException("Empty line");
|
||||||
|
}
|
||||||
|
final String[] split = line.split("[ :]+");
|
||||||
|
|
||||||
|
if (split.length == 1 && !amountNeeded)
|
||||||
|
{
|
||||||
|
final Double money = getMoney(split[0]);
|
||||||
|
if (money != null)
|
||||||
|
{
|
||||||
|
sign.setLine(index, Util.formatCurrency(money) + ":0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.length == 2 && amountNeeded)
|
||||||
|
{
|
||||||
|
final Double money = getMoney(split[0]);
|
||||||
|
final Double amount = getDouble(split[1]);
|
||||||
|
if (money != null && amount != null)
|
||||||
|
{
|
||||||
|
sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount).substring(1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.length == 2 && !amountNeeded)
|
||||||
|
{
|
||||||
|
final int amount = getInteger(split[0]);
|
||||||
|
final ItemStack item = getItemStack(split[1], amount);
|
||||||
|
if (amount < 1 || item.getTypeId() == 0)
|
||||||
|
{
|
||||||
|
throw new SignException(Util.i18n("moreThanZero"));
|
||||||
|
}
|
||||||
|
sign.setLine(index, amount + " " + split[1] + ":0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.length == 3 && amountNeeded)
|
||||||
|
{
|
||||||
|
final int stackamount = getInteger(split[0]);
|
||||||
|
final ItemStack item = getItemStack(split[1], stackamount);
|
||||||
|
int amount = getInteger(split[2]);
|
||||||
|
amount -= amount % stackamount;
|
||||||
|
if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
|
||||||
|
{
|
||||||
|
throw new SignException(Util.i18n("moreThanZero"));
|
||||||
|
}
|
||||||
|
sign.setLine(index, stackamount + " " + split[1] + ":" + amount);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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
|
||||||
|
{
|
||||||
|
final String line = sign.getLine(index).trim();
|
||||||
|
if (line.isEmpty())
|
||||||
|
{
|
||||||
|
throw new SignException("Empty line");
|
||||||
|
}
|
||||||
|
final String[] split = line.split("[ :]+");
|
||||||
|
|
||||||
|
if (split.length == 2)
|
||||||
|
{
|
||||||
|
final Double money = getMoney(split[0]);
|
||||||
|
final Double amount = getDouble(split[1]);
|
||||||
|
if (money != null && amount != null)
|
||||||
|
{
|
||||||
|
return new Trade(fullAmount ? amount : money, ess);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.length == 3)
|
||||||
|
{
|
||||||
|
final int stackamount = getInteger(split[0]);
|
||||||
|
final ItemStack item = getItemStack(split[1], stackamount);
|
||||||
|
int amount = getInteger(split[2]);
|
||||||
|
amount -= amount % stackamount;
|
||||||
|
if (amount < 1 || stackamount < 1 || item.getTypeId() == 0)
|
||||||
|
{
|
||||||
|
throw new SignException(Util.i18n("moreThanZero"));
|
||||||
|
}
|
||||||
|
item.setAmount(fullAmount ? amount : stackamount);
|
||||||
|
return new Trade(item, ess);
|
||||||
|
}
|
||||||
|
throw new SignException(Util.format("invalidSignLine", index));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void substractAmount(final ISign sign, final int index, final Trade trade) throws SignException
|
||||||
|
{
|
||||||
|
final Double money = trade.getMoney();
|
||||||
|
if (money != null)
|
||||||
|
{
|
||||||
|
changeAmount(sign, index, -money);
|
||||||
|
}
|
||||||
|
final ItemStack item = trade.getItemStack();
|
||||||
|
if (item != null)
|
||||||
|
{
|
||||||
|
changeAmount(sign, index, -item.getAmount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void addAmount(final ISign sign, final int index, final Trade trade) throws SignException
|
||||||
|
{
|
||||||
|
final Double money = trade.getMoney();
|
||||||
|
if (money != null)
|
||||||
|
{
|
||||||
|
changeAmount(sign, index, money);
|
||||||
|
}
|
||||||
|
final ItemStack item = trade.getItemStack();
|
||||||
|
if (item != null)
|
||||||
|
{
|
||||||
|
changeAmount(sign, index, item.getAmount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void changeAmount(final ISign sign, final int index, final double value) throws SignException
|
||||||
|
{
|
||||||
|
final String line = sign.getLine(index).trim();
|
||||||
|
if (line.isEmpty())
|
||||||
|
{
|
||||||
|
throw new SignException("Empty line");
|
||||||
|
}
|
||||||
|
final String[] split = line.split("[ :]+");
|
||||||
|
|
||||||
|
if (split.length == 2)
|
||||||
|
{
|
||||||
|
final Double money = getMoney(split[0]);
|
||||||
|
final Double amount = getDouble(split[1]);
|
||||||
|
if (money != null && amount != null)
|
||||||
|
{
|
||||||
|
sign.setLine(index, Util.formatCurrency(money) + ":" + Util.formatCurrency(amount + value).substring(1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.length == 3)
|
||||||
|
{
|
||||||
|
final int stackamount = getInteger(split[0]);
|
||||||
|
final ItemStack item = getItemStack(split[1], stackamount);
|
||||||
|
int amount = getInteger(split[2]);
|
||||||
|
sign.setLine(index, stackamount + " " + split[1] + ":" + (amount + Math.round(value)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
throw new SignException(Util.format("invalidSignLine", index));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user