summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/ItemDb.java17
-rw-r--r--Essentials/src/com/earth2me/essentials/Worth.java68
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandsell.java80
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandworth.java126
-rw-r--r--Essentials/src/messages.properties2
-rw-r--r--Essentials/src/messages_cs.properties2
-rw-r--r--Essentials/src/messages_da.properties2
-rw-r--r--Essentials/src/messages_de.properties2
-rw-r--r--Essentials/src/messages_en.properties2
-rw-r--r--Essentials/src/messages_es.properties2
-rw-r--r--Essentials/src/messages_fi.properties2
-rw-r--r--Essentials/src/messages_fr.properties2
-rw-r--r--Essentials/src/messages_it.properties2
-rw-r--r--Essentials/src/messages_nl.properties2
-rw-r--r--Essentials/src/messages_pl.properties2
-rw-r--r--Essentials/src/messages_pt.properties2
-rw-r--r--Essentials/src/messages_ro.properties2
-rw-r--r--Essentials/src/messages_sv.properties2
-rw-r--r--Essentials/src/messages_zh.properties2
-rw-r--r--Essentials/src/messages_zh_HK.properties2
-rw-r--r--Essentials/src/messages_zh_TW.properties2
21 files changed, 205 insertions, 120 deletions
diff --git a/Essentials/src/com/earth2me/essentials/ItemDb.java b/Essentials/src/com/earth2me/essentials/ItemDb.java
index 8c4ce1603..83a3b0686 100644
--- a/Essentials/src/com/earth2me/essentials/ItemDb.java
+++ b/Essentials/src/com/earth2me/essentials/ItemDb.java
@@ -141,10 +141,12 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb
retval.setDurability(metaData);
return retval;
}
-
- public List<ItemStack> getMatching (User user, String[] args) throws Exception {
+
+ @Override
+ public List<ItemStack> getMatching(User user, String[] args) throws Exception
+ {
List<ItemStack> is = new ArrayList<ItemStack>();
-
+
if (args[0].equalsIgnoreCase("hand"))
{
is.add(user.getItemInHand());
@@ -158,7 +160,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb
continue;
}
is.add(stack);
- }
+ }
}
else if (args[0].equalsIgnoreCase("blocks"))
{
@@ -171,13 +173,18 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb
is.add(stack);
}
}
- else
+ else if (args.length > 0)
{
is.add(get(args[0]));
}
+ else {
+ is.add(user.getItemInHand());
+ }
+
return is;
}
+ @Override
public String names(ItemStack item)
{
ItemData itemData = new ItemData(item.getTypeId(), item.getDurability());
diff --git a/Essentials/src/com/earth2me/essentials/Worth.java b/Essentials/src/com/earth2me/essentials/Worth.java
index ac5dbfe9a..989cf38d9 100644
--- a/Essentials/src/com/earth2me/essentials/Worth.java
+++ b/Essentials/src/com/earth2me/essentials/Worth.java
@@ -1,9 +1,11 @@
package com.earth2me.essentials;
+import static com.earth2me.essentials.I18n._;
import java.io.File;
import java.math.BigDecimal;
import java.util.Locale;
import java.util.logging.Logger;
+import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@@ -43,6 +45,72 @@ public class Worth implements IConf
return result;
}
+ public int getAmount(IEssentials ess, User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception
+ {
+ if (is == null || is.getType() == Material.AIR)
+ {
+ throw new Exception(_("itemSellAir"));
+ }
+ int id = is.getTypeId();
+ int amount = 0;
+
+ if (args.length > 1)
+ {
+ amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
+ if (args[1].startsWith("-"))
+ {
+ amount = -amount;
+ }
+ }
+
+ boolean stack = args.length > 1 && args[1].endsWith("s");
+ boolean requireStack = ess.getSettings().isTradeInStacks(id);
+
+ if (requireStack && !stack)
+ {
+ throw new Exception(_("itemMustBeStacked"));
+ }
+
+ int max = 0;
+ for (ItemStack s : user.getInventory().getContents())
+ {
+ if (s == null || !s.isSimilar(is))
+ {
+ continue;
+ }
+ max += s.getAmount();
+ }
+
+ if (stack)
+ {
+ amount *= is.getType().getMaxStackSize();
+ }
+ if (amount < 1)
+ {
+ amount += max;
+ }
+
+ if (requireStack)
+ {
+ amount -= amount % is.getType().getMaxStackSize();
+ }
+ if (amount > max || amount < 1)
+ {
+ if (!isBulkSell)
+ {
+ user.sendMessage(_("itemNotEnough2"));
+ user.sendMessage(_("itemNotEnough3"));
+ throw new Exception(_("itemNotEnough1"));
+ }
+ else
+ {
+ return amount;
+ }
+ }
+
+ return amount;
+ }
+
public void setPrice(ItemStack itemStack, double price)
{
if (itemStack.getType().getData() == null)
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
index 3a8f5b9fa..773e94b68 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandsell.java
@@ -8,7 +8,6 @@ import java.math.BigDecimal;
import java.util.List;
import java.util.Locale;
import java.util.logging.Level;
-import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
@@ -32,15 +31,31 @@ public class Commandsell extends EssentialsCommand
List<ItemStack> is = ess.getItemDb().getMatching(user, args);
int count = 0;
+ boolean isBulk = is.size() > 1;
+
for (ItemStack stack : is)
{
try
{
- totalWorth = totalWorth.add(sellItem(user, stack, args, is.size() > 1));
- count++;
+ if (stack.getAmount() > 0)
+ {
+ totalWorth = totalWorth.add(sellItem(user, stack, args, isBulk));
+ count++;
+ for (ItemStack zeroStack : is)
+ {
+ if (!zeroStack.equals(stack) && zeroStack.isSimilar(stack))
+ {
+ zeroStack.setAmount(0);
+ }
+ }
+ }
}
catch (Exception e)
{
+ if (!isBulk)
+ {
+ throw e;
+ }
}
}
if (count > 1 && totalWorth.signum() > 0)
@@ -58,72 +73,21 @@ public class Commandsell extends EssentialsCommand
private BigDecimal sellItem(User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception
{
- if (is == null || is.getType() == Material.AIR)
- {
- throw new Exception(_("itemSellAir"));
- }
- int id = is.getTypeId();
- int amount = 0;
- if (args.length > 1)
- {
- amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
- if (args[1].startsWith("-"))
- {
- amount = -amount;
- }
- }
+ int amount = ess.getWorth().getAmount(ess, user, is, args, isBulkSell);
BigDecimal worth = ess.getWorth().getPrice(is);
- boolean stack = args.length > 1 && args[1].endsWith("s");
- boolean requireStack = ess.getSettings().isTradeInStacks(id);
if (worth == null)
{
throw new Exception(_("itemCannotBeSold"));
}
- if (requireStack && !stack)
- {
- throw new Exception(_("itemMustBeStacked"));
- }
-
-
- int max = 0;
- for (ItemStack s : user.getInventory().getContents())
- {
- if (s == null || !s.isSimilar(is))
- {
- continue;
- }
- max += s.getAmount();
- }
- if (stack)
- {
- amount *= is.getType().getMaxStackSize();
- }
- if (amount < 1)
- {
- amount += max;
- }
+ BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
- if (requireStack)
- {
- amount -= amount % is.getType().getMaxStackSize();
- }
- if (amount > max || amount < 1)
+ if (amount == 0)
{
- if (!isBulkSell)
- {
- user.sendMessage(_("itemNotEnough1"));
- user.sendMessage(_("itemNotEnough2"));
- throw new Exception(_("itemNotEnough3"));
- }
- else
- {
- return worth.multiply(BigDecimal.valueOf(amount));
- }
+ return result;
}
- BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
//TODO: Prices for Enchantments
final ItemStack ris = is.clone();
ris.setAmount(amount);
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandworth.java b/Essentials/src/com/earth2me/essentials/commands/Commandworth.java
index 7754e1c60..a662aa9c8 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandworth.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandworth.java
@@ -4,6 +4,7 @@ import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.NumberUtil;
import java.math.BigDecimal;
+import java.util.List;
import java.util.Locale;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
@@ -16,97 +17,108 @@ public class Commandworth extends EssentialsCommand
{
super("worth");
}
-
- //TODO: Remove duplication
+
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
- ItemStack iStack = user.getInventory().getItemInHand();
- int amount = iStack.getAmount();
-
- if (args.length > 0)
+ BigDecimal totalWorth = BigDecimal.ZERO;
+ String type = "";
+
+ List<ItemStack> is = ess.getItemDb().getMatching(user, args);
+ int count = 0;
+
+ boolean isBulk = is.size() > 1;
+
+ for (ItemStack stack : is)
{
- iStack = ess.getItemDb().get(args[0]);
- }
-
- try
- {
- if (args.length > 1)
+ try
{
- amount = Integer.parseInt(args[1]);
+ if (stack.getAmount() > 0)
+ {
+ totalWorth = totalWorth.add(itemWorth(user.getBase(), user, stack, args));
+ count++;
+ for (ItemStack zeroStack : is)
+ {
+ if (!zeroStack.equals(stack) && zeroStack.isSimilar(stack))
+ {
+ zeroStack.setAmount(0);
+ }
+ }
+ }
+
+ }
+ catch (Exception e)
+ {
+ if (!isBulk)
+ {
+ throw e;
+ }
}
}
- catch (NumberFormatException ex)
- {
- amount = iStack.getType().getMaxStackSize();
- }
-
- iStack.setAmount(amount);
- final BigDecimal worth = ess.getWorth().getPrice(iStack);
- if (worth == null)
+ if (count > 1 && totalWorth.signum() > 0)
{
- throw new Exception(_("itemCannotBeSold"));
+ if (args[0].equalsIgnoreCase("blocks"))
+ {
+ user.sendMessage(_("totalSellableBlocks", type, NumberUtil.displayCurrency(totalWorth, ess)));
+ }
+ else
+ {
+ user.sendMessage(_("totalSellableAll", type, NumberUtil.displayCurrency(totalWorth, ess)));
+ }
}
-
- final BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
-
- user.sendMessage(iStack.getDurability() != 0
- ? _("worthMeta",
- iStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
- iStack.getDurability(),
- NumberUtil.displayCurrency(result, ess),
- amount,
- NumberUtil.displayCurrency(worth, ess))
- : _("worth",
- iStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
- NumberUtil.displayCurrency(result, ess),
- amount,
- NumberUtil.displayCurrency(worth, ess)));
}
-
+
@Override
- protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
+ String type = "";
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
-
- ItemStack iStack = ess.getItemDb().get(args[0]);
- int amount = iStack.getAmount();
-
- try
+
+ ItemStack stack = ess.getItemDb().get(args[0]);
+
+ itemWorth(sender, null, stack, args);
+ }
+
+ private BigDecimal itemWorth(CommandSender sender, User user, ItemStack is, String[] args) throws Exception
+ {
+ int amount = 1;
+ if (user == null)
{
if (args.length > 1)
{
- amount = Integer.parseInt(args[1]);
+ amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
}
}
- catch (NumberFormatException ex)
+ else
{
- amount = iStack.getType().getMaxStackSize();
+ amount = ess.getWorth().getAmount(ess, user, is, args, true);
}
-
- iStack.setAmount(amount);
- final BigDecimal worth = ess.getWorth().getPrice(iStack);
+
+ BigDecimal worth = ess.getWorth().getPrice(is);
+
if (worth == null)
{
throw new Exception(_("itemCannotBeSold"));
}
-
- final BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
-
- sender.sendMessage(iStack.getDurability() != 0
+
+ BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
+
+ sender.sendMessage(is.getDurability() != 0
? _("worthMeta",
- iStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
- iStack.getDurability(),
+ is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
+ is.getDurability(),
NumberUtil.displayCurrency(result, ess),
amount,
NumberUtil.displayCurrency(worth, ess))
: _("worth",
- iStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
+ is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
NumberUtil.displayCurrency(result, ess),
amount,
NumberUtil.displayCurrency(worth, ess)));
+
+ return result;
}
}
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index 45e896bd9..3bd30c8bf 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_cs.properties b/Essentials/src/messages_cs.properties
index c5dd4c304..9fc3bb4d9 100644
--- a/Essentials/src/messages_cs.properties
+++ b/Essentials/src/messages_cs.properties
@@ -526,3 +526,5 @@ inventoryClearFail=\u00a74Hrac {0} \u00a74nema\u00a7c {1} \u00a74z\u00a7c {2}\u0
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_da.properties b/Essentials/src/messages_da.properties
index 5f52a32ce..450090e02 100644
--- a/Essentials/src/messages_da.properties
+++ b/Essentials/src/messages_da.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index 822c406ce..a21fe3c3a 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76von {1} \u00a76entfernt.
inventoryClearingStack=\u00a7c {0} {1} \u00a76von {2} \u00a76entfernt.
inventoryClearFail=\u00a74Spieler {0} \u00a74hat keine\u00a7c {1} {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
index 45e896bd9..3bd30c8bf 100644
--- a/Essentials/src/messages_en.properties
+++ b/Essentials/src/messages_en.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_es.properties b/Essentials/src/messages_es.properties
index 7fcb192f8..eb4471278 100644
--- a/Essentials/src/messages_es.properties
+++ b/Essentials/src/messages_es.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_fi.properties b/Essentials/src/messages_fi.properties
index 166221169..6563291b7 100644
--- a/Essentials/src/messages_fi.properties
+++ b/Essentials/src/messages_fi.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_fr.properties b/Essentials/src/messages_fr.properties
index 8e25d3b70..b238eb1b3 100644
--- a/Essentials/src/messages_fr.properties
+++ b/Essentials/src/messages_fr.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Tous les\u00a7c {0} \u00a76de l''inventaire de
inventoryClearingStack=\u00a7c{0} \u00a7c {1} \u00a76ont \u00e9t\u00e9 supprim\u00e9s de l''inventaire de {2}\u00a76.
inventoryClearFail=\u00a74Le joueur {0} \u00a74n''a pas\u00a7c {1}\u00a7c {2}\u00a74 sur lui.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_it.properties b/Essentials/src/messages_it.properties
index 06e0220e7..1e36f0488 100644
--- a/Essentials/src/messages_it.properties
+++ b/Essentials/src/messages_it.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_nl.properties b/Essentials/src/messages_nl.properties
index 67c801691..c36688ae3 100644
--- a/Essentials/src/messages_nl.properties
+++ b/Essentials/src/messages_nl.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76van {1}\u00a76 is verwij
inventoryClearingStack=\u00a76\u00a7c {0} \u00a76stuks\u00a7c {1} \u00a76zijn verwijderd uit de inventaris van {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74heeft geen\u00a7c {1} \u00a74stuks\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_pl.properties b/Essentials/src/messages_pl.properties
index c768ed0ae..f8151982e 100644
--- a/Essentials/src/messages_pl.properties
+++ b/Essentials/src/messages_pl.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a77Wyczyszczono wszystko\u00a7c {0} \u00a77od {1}\
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_pt.properties b/Essentials/src/messages_pt.properties
index 18c7f31de..8666abdc2 100644
--- a/Essentials/src/messages_pt.properties
+++ b/Essentials/src/messages_pt.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_ro.properties b/Essentials/src/messages_ro.properties
index 0766b5118..d02121153 100644
--- a/Essentials/src/messages_ro.properties
+++ b/Essentials/src/messages_ro.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_sv.properties b/Essentials/src/messages_sv.properties
index 42b01b078..485d73f74 100644
--- a/Essentials/src/messages_sv.properties
+++ b/Essentials/src/messages_sv.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Rensade alla\u00a7c {0} \u00a76fr\u00e5n {1}\u0
inventoryClearingStack=\u00a76Tog bort \u00a7c {0} \u00a76av\u00a7c {1} \u00a76fr\u00e5n {2}\u00a76.
inventoryClearFail=\u00a74Spelaren {0} \u00a74har inte \u00a7c {1} \u00a74av\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_zh.properties b/Essentials/src/messages_zh.properties
index 0dc0e57ba..96f02c1a3 100644
--- a/Essentials/src/messages_zh.properties
+++ b/Essentials/src/messages_zh.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_zh_HK.properties b/Essentials/src/messages_zh_HK.properties
index f65c27fbd..a1ee38a73 100644
--- a/Essentials/src/messages_zh_HK.properties
+++ b/Essentials/src/messages_zh_HK.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
diff --git a/Essentials/src/messages_zh_TW.properties b/Essentials/src/messages_zh_TW.properties
index b29c29ae5..c1e58f925 100644
--- a/Essentials/src/messages_zh_TW.properties
+++ b/Essentials/src/messages_zh_TW.properties
@@ -519,3 +519,5 @@ inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
localNoOne=
+totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
+totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.