Skip to content

Commit

Permalink
Things
Browse files Browse the repository at this point in the history
  • Loading branch information
hsyyid committed Jan 24, 2016
1 parent 21133a1 commit b599431
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,11 @@ public void onPlayerInteractBlock(InteractBlockEvent.Secondary event, @First Pla
player.sendMessage(Text.of(TextColors.BLUE, "[SpongyChest]: ", TextColors.GREEN, "Set item id on ChestShop."));
}

if (itemType != null && chest.getInventory().contains(itemType) && ItemUtils.canRemoveItemsFromInventory(chest.getInventory(), itemType, itemAmount))
if (itemType != null && chest.getInventory().contains(itemType) && ItemUtils.canRemoveItemsFromInventory(chest.getInventory(), itemType, thisShop.getMeta(), itemAmount))
{
ItemUtils.removeItemsFromInventory(chest.getInventory(), itemType, itemAmount);
if (thisShop.getMeta() != -1)
ItemUtils.removeItemsFromInventory(chest.getInventory(), itemType, thisShop.getMeta(), itemAmount);

UniqueAccount uniqueAccount = null;
UniqueAccount ownerAccount = null;
BigDecimal amount = new BigDecimal(price);
Expand Down
23 changes: 19 additions & 4 deletions src/main/java/io/github/hsyyid/chestshop/utils/ItemUtils.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.hsyyid.chestshop.utils;

import org.spongepowered.api.block.tileentity.carrier.TileEntityCarrier;
import org.spongepowered.api.data.DataQuery;
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.inventory.Inventory;
import org.spongepowered.api.item.inventory.ItemStack;
Expand All @@ -10,7 +11,7 @@

public class ItemUtils
{
public static boolean canRemoveItemsFromInventory(TileEntityInventory<TileEntityCarrier> inventory, ItemType itemType, int quantity)
public static boolean canRemoveItemsFromInventory(TileEntityInventory<TileEntityCarrier> inventory, ItemType itemType, int meta, int quantity)
{
int removedItems = 0;

Expand All @@ -22,7 +23,7 @@ public static boolean canRemoveItemsFromInventory(TileEntityInventory<TileEntity
{
ItemStack stack = item.get();

if (stack.getItem() == itemType && removedItems != quantity)
if (stack.getItem() == itemType && removedItems != quantity && ItemUtils.hasMeta(stack, meta))
{
if (stack.getQuantity() + removedItems <= quantity)
{
Expand All @@ -46,7 +47,21 @@ else if (removedItems == quantity)
return false;
}

public static void removeItemsFromInventory(TileEntityInventory<TileEntityCarrier> inventory, ItemType itemType, int quantity)
public static boolean hasMeta(ItemStack itemStack, int meta)
{
Optional<Object> object = itemStack.toContainer().get(DataQuery.of("UnsafeDamage"));

if (object.isPresent() && object.get().equals(meta))
{
return true;
}
else
{
return false;
}
}

public static void removeItemsFromInventory(TileEntityInventory<TileEntityCarrier> inventory, ItemType itemType, int meta, int quantity)
{
int removedItems = 0;

Expand All @@ -58,7 +73,7 @@ public static void removeItemsFromInventory(TileEntityInventory<TileEntityCarrie
{
ItemStack stack = item.get();

if (stack.getItem() == itemType && removedItems != quantity)
if (stack.getItem() == itemType && removedItems != quantity && ItemUtils.hasMeta(stack, meta))
{
if (stack.getQuantity() + removedItems <= quantity)
{
Expand Down

0 comments on commit b599431

Please sign in to comment.