mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-01-24 11:54:35 +08:00
Wrap ItemDb accessors and move Item string matching to itemdb class.
This commit is contained in:
parent
fc63f63de6
commit
5eb3d9fa42
@ -48,6 +48,7 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import net.ess3.api.IItemDb;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Server;
|
||||
@ -748,7 +749,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemDb getItemDb()
|
||||
public IItemDb getItemDb()
|
||||
{
|
||||
return itemDb;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.metrics.Metrics;
|
||||
import com.earth2me.essentials.perm.PermissionsHandler;
|
||||
import com.earth2me.essentials.register.payment.Methods;
|
||||
import java.util.List;
|
||||
import net.ess3.api.IItemDb;
|
||||
import net.ess3.api.IJails;
|
||||
import net.ess3.api.IWarps;
|
||||
import org.bukkit.World;
|
||||
@ -68,7 +69,7 @@ public interface IEssentials extends Plugin
|
||||
|
||||
void showError(final CommandSender sender, final Throwable exception, final String commandLabel);
|
||||
|
||||
ItemDb getItemDb();
|
||||
IItemDb getItemDb();
|
||||
|
||||
UserMap getUserMap();
|
||||
|
||||
|
@ -141,6 +141,42 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb
|
||||
retval.setDurability(metaData);
|
||||
return retval;
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all"))
|
||||
{
|
||||
for (ItemStack stack : user.getInventory().getContents())
|
||||
{
|
||||
if (stack == null || stack.getType() == Material.AIR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
is.add(stack);
|
||||
}
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("blocks"))
|
||||
{
|
||||
for (ItemStack stack : user.getInventory().getContents())
|
||||
{
|
||||
if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
is.add(stack);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
is.add(get(args[0]));
|
||||
}
|
||||
return is;
|
||||
}
|
||||
|
||||
public String names(ItemStack item)
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
|
||||
package com.earth2me.essentials.api;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import java.util.List;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
|
||||
@ -9,4 +11,8 @@ public interface IItemDb
|
||||
ItemStack get(final String name, final int quantity) throws Exception;
|
||||
|
||||
ItemStack get(final String name) throws Exception;
|
||||
|
||||
public String names(ItemStack item);
|
||||
|
||||
List<ItemStack> getMatching(User user, String[] args) throws Exception;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import com.earth2me.essentials.Trade;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
import org.bukkit.Material;
|
||||
@ -28,60 +29,31 @@ public class Commandsell extends EssentialsCommand
|
||||
{
|
||||
throw new NotEnoughArgumentsException();
|
||||
}
|
||||
ItemStack is = null;
|
||||
if (args[0].equalsIgnoreCase("hand"))
|
||||
List<ItemStack> is = ess.getItemDb().getMatching(user, args);
|
||||
int count = 0;
|
||||
|
||||
for (ItemStack stack : is)
|
||||
{
|
||||
is = user.getItemInHand();
|
||||
try
|
||||
{
|
||||
totalWorth = totalWorth.add(sellItem(user, stack, args, is.size() > 1));
|
||||
count++;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all"))
|
||||
if (count > 1 && totalWorth.signum() > 0)
|
||||
{
|
||||
for (ItemStack stack : user.getInventory().getContents())
|
||||
{
|
||||
if (stack == null || stack.getType() == Material.AIR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
totalWorth = totalWorth.add(sellItem(user, stack, args, true));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (totalWorth.signum() > 0)
|
||||
{
|
||||
user.sendMessage(_("totalWorthAll", type, NumberUtil.displayCurrency(totalWorth, ess)));
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("blocks"))
|
||||
{
|
||||
for (ItemStack stack : user.getInventory().getContents())
|
||||
{
|
||||
if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
totalWorth = totalWorth.add(sellItem(user, stack, args, true));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
}
|
||||
if (totalWorth.signum() > 0)
|
||||
if (args[0].equalsIgnoreCase("blocks"))
|
||||
{
|
||||
user.sendMessage(_("totalWorthBlocks", type, NumberUtil.displayCurrency(totalWorth, ess)));
|
||||
}
|
||||
return;
|
||||
else
|
||||
{
|
||||
user.sendMessage(_("totalWorthAll", type, NumberUtil.displayCurrency(totalWorth, ess)));
|
||||
}
|
||||
}
|
||||
if (is == null)
|
||||
{
|
||||
is = ess.getItemDb().get(args[0]);
|
||||
}
|
||||
sellItem(user, is, args, false);
|
||||
}
|
||||
|
||||
private BigDecimal sellItem(User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception
|
||||
@ -155,7 +127,8 @@ public class Commandsell extends EssentialsCommand
|
||||
//TODO: Prices for Enchantments
|
||||
final ItemStack ris = is.clone();
|
||||
ris.setAmount(amount);
|
||||
if (!user.getInventory().containsAtLeast(ris, amount)) {
|
||||
if (!user.getInventory().containsAtLeast(ris, amount))
|
||||
{
|
||||
// This should never happen.
|
||||
throw new IllegalStateException("Trying to remove more items than are available.");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user