- Баллы
- 96
- Имя в Minecraft
- Xezard
Доброго времени суток, уважаемые форумчане.
Сразу к делу.
Не найдя нормального магазина на версию 1.9.4 решил написать свой.
За небольшой срок написал таковой, но возникла проблема.
Если в инвентаре имеется, к примеру, 4 блока земли и я продаю их - команда срабатывает.
Если в инвентаре лежит 4 блока земли по одному блоку в каждом слоте - команда не работает и пишет что предметов не хватает.
И это вполне очевидно, ведь я проверяю условия на каждый отдельный слот, а не на весь инвентарь в целом.
Вопрос:
Каким образом можно решить мою проблему?
Я конечно, понимаю, что можно сделать HashMap, или просто Map и заносить туда инвентарь целиком, а после - работать с мапой.
Но не представляю каким образом это может выглядеть.
То, что имею на данный момент:
- Commands:
Прошу помощи знающих людей)
Любые комментарии по коду приветствуются
Сразу к делу.
Не найдя нормального магазина на версию 1.9.4 решил написать свой.
За небольшой срок написал таковой, но возникла проблема.
Если в инвентаре имеется, к примеру, 4 блока земли и я продаю их - команда срабатывает.
Если в инвентаре лежит 4 блока земли по одному блоку в каждом слоте - команда не работает и пишет что предметов не хватает.
И это вполне очевидно, ведь я проверяю условия на каждый отдельный слот, а не на весь инвентарь в целом.
Вопрос:
Каким образом можно решить мою проблему?
Я конечно, понимаю, что можно сделать HashMap, или просто Map и заносить туда инвентарь целиком, а после - работать с мапой.
Но не представляю каким образом это может выглядеть.
То, что имею на данный момент:
- Commands:
Java:
if (args.length == 4 && args[0].equalsIgnoreCase("sell"))
{
Player player = (Player) sender;
Inventory inventory = player.getInventory();
String[] split = args[1].split(":");
if (!inventory.containsAtLeast(new ItemStack(Material.valueOf(split[0]), 1, Byte.valueOf(split[1])), 1))
{
player.sendMessage(no_item);
return true;
}
for (int i = 0; i < inventory.getSize(); i++)
{
ItemStack itemStack = inventory.getItem(i);
if (itemStack != null && itemStack.getType().equals(Material.valueOf(split[0])))
{
if (itemStack.getAmount() < Integer.valueOf(args[2]))
{
player.sendMessage(no_item_to_sell);
break;
}
int amount = itemStack.getAmount() - Integer.valueOf(args[2]);
ItemStack item = new ItemStack(Material.valueOf(split[0]), amount, Byte.valueOf(split[1]));
itemStack.setAmount(amount);
inventory.setItem(i, amount > 0 ? item : null);
this.plugin.giveMoney(player, Double.parseDouble(args[3]));
player.updateInventory();
break;
}
}
}
Прошу помощи знающих людей)
Любые комментарии по коду приветствуются
