seppuku/src/main/java/me/rigamortis/seppuku/api/util/InventoryUtil.java

109 lines
3.1 KiB
Java

package me.rigamortis.seppuku.api.util;
import net.minecraft.block.Block;
import net.minecraft.block.BlockEnderChest;
import net.minecraft.block.BlockObsidian;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
/**
* @author noil
*/
public final class InventoryUtil {
private static final Minecraft mc = Minecraft.getMinecraft();
public static boolean isInventoryFull() {
for (int i = 0; i < 36; i++) {
if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
return false;
}
}
return true;
}
public static boolean hasItem(Item input) {
for (int i = 0; i < 36; i++) {
final Item item = mc.player.inventory.getStackInSlot(i).getItem();
if (item == input) {
return true;
}
}
return false;
}
public static int getItemCount(Item input) {
int items = 0;
for (int i = 0; i < 45; i++) {
final Item item = mc.player.inventory.getStackInSlot(i).getItem();
if (item == input) {
items += 1;
}
}
return items;
}
public static int getBlockCount(Block input) {
int blocks = 0;
for (int i = 0; i < 45; i++) {
final ItemStack itemStack = mc.player.inventory.getStackInSlot(i);
if (itemStack.getItem() instanceof ItemBlock) {
final ItemBlock itemBlock = (ItemBlock) itemStack.getItem();
if (itemBlock.getBlock() == input) {
blocks += itemStack.getCount();
}
}
}
return blocks;
}
public static int getSlotForItem(Item input) {
for (int i = 0; i < 36; i++) {
final Item item = mc.player.inventory.getStackInSlot(i).getItem();
if (item == input) {
return i;
}
}
return -1;
}
public static boolean isItemStackEnderChest(final ItemStack itemStack) {
if (itemStack.getItem() instanceof ItemBlock)
return ((ItemBlock) itemStack.getItem()).getBlock() instanceof BlockEnderChest;
return false;
}
public static int findEnderChestInHotbar(final EntityPlayerSP player) {
for (int index = 0; InventoryPlayer.isHotbar(index); index++)
if (isItemStackEnderChest(player.inventory.getStackInSlot(index)))
return index;
return -1;
}
public static boolean isItemStackObsidian(final ItemStack itemStack) {
if (itemStack.getItem() instanceof ItemBlock)
return ((ItemBlock) itemStack.getItem()).getBlock() instanceof BlockObsidian;
return false;
}
public static int findObsidianInHotbar(final EntityPlayerSP player) {
for (int index = 0; InventoryPlayer.isHotbar(index); index++)
if (isItemStackObsidian(player.inventory.getStackInSlot(index)))
return index;
return -1;
}
}