本文整理汇总了Java中net.minecraft.inventory.IInventory.getStackInSlot方法的典型用法代码示例。如果您正苦于以下问题:Java IInventory.getStackInSlot方法的具体用法?Java IInventory.getStackInSlot怎么用?Java IInventory.getStackInSlot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.minecraft.inventory.IInventory
的用法示例。
在下文中一共展示了IInventory.getStackInSlot方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: findStack
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
@Nullable
public BeltGetter findStack(EntityPlayer player)
{
IInventory playerInv = player.inventory;
for (int i = 0; i < playerInv.getSizeInventory(); i++)
{
ItemStack inSlot = playerInv.getStackInSlot(i);
if (inSlot.getCount() > 0)
{
if (inSlot.getItem() instanceof ItemToolBelt)
{
return new InventoryBeltGetter(player, i);
}
}
}
return null;
}
示例2: getStackWithInventory
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
public static ItemStack getStackWithInventory(IInventory inventory, IBlockState state) {
if (inventory != null && inventory.getSizeInventory() > 0 && state != null) {
ItemStack stack = new ItemStack(Item.getItemFromBlock(state.getBlock()));
NBTTagCompound stackNBT = new NBTTagCompound();//stack.getSubCompound("BlockEntityTag", true);
NBTTagList stackList = new NBTTagList();
for (int i = 0; i < inventory.getSizeInventory(); i++) {
if (inventory.getStackInSlot(i) == null) {
continue;
}
NBTTagCompound slotNBT = new NBTTagCompound();
slotNBT.setByte("Slot", (byte) i);
inventory.getStackInSlot(i).writeToNBT(slotNBT);
stackList.appendTag(slotNBT);
}
stackNBT.setTag("Items", stackList);
stack.setTagInfo("BlockEntityTag", stackNBT);
return stack;
}
return null;
}
示例3: arrowNock
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
@SubscribeEvent
public void arrowNock(ArrowNockEvent event) {
if (event.result == null)
return;
IInventory invt = event.entityPlayer.inventory;
for (int i = 0; i < invt.getSizeInventory(); i++) {
ItemStack stack = invt.getStackInSlot(i);
if (stack == null || stack.stackSize <= 0)
continue;
if (stack.getItem() == Items.arrow)
return;
if (stack.getItem() == ModItems.tipped_arrow) {
event.setCanceled(true);
event.entityPlayer.setItemInUse(event.result, event.result.getItem().getMaxItemUseDuration(event.result));
return;
}
}
}
示例4: pullItemFromSlot
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
/**
* Pulls from the specified slot in the inventory and places in any available slot in the hopper. Returns true if
* the entire stack was moved
*/
private static boolean pullItemFromSlot(IHopper hopper, IInventory inventoryIn, int index, EnumFacing direction)
{
ItemStack itemstack = inventoryIn.getStackInSlot(index);
if (itemstack != null && canExtractItemFromSlot(inventoryIn, itemstack, index, direction))
{
ItemStack itemstack1 = itemstack.copy();
ItemStack itemstack2 = putStackInInventoryAllSlots(hopper, inventoryIn.decrStackSize(index, 1), (EnumFacing)null);
if (itemstack2 == null || itemstack2.stackSize == 0)
{
inventoryIn.markDirty();
return true;
}
inventoryIn.setInventorySlotContents(index, itemstack1);
}
return false;
}
示例5: pushItemIInventory
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
protected boolean pushItemIInventory(IInventory inventory, int slot) {
if(blockItemStack.stackSize > 1) {
ItemStack oldStack = blockItemStack.copy();
ItemStack newStack = blockItemStack.splitStack(1);
if(inventory.getStackInSlot(slot) == null) {
if(debug)
FMLLog.log(Level.INFO, "fF");
inventory.setInventorySlotContents(slot, newStack.copy());
newStack = null;
markDirty = true;
} else if(inventory.getStackInSlot(slot).getItem() == newStack.getItem() && inventory.getStackInSlot(slot).stackSize < inventory.getInventoryStackLimit() && inventory.getStackInSlot(slot).stackSize < inventory.getStackInSlot(slot).getMaxStackSize()) {
if(debug)
FMLLog.log(Level.INFO, "fG");
newStack.stackSize += inventory.getStackInSlot(slot).stackSize;
inventory.setInventorySlotContents(slot, newStack.copy());
newStack = null;
markDirty = true;
} else {
if(debug)
FMLLog.log(Level.INFO, "fGa");
}
if(newStack == null || newStack.stackSize == 0) {
if(debug)
FMLLog.log(Level.INFO, "fDa");
markDirty = true;
} else {
blockItemStack = oldStack;
}
}
return markDirty;
}
示例6: getItemStack
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
private static ItemStack getItemStack(IInventory inventory, Item item)
{
for (int index = 0; index < inventory.getSizeInventory(); index++)
{
if(inventory.getStackInSlot(index) == null)
continue;
if(inventory.getStackInSlot(index).getItem() == item)
return inventory.getStackInSlot(index);
}
return null;
}
示例7: isSimilar
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
private boolean isSimilar(IInventory handler, ItemStack stack) {
Set<Integer> ores = getOres(stack);
for (int i = 0 ; i < handler.getSizeInventory() ; i++) {
ItemStack s = handler.getStackInSlot(i);
if (matchStack(stack, ores, s)) {
return true;
}
}
return false;
}
示例8: getFirstItem
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
public static ItemStack getFirstItem(IInventory inventory, Predicate<ItemStack> pred) {
for (int i = 0; i<inventory.getSizeInventory(); i++) {
ItemStack stack=inventory.getStackInSlot(i);
if (!stack.isEmpty() && pred.apply(stack))
return stack;
}
return ItemStack.EMPTY;
}
示例9: isInventoryFull
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
/**
* Returns false if the inventory has any room to place items in
*/
private boolean isInventoryFull(IInventory inventoryIn, EnumFacing side)
{
if (inventoryIn instanceof ISidedInventory)
{
ISidedInventory isidedinventory = (ISidedInventory)inventoryIn;
int[] aint = isidedinventory.getSlotsForFace(side);
for (int k = 0; k < aint.length; ++k)
{
ItemStack itemstack1 = isidedinventory.getStackInSlot(aint[k]);
if (itemstack1 == null || itemstack1.stackSize != itemstack1.getMaxStackSize())
{
return false;
}
}
}
else
{
int i = inventoryIn.getSizeInventory();
for (int j = 0; j < i; ++j)
{
ItemStack itemstack = inventoryIn.getStackInSlot(j);
if (itemstack == null || itemstack.stackSize != itemstack.getMaxStackSize())
{
return false;
}
}
}
return true;
}
示例10: copyProps
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
public static void copyProps(IInventory craftMatrix, ItemStack newItem)
{
// Step 1, find the actual item (It's possible that this is not a reloading action, meaning there is no weapon to copy the name from)
int slot = 0;
while (slot < 9)
{
ItemStack stack = craftMatrix.getStackInSlot(slot);
if (stack != null && stack.getItem() instanceof _WeaponBase) // Found it. Does it have a name tag?
{
if (stack.hasDisplayName() && !newItem.hasDisplayName()) { newItem.setStackDisplayName(stack.getDisplayName()); }
// else, has no custom display name or the new item already has one. Fine with me either way.
// Upgrades
if (stack.hasTagCompound() && stack.getTagCompound().getBoolean("hasEmeraldMuzzle"))
{
if (!newItem.hasTagCompound()) { newItem.setTagCompound(new NBTTagCompound()); } // Init
newItem.getTagCompound().setBoolean("hasEmeraldMuzzle", true); // Keeping the upgrade
}
return; // Either way, we're done here
}
// else, either doesn't exist or not what I'm looking for
slot += 1;
}
}
示例11: isInventoryEmpty
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
/**
* Returns false if the specified IInventory contains any items
*/
private static boolean isInventoryEmpty(IInventory inventoryIn, EnumFacing side)
{
if (inventoryIn instanceof ISidedInventory)
{
ISidedInventory isidedinventory = (ISidedInventory)inventoryIn;
int[] aint = isidedinventory.getSlotsForFace(side);
for (int i : aint)
{
if (isidedinventory.getStackInSlot(i) != null)
{
return false;
}
}
}
else
{
int j = inventoryIn.getSizeInventory();
for (int k = 0; k < j; ++k)
{
if (inventoryIn.getStackInSlot(k) != null)
{
return false;
}
}
}
return true;
}
示例12: pushItemIInventory
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
protected boolean pushItemIInventory(IInventory inventory, int slot) {
if(inventory.getStackInSlot(slot) == null) {
if(debug)
FMLLog.log(Level.INFO, "gF");
inventory.setInventorySlotContents(slot, blockItemStack.copy());
blockItemStack = null;
markDirty = true;
} else {
if(debug)
FMLLog.log(Level.INFO, "gGa");
}
return markDirty;
}
示例13: isInventoryEmpty
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
/**
* Returns false if the specified IInventory contains any items
*/
private static boolean isInventoryEmpty(IInventory inventoryIn, EnumFacing side)
{
if (inventoryIn instanceof ISidedInventory)
{
ISidedInventory isidedinventory = (ISidedInventory)inventoryIn;
int[] aint = isidedinventory.getSlotsForFace(side);
for (int i = 0; i < aint.length; ++i)
{
if (isidedinventory.getStackInSlot(aint[i]) != null)
{
return false;
}
}
}
else
{
int j = inventoryIn.getSizeInventory();
for (int k = 0; k < j; ++k)
{
if (inventoryIn.getStackInSlot(k) != null)
{
return false;
}
}
}
return true;
}
示例14: extract
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
public static Pair<ItemStack, Integer> extract(TileEntity tile, EnumFacing from, int[] col, IInventory inv, boolean fullStack) {
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, from)) {
IItemHandlerModifiable handler = (IItemHandlerModifiable) tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, from);
if (handler != null) {
int invSize = handler.getSlots();
for (int i = 0; i < invSize; i++) {
ItemStack current = handler.getStackInSlot(i);
for (int j = 0; j < inv.getSizeInventory(); j++) {
ItemStack stack = inv.getStackInSlot(j);
int color = -1;
if (stack != null && stack != ItemStack.EMPTY && stack.getItem() != Items.AIR) {
if (areItemStacksEqual(stack, current)) {
int column = j >= 0 && j <= 3 ? 0 : j >= 4 && j <= 7 ? 1 : j >= 8 && j <= 11 ? 2 : j >= 12 && j <= 15 ? 3 : j >= 16 || j <= 19 ? 4 : -1;
if (column == -1)
return null;
color = col[column];
if (current != null && !current.isEmpty() && current.getItem() != Items.AIR) {
ItemStack extracted = handler.extractItem(i, !fullStack ? 1 : current.getCount(), false);
return Pair.of(extracted, color);
}
}
}
}
}
}
} // TODO: TileEntities that don't have capabilities - needs testing
return Pair.of(ItemStack.EMPTY, -1);
}
示例15: insertStack
import net.minecraft.inventory.IInventory; //导入方法依赖的package包/类
/**
* Insert the specified stack to the specified inventory and return any leftover items
*/
private static ItemStack insertStack(IInventory inventoryIn, ItemStack stack, int index, EnumFacing side)
{
ItemStack itemstack = inventoryIn.getStackInSlot(index);
if (canInsertItemInSlot(inventoryIn, stack, index, side))
{
boolean flag = false;
if (itemstack == null)
{
inventoryIn.setInventorySlotContents(index, stack);
stack = null;
flag = true;
}
else if (canCombine(itemstack, stack))
{
int i = stack.getMaxStackSize() - itemstack.stackSize;
int j = Math.min(stack.stackSize, i);
stack.stackSize -= j;
itemstack.stackSize += j;
flag = j > 0;
}
if (flag)
{
if (inventoryIn instanceof TileEntityHopper)
{
TileEntityHopper tileentityhopper = (TileEntityHopper)inventoryIn;
if (tileentityhopper.mayTransfer())
{
tileentityhopper.setTransferCooldown(8);
}
inventoryIn.markDirty();
}
inventoryIn.markDirty();
}
}
return stack;
}