diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java index 36a01ed4a..997639c52 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockAtomicReconstructor.java @@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.base.ItemBlockBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockPistonBase; @@ -70,11 +71,11 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud if(!world.isRemote){ TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor)world.getTileEntity(pos); if(reconstructor != null){ - if(heldItem != null){ + if(StackUtil.isValid(heldItem)){ Item item = heldItem.getItem(); - if(item instanceof ILensItem && reconstructor.getStackInSlot(0) == null){ + if(item instanceof ILensItem && !StackUtil.isValid(reconstructor.getStackInSlot(0))){ ItemStack toPut = heldItem.copy(); - toPut.stackSize = 1; + toPut = StackUtil.setStackSize(toPut, 1); reconstructor.setInventorySlotContents(0, toPut); player.inventory.decrStackSize(player.inventory.currentItem, 1); } @@ -86,9 +87,9 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud } else{ ItemStack slot = reconstructor.getStackInSlot(0); - if(slot != null){ + if(StackUtil.isValid(slot)){ player.inventory.setInventorySlotContents(player.inventory.currentItem, slot.copy()); - reconstructor.setInventorySlotContents(0, null); + reconstructor.setInventorySlotContents(0, StackUtil.getNull()); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCompost.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCompost.java index 598b5d51f..1d05b0faa 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCompost.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCompost.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -92,20 +93,20 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{ if(stackPlayer != null){ CompostRecipe recipeHand = TileEntityCompost.getRecipeForInput(stackPlayer); if(recipeHand != null && (recipeIn == null || recipeIn == recipeHand)){ - int maxAdd = Math.min(recipeHand.input.stackSize, stackPlayer.stackSize); + int maxAdd = Math.min(StackUtil.getStackSize(recipeHand.input), StackUtil.getStackSize(stackPlayer)); if(slot == null){ ItemStack stackToAdd = stackPlayer.copy(); - stackToAdd.stackSize = maxAdd; + stackToAdd = StackUtil.setStackSize(stackToAdd, maxAdd); compost.setInventorySlotContents(0, stackToAdd); player.inventory.decrStackSize(player.inventory.currentItem, maxAdd); return true; } else{ ItemStack stackIn = slot.copy(); - if(stackIn.stackSize < recipeHand.input.stackSize){ - int sizeAdded = Math.min(maxAdd, recipeHand.input.stackSize-stackIn.stackSize); - stackIn.stackSize += sizeAdded; + if(StackUtil.getStackSize(stackIn) < StackUtil.getStackSize(recipeHand.input)){ + int sizeAdded = Math.min(maxAdd, StackUtil.getStackSize(recipeHand.input)-StackUtil.getStackSize(stackIn)); + stackIn = StackUtil.addStackSize(stackIn, sizeAdded); compost.setInventorySlotContents(0, stackIn); player.inventory.decrStackSize(player.inventory.currentItem, sizeAdded); return true; @@ -121,9 +122,9 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{ return true; } else if(ItemUtil.canBeStacked(stackPlayer, slot)){ - int addedStackSize = Math.min(slot.stackSize, stackPlayer.getMaxStackSize()-stackPlayer.stackSize); + int addedStackSize = Math.min(StackUtil.getStackSize(slot), stackPlayer.getMaxStackSize()-StackUtil.getStackSize(stackPlayer)); ItemStack stackToAdd = stackPlayer.copy(); - stackToAdd.stackSize += addedStackSize; + stackToAdd = StackUtil.addStackSize(stackToAdd, addedStackSize); player.inventory.setInventorySlotContents(player.inventory.currentItem, stackToAdd); compost.decrStackSize(0, addedStackSize); return true; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockDisplayStand.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockDisplayStand.java index c5926771b..9ad6c05d3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockDisplayStand.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockDisplayStand.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.blocks; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityDisplayStand; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -54,29 +55,29 @@ public class BlockDisplayStand extends BlockContainerBase{ TileEntityDisplayStand stand = (TileEntityDisplayStand)world.getTileEntity(pos); if(stand != null){ ItemStack display = stand.getStackInSlot(0); - if(heldItem != null){ - if(display == null){ + if(StackUtil.isValid(heldItem)){ + if(!StackUtil.isValid(display)){ ItemStack toPut = heldItem.copy(); - toPut.stackSize = 1; + toPut = StackUtil.setStackSize(toPut, 1); stand.setInventorySlotContents(0, toPut); - player.inventory.decrStackSize(player.inventory.currentItem, 1); + player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1)); return true; } else if(ItemUtil.canBeStacked(heldItem, display)){ - int maxTransfer = Math.min(display.stackSize, heldItem.getMaxStackSize()-heldItem.stackSize); + int maxTransfer = Math.min(StackUtil.getStackSize(display), heldItem.getMaxStackSize()-StackUtil.getStackSize(heldItem)); if(maxTransfer > 0){ - heldItem.stackSize += maxTransfer; + player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer)); ItemStack newDisplay = display.copy(); - newDisplay.stackSize -= maxTransfer; - stand.setInventorySlotContents(0, newDisplay.stackSize <= 0 ? null : newDisplay); + newDisplay = StackUtil.addStackSize(newDisplay, -maxTransfer); + stand.setInventorySlotContents(0, StackUtil.validateCheck(newDisplay)); return true; } } } else{ - if(display != null){ - player.inventory.setInventorySlotContents(player.inventory.currentItem, display.copy()); - stand.setInventorySlotContents(0, null); + if(StackUtil.isValid(display)){ + player.setHeldItem(hand, display.copy()); + stand.setInventorySlotContents(0, StackUtil.getNull()); return true; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockEmpowerer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockEmpowerer.java index 76d3ab270..d4181db3a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockEmpowerer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockEmpowerer.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.blocks; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEmpowerer; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -54,29 +55,29 @@ public class BlockEmpowerer extends BlockContainerBase{ TileEntityEmpowerer empowerer = (TileEntityEmpowerer)world.getTileEntity(pos); if(empowerer != null){ ItemStack stackThere = empowerer.getStackInSlot(0); - if(heldItem != null){ - if(stackThere == null && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){ + if(StackUtil.isValid(heldItem)){ + if(!StackUtil.isValid(stackThere) && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){ ItemStack toPut = heldItem.copy(); - toPut.stackSize = 1; + toPut = StackUtil.setStackSize(toPut, 1); empowerer.setInventorySlotContents(0, toPut); - player.inventory.decrStackSize(player.inventory.currentItem, 1); + player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1)); return true; } else if(ItemUtil.canBeStacked(heldItem, stackThere)){ - int maxTransfer = Math.min(stackThere.stackSize, heldItem.getMaxStackSize()-heldItem.stackSize); + int maxTransfer = Math.min(StackUtil.getStackSize(stackThere), heldItem.getMaxStackSize()-StackUtil.getStackSize(heldItem)); if(maxTransfer > 0){ - heldItem.stackSize += maxTransfer; + player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer)); ItemStack newStackThere = stackThere.copy(); - newStackThere.stackSize -= maxTransfer; - empowerer.setInventorySlotContents(0, newStackThere.stackSize <= 0 ? null : newStackThere); + StackUtil.addStackSize(newStackThere, -maxTransfer); + empowerer.setInventorySlotContents(0, StackUtil.validateCheck(newStackThere)); return true; } } } else{ - if(stackThere != null){ - player.inventory.setInventorySlotContents(player.inventory.currentItem, stackThere.copy()); - empowerer.setInventorySlotContents(0, null); + if(StackUtil.isValid(stackThere)){ + player.setHeldItem(hand, stackThere.copy()); + empowerer.setInventorySlotContents(0, StackUtil.getNull()); return true; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java index b6a4c758e..e5b3cee8b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockSlabs.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.blocks; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase; import de.ellpeck.actuallyadditions.mod.blocks.base.ItemBlockBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.properties.PropertyInteger; @@ -118,7 +119,7 @@ public class BlockSlabs extends BlockBase{ @Override public EnumActionResult onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ){ - if(stack.stackSize != 0 && playerIn.canPlayerEdit(pos.offset(facing), facing, stack)){ + if(StackUtil.isValid(stack) && playerIn.canPlayerEdit(pos.offset(facing), facing, stack)){ IBlockState state = worldIn.getBlockState(pos); if(state.getBlock() == this.block){ @@ -130,14 +131,14 @@ public class BlockSlabs extends BlockBase{ if(bound != Block.NULL_AABB && worldIn.checkNoEntityCollision(bound.offset(pos)) && worldIn.setBlockState(pos, newState, 11)){ SoundType soundtype = theBlock.fullBlock.getSoundType(); worldIn.playSound(playerIn, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume()+1.0F)/2.0F, soundtype.getPitch()*0.8F); - --stack.stackSize; + playerIn.setHeldItem(hand, StackUtil.addStackSize(stack, -1)); } return EnumActionResult.SUCCESS; } } - return this.tryPlace(playerIn, stack, worldIn, pos.offset(facing)) ? EnumActionResult.SUCCESS : super.onItemUse(stack, playerIn, worldIn, pos, hand, facing, hitX, hitY, hitZ); + return this.tryPlace(playerIn, stack, hand, worldIn, pos.offset(facing)) ? EnumActionResult.SUCCESS : super.onItemUse(stack, playerIn, worldIn, pos, hand, facing, hitX, hitY, hitZ); } else{ return EnumActionResult.FAIL; @@ -158,7 +159,7 @@ public class BlockSlabs extends BlockBase{ return worldIn.getBlockState(pos.offset(side)).getBlock() == this.block || super.canPlaceBlockOnSide(worldIn, pos, side, player, stack); } - private boolean tryPlace(EntityPlayer player, ItemStack stack, World worldIn, BlockPos pos){ + private boolean tryPlace(EntityPlayer player, ItemStack stack, EnumHand hand, World worldIn, BlockPos pos){ IBlockState iblockstate = worldIn.getBlockState(pos); if(iblockstate.getBlock() == this.block){ @@ -169,7 +170,8 @@ public class BlockSlabs extends BlockBase{ if(bound != Block.NULL_AABB && worldIn.checkNoEntityCollision(bound.offset(pos)) && worldIn.setBlockState(pos, newState, 11)){ SoundType soundtype = theBlock.fullBlock.getSoundType(); worldIn.playSound(player, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume()+1.0F)/2.0F, soundtype.getPitch()*0.8F); - --stack.stackSize; + + player.setHeldItem(hand, StackUtil.addStackSize(stack, -1)); } return true; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockTreasureChest.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockTreasureChest.java index 990de2010..f45663c54 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockTreasureChest.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockTreasureChest.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.TreasureChestLoot; import de.ellpeck.actuallyadditions.mod.achievement.TheAchievements; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; @@ -103,18 +104,17 @@ public class BlockTreasureChest extends BlockBase{ for(int i = 0; i < MathHelper.getRandomIntegerInRange(world.rand, 3, 6); i++){ TreasureChestLoot theReturn = WeightedRandom.getRandomItem(world.rand, ActuallyAdditionsAPI.TREASURE_CHEST_LOOT); ItemStack itemStack = theReturn.returnItem.copy(); - itemStack.stackSize = MathHelper.getRandomIntegerInRange(world.rand, theReturn.minAmount, theReturn.maxAmount); + itemStack = StackUtil.setStackSize(itemStack, MathHelper.getRandomIntegerInRange(world.rand, theReturn.minAmount, theReturn.maxAmount)); float dX = world.rand.nextFloat()*0.8F+0.1F; float dY = world.rand.nextFloat()*0.8F+0.1F; float dZ = world.rand.nextFloat()*0.8F+0.1F; - EntityItem entityItem = new EntityItem(world, pos.getX()+dX, pos.getY()+dY, pos.getZ()+dZ, itemStack.copy()); + EntityItem entityItem = new EntityItem(world, pos.getX()+dX, pos.getY()+dY, pos.getZ()+dZ, itemStack); float factor = 0.05F; entityItem.motionX = world.rand.nextGaussian()*factor; entityItem.motionY = world.rand.nextGaussian()*factor+0.2F; entityItem.motionZ = world.rand.nextGaussian()*factor; world.spawnEntityInWorld(entityItem); - itemStack.stackSize = 0; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java index f2a851e61..3d5a8dbe7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockRedstoneTorch; @@ -97,7 +98,7 @@ public abstract class BlockContainerBase extends BlockContainer implements ItemB public void dropSlotFromInventory(int i, TileEntityInventoryBase tile, World world, BlockPos pos){ ItemStack stack = tile.getStackInSlot(i); - if(stack != null && stack.stackSize > 0){ + if(StackUtil.isValid(stack)){ float dX = world.rand.nextFloat()*0.8F+0.1F; float dY = world.rand.nextFloat()*0.8F+0.1F; float dZ = world.rand.nextFloat()*0.8F+0.1F; @@ -112,7 +113,7 @@ public abstract class BlockContainerBase extends BlockContainer implements ItemB public boolean tryToggleRedstone(World world, BlockPos pos, EntityPlayer player){ ItemStack stack = player.getHeldItemMainhand(); - if(stack != null && Block.getBlockFromItem(stack.getItem()) instanceof BlockRedstoneTorch){ + if(StackUtil.isValid(stack) && Block.getBlockFromItem(stack.getItem()) instanceof BlockRedstoneTorch){ TileEntity tile = world.getTileEntity(pos); if(tile instanceof TileEntityBase){ TileEntityBase base = (TileEntityBase)tile; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java index e3597c096..b3e7aa2ab 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockPlant.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.blocks.base; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.BlockCrops; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -96,13 +97,13 @@ public class BlockPlant extends BlockCrops implements ItemBlockBase.ICustomRarit List drops = this.getDrops(world, pos, state, 0); boolean deductedSeedSize = false; for(ItemStack drop : drops){ - if(drop != null){ + if(StackUtil.isValid(drop)){ if(drop.getItem() == this.seedItem && !deductedSeedSize){ - drop.stackSize--; + StackUtil.addStackSize(drop, -1); deductedSeedSize = true; } - if(drop.stackSize > 0){ + if(StackUtil.isValid(drop)){ EntityItem entity = new EntityItem(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, drop); world.spawnEntityInWorld(entity); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderCompost.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderCompost.java index a28362341..59aa9a365 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderCompost.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderCompost.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; @@ -29,23 +30,23 @@ public class RenderCompost extends TileEntitySpecialRenderer{ TileEntityCompost compost = (TileEntityCompost)te; ItemStack slot = compost.getStackInSlot(0); - if(slot != null){ + if(StackUtil.isValid(slot)){ Block display = null; int maxAmount = 0; for(CompostRecipe aRecipe : ActuallyAdditionsAPI.COMPOST_RECIPES){ if(slot.isItemEqual(aRecipe.input)){ display = aRecipe.inputDisplay; - maxAmount = aRecipe.input.stackSize; + maxAmount = StackUtil.getStackSize(aRecipe.input); break; } else if(slot.isItemEqual(aRecipe.output)){ display = aRecipe.outputDisplay; - maxAmount = aRecipe.output.stackSize; + maxAmount = StackUtil.getStackSize(aRecipe.output); break; } } if(display != null){ - float i = (float)slot.stackSize/(float)maxAmount; + float i = (float)StackUtil.getStackSize(slot)/(float)maxAmount; GlStateManager.pushMatrix(); GlStateManager.translate((float)x+0.5F, (float)y+(i/3F)+0.01F, (float)z+0.5F); //Hehe diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java index 892726206..07de4c74c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.booklet.page; import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase; import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.client.renderer.GlStateManager; @@ -162,9 +163,9 @@ public class PageCrafting extends BookletPage{ for(int x = 0; x < width; x++){ for(int y = 0; y < height; y++){ ItemStack stack = stacks[y*width+x]; - if(stack != null){ + if(StackUtil.isValid(stack)){ ItemStack copy = stack.copy(); - copy.stackSize = 1; + copy = StackUtil.setStackSize(copy, 1); if(copy.getItemDamage() == Util.WILDCARD){ copy.setItemDamage(0); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java index bf084bac1..2f31f00df 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.gen; import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.passive.EntityVillager.ITradeList; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -30,15 +31,11 @@ public class JamVillagerTradeList implements ITradeList{ if(random.nextFloat() >= 0.65F){ //Jam as input - jam.stackSize = random.nextInt(3)+1; - emerald.stackSize = random.nextInt(2)+1; - recipeList.add(new MerchantRecipe(jam, emerald)); + recipeList.add(new MerchantRecipe(StackUtil.setStackSize(jam, random.nextInt(3)+1), StackUtil.setStackSize(emerald, random.nextInt(2)+1))); } else{ //Emeralds as input - jam.stackSize = random.nextInt(4)+2; - emerald.stackSize = random.nextInt(6)+2; - recipeList.add(new MerchantRecipe(emerald, jam)); + recipeList.add(new MerchantRecipe(StackUtil.setStackSize(emerald, random.nextInt(6)+2), StackUtil.setStackSize(jam, random.nextInt(4)+2))); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBag.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBag.java index 9dda29273..7b7193f46 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBag.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBag.java @@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemBag; import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.tile.FilterSettings; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.*; @@ -27,6 +28,8 @@ import net.minecraft.util.text.TextComponentTranslation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import java.util.Arrays; + public class ContainerBag extends Container implements IButtonReactor{ @@ -152,35 +155,35 @@ public class ContainerBag extends Container implements IButtonReactor{ if(this.isVoid || !this.filter.check(newStack, this.bagInventory.slots) || !this.mergeItemStack(newStack, 4, 32, false)){ if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } // } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override @@ -230,6 +233,7 @@ public class ContainerBag extends Container implements IButtonReactor{ public InventoryBag(boolean isVoid){ this.slots = new ItemStack[getSlotAmount(isVoid)]; + Arrays.fill(this.slots, StackUtil.getNull()); } @Override @@ -286,6 +290,7 @@ public class ContainerBag extends Container implements IButtonReactor{ public void clear(){ int length = this.slots.length; this.slots = new ItemStack[length]; + Arrays.fill(this.slots, StackUtil.getNull()); } @Override @@ -304,35 +309,35 @@ public class ContainerBag extends Container implements IButtonReactor{ if(i < this.getSizeInventory()){ return this.slots[i]; } - return null; + return StackUtil.getNull(); } @Override public ItemStack decrStackSize(int i, int j){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ ItemStack stackAt; - if(this.slots[i].stackSize <= j){ + if(StackUtil.getStackSize(this.slots[i]) <= j){ stackAt = this.slots[i]; - this.slots[i] = null; + this.slots[i] = StackUtil.getNull(); this.markDirty(); return stackAt; } else{ stackAt = this.slots[i].splitStack(j); - if(this.slots[i].stackSize <= 0){ - this.slots[i] = null; + if(StackUtil.getStackSize(this.slots[i]) <= 0){ + this.slots[i] = StackUtil.getNull(); } this.markDirty(); return stackAt; } } - return null; + return StackUtil.getNull(); } @Override public ItemStack removeStackFromSlot(int index){ ItemStack stack = this.slots[index]; - this.slots[index] = null; + this.slots[index] = StackUtil.getNull(); return stack; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBioReactor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBioReactor.java index d738dca7a..67249ccf3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBioReactor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBioReactor.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBioReactor; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -59,39 +60,39 @@ public class ContainerBioReactor extends Container{ //Shift from Inventory if(TileEntityBioReactor.isValidItem(newStack)){ if(!this.mergeItemStack(newStack, 0, 8, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java index d32505358..b92042b4e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerBreaker.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBreaker; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -62,33 +63,33 @@ public class ContainerBreaker extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java index 0fa580100..4ed63df07 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCanolaPress.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCanolaPress; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -58,39 +59,39 @@ public class ContainerCanolaPress extends Container{ //Shift from Inventory if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CANOLA.ordinal()){ if(!this.mergeItemStack(newStack, 0, 1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java index ac31b4c08..f9db178b3 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoalGenerator.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoalGenerator; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -57,39 +58,39 @@ public class ContainerCoalGenerator extends Container{ //Shift from Inventory if(TileEntityFurnace.getItemBurnTime(newStack) > 0){ if(!this.mergeItemStack(newStack, 0, 1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java index 6a3235757..fa0241e08 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCoffeeMachine.java @@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemCoffee; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -66,7 +67,7 @@ public class ContainerCoffeeMachine extends Container{ //Slots in Inventory to shift from if(slot == TileEntityCoffeeMachine.SLOT_OUTPUT){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -75,49 +76,49 @@ public class ContainerCoffeeMachine extends Container{ //Shift from Inventory if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CUP.ordinal()){ if(!this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_INPUT, TileEntityCoffeeMachine.SLOT_INPUT+1, false)){ - return null; + return StackUtil.getNull(); } } else if(ItemCoffee.getIngredientFromStack(newStack) != null){ if(!this.mergeItemStack(newStack, 3, 11, false)){ - return null; + return StackUtil.getNull(); } } else if(newStack.getItem() == InitItems.itemCoffeeBean){ if(!this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS+1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java index 347630639..7071c7888 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerCrafter.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.*; @@ -51,7 +52,7 @@ public class ContainerCrafter extends Container{ @Override public ItemStack transferStackInSlot(EntityPlayer player, int index){ - ItemStack itemstack = null; + ItemStack itemstack = StackUtil.getNull(); Slot slot = this.inventorySlots.get(index); if(slot != null && slot.getHasStack()){ @@ -60,34 +61,34 @@ public class ContainerCrafter extends Container{ if(index == 0){ if(!this.mergeItemStack(itemstack1, 10, 46, true)){ - return null; + return StackUtil.getNull(); } slot.onSlotChange(itemstack1, itemstack); } else if(index >= 10 && index < 37){ if(!this.mergeItemStack(itemstack1, 37, 46, false)){ - return null; + return StackUtil.getNull(); } } else if(index >= 37 && index < 46){ if(!this.mergeItemStack(itemstack1, 10, 37, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(itemstack1, 10, 46, false)){ - return null; + return StackUtil.getNull(); } - if(itemstack1.stackSize <= 0){ - slot.putStack(null); + if(!StackUtil.isValid(itemstack1)){ + slot.putStack(StackUtil.getNull()); } else{ slot.onSlotChanged(); } - if(itemstack1.stackSize == itemstack.stackSize){ - return null; + if(StackUtil.getStackSize(itemstack1) == StackUtil.getStackSize(itemstack)){ + return StackUtil.getNull(); } slot.onPickupFromSlot(player, itemstack1); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java index 31f567093..929684d93 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDirectionalBreaker.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityDirectionalBreaker; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -62,33 +63,33 @@ public class ContainerDirectionalBreaker extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java index 6559d878a..82e51613a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDrill.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable; import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrillUpgrade; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -26,6 +27,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; +import java.util.Arrays; + public class ContainerDrill extends Container{ @@ -84,39 +87,39 @@ public class ContainerDrill extends Container{ //Shift from Inventory if(newStack.getItem() instanceof ItemDrillUpgrade || newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){ if(!this.mergeItemStack(newStack, 0, 5, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override @@ -147,6 +150,10 @@ public class ContainerDrill extends Container{ public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; + public InventoryDrill(){ + Arrays.fill(this.slots, StackUtil.getNull()); + } + @Override public String getName(){ return "drill"; @@ -201,6 +208,7 @@ public class ContainerDrill extends Container{ public void clear(){ int length = this.slots.length; this.slots = new ItemStack[length]; + Arrays.fill(this.slots, StackUtil.getNull()); } @Override @@ -219,35 +227,35 @@ public class ContainerDrill extends Container{ if(i < this.getSizeInventory()){ return this.slots[i]; } - return null; + return StackUtil.getNull(); } @Override public ItemStack decrStackSize(int i, int j){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ ItemStack stackAt; - if(this.slots[i].stackSize <= j){ + if(StackUtil.getStackSize(this.slots[i]) <= j){ stackAt = this.slots[i]; - this.slots[i] = null; + this.slots[i] = StackUtil.getNull(); this.markDirty(); return stackAt; } else{ stackAt = this.slots[i].splitStack(j); - if(this.slots[i].stackSize <= 0){ - this.slots[i] = null; + if(StackUtil.getStackSize(this.slots[i]) <= 0){ + this.slots[i] = StackUtil.getNull(); } this.markDirty(); return stackAt; } } - return null; + return StackUtil.getNull(); } @Override public ItemStack removeStackFromSlot(int index){ ItemStack stack = this.slots[index]; - this.slots[index] = null; + this.slots[index] = StackUtil.getNull(); return stack; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java index f6843b5b9..4c2e9230c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerDropper.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityDropper; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -62,33 +63,33 @@ public class ContainerDropper extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java index 2d467a4dc..04bca09b0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnergizer.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnergizer; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -86,7 +87,7 @@ public class ContainerEnergizer extends Container{ //Slots in Inventory to shift from if(slot == 1){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -95,39 +96,39 @@ public class ContainerEnergizer extends Container{ //Shift from Inventory if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaConsumer, null))){ if(!this.mergeItemStack(newStack, 0, 1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java index 31f4aea10..0665aada5 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerEnervator.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnervator; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -85,7 +86,7 @@ public class ContainerEnervator extends Container{ //Slots in Inventory to shift from if(slot == 1){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -94,39 +95,39 @@ public class ContainerEnervator extends Container{ //Shift from Inventory if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){ if(!this.mergeItemStack(newStack, 0, 1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFarmer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFarmer.java index 4c32b24e2..35fdd9c97 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFarmer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFarmer.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityFarmer; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -66,39 +67,39 @@ public class ContainerFarmer extends Container{ //Shift from Inventory if(newStack.getItem() instanceof IPlantable){ if(!this.mergeItemStack(newStack, 0, 6, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java index 847331f2a..95da84bf9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFeeder.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityFeeder; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -57,33 +58,33 @@ public class ContainerFeeder extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java index eaa94d1f6..3b1d0c18b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFermentingBarrel.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityFermentingBarrel; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -53,32 +54,32 @@ public class ContainerFermentingBarrel extends Container{ if(slot >= inventoryStart){ if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java index e0855fe6c..67b107818 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFilter.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable; import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemFilter; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ClickType; @@ -24,6 +25,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; +import java.util.Arrays; + public class ContainerFilter extends Container{ @@ -80,32 +83,32 @@ public class ContainerFilter extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize == 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override @@ -140,6 +143,10 @@ public class ContainerFilter extends Container{ public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; + public InventoryFilter(){ + Arrays.fill(this.slots, StackUtil.getNull()); + } + @Override public String getName(){ return "filter"; @@ -194,6 +201,7 @@ public class ContainerFilter extends Container{ public void clear(){ int length = this.slots.length; this.slots = new ItemStack[length]; + Arrays.fill(this.slots, StackUtil.getNull()); } @Override @@ -212,35 +220,35 @@ public class ContainerFilter extends Container{ if(i < this.getSizeInventory()){ return this.slots[i]; } - return null; + return StackUtil.getNull(); } @Override public ItemStack decrStackSize(int i, int j){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ ItemStack stackAt; - if(this.slots[i].stackSize <= j){ + if(StackUtil.getStackSize(this.slots[i]) <= j){ stackAt = this.slots[i]; - this.slots[i] = null; + this.slots[i] = StackUtil.getNull(); this.markDirty(); return stackAt; } else{ stackAt = this.slots[i].splitStack(j); - if(this.slots[i].stackSize <= 0){ - this.slots[i] = null; + if(StackUtil.getStackSize(this.slots[i]) <= 0){ + this.slots[i] = StackUtil.getNull(); } this.markDirty(); return stackAt; } } - return null; + return StackUtil.getNull(); } @Override public ItemStack removeStackFromSlot(int index){ ItemStack stack = this.slots[index]; - this.slots[index] = null; + this.slots[index] = StackUtil.getNull(); return stack; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java index e48cd81d1..e1b98a0d8 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFluidCollector.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityFluidCollector; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -52,7 +53,7 @@ public class ContainerFluidCollector extends Container{ //Slots in Inventory to shift from if(slot == 1){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -60,32 +61,32 @@ public class ContainerFluidCollector extends Container{ else if(slot >= inventoryStart){ if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java index cc5a34e4f..4f2b84a04 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerFurnaceDouble.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityFurnaceDouble; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -59,7 +60,7 @@ public class ContainerFurnaceDouble extends Container{ //Slots in Inventory to shift from if(slot == TileEntityFurnaceDouble.SLOT_OUTPUT_1 || slot == TileEntityFurnaceDouble.SLOT_OUTPUT_2){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -69,7 +70,7 @@ public class ContainerFurnaceDouble extends Container{ if(FurnaceRecipes.instance().getSmeltingResult(newStack) != null){ if(!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_1, TileEntityFurnaceDouble.SLOT_INPUT_1+1, false)){ if(!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_2, TileEntityFurnaceDouble.SLOT_INPUT_2+1, false)){ - return null; + return StackUtil.getNull(); } } } @@ -77,32 +78,32 @@ public class ContainerFurnaceDouble extends Container{ else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java index c66995247..001f0aec7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGiantChest.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import invtweaks.api.container.ChestContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -63,33 +64,33 @@ public class ContainerGiantChest extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java index 9ec622969..5dada756d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerGrinder.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityGrinder; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -65,7 +66,7 @@ public class ContainerGrinder extends Container{ //Slots in Inventory to shift from if(slot == TileEntityGrinder.SLOT_OUTPUT_1_1 || slot == TileEntityGrinder.SLOT_OUTPUT_1_2 || (this.isDouble && (slot == TileEntityGrinder.SLOT_OUTPUT_2_1 || slot == TileEntityGrinder.SLOT_OUTPUT_2_2))){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ - return null; + return StackUtil.getNull(); } theSlot.onSlotChange(newStack, currentStack); } @@ -76,11 +77,11 @@ public class ContainerGrinder extends Container{ if(!this.mergeItemStack(newStack, TileEntityGrinder.SLOT_INPUT_1, TileEntityGrinder.SLOT_INPUT_1+1, false)){ if(this.isDouble){ if(!this.mergeItemStack(newStack, TileEntityGrinder.SLOT_INPUT_2, TileEntityGrinder.SLOT_INPUT_2+1, false)){ - return null; + return StackUtil.getNull(); } } else{ - return null; + return StackUtil.getNull(); } } } @@ -88,32 +89,32 @@ public class ContainerGrinder extends Container{ else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java index d8ae94535..40f5f49bd 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerInputter.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiInputter; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputter; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ClickType; @@ -74,33 +75,33 @@ public class ContainerInputter extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java index db0bfd991..485ff092e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerLaserRelayItemWhitelist.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayItemWhitelist; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ClickType; @@ -63,32 +64,32 @@ public class ContainerLaserRelayItemWhitelist extends Container{ if(slot >= inventoryStart){ if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java index f88888640..9bc844a95 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerMiner.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityMiner; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -62,33 +63,33 @@ public class ContainerMiner extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java index a77bcc3cf..3b0ba0b5e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerOilGenerator.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityOilGenerator; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -52,32 +53,32 @@ public class ContainerOilGenerator extends Container{ if(slot >= inventoryStart){ if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java index 9b82c73b1..9f220d4c2 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerPhantomPlacer.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomPlacer; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -62,33 +63,33 @@ public class ContainerPhantomPlacer extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java index 44ae77f02..342e3a4b6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRangedCollector.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityRangedCollector; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ClickType; @@ -69,33 +70,33 @@ public class ContainerRangedCollector extends Container{ // if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java index 6f1e45d81..7829a5e30 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerRepairer.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityItemRepairer; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -58,39 +59,39 @@ public class ContainerRepairer extends Container{ //Shift from Inventory if(TileEntityItemRepairer.canBeRepaired(newStack)){ if(!this.mergeItemStack(newStack, TileEntityItemRepairer.SLOT_INPUT, TileEntityItemRepairer.SLOT_INPUT+1, false)){ - return null; + return StackUtil.getNull(); } } // else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java index 7e3f04bf7..e64f6a022 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/ContainerXPSolidifier.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityXPSolidifier; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -58,37 +59,37 @@ public class ContainerXPSolidifier extends Container{ if(slot >= inventoryStart){ if(newStack.getItem() instanceof ItemSolidifiedExperience){ if(!this.mergeItemStack(newStack, 1, 2, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryStart && slot <= inventoryEnd){ if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(slot >= inventoryEnd+1 && slot < hotbarEnd+1 && !this.mergeItemStack(newStack, inventoryStart, inventoryEnd+1, false)){ - return null; + return StackUtil.getNull(); } } else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){ - return null; + return StackUtil.getNull(); } - if(newStack.stackSize <= 0){ - theSlot.putStack(null); + if(!StackUtil.isValid(newStack)){ + theSlot.putStack(StackUtil.getNull()); } else{ theSlot.onSlotChanged(); } - if(newStack.stackSize == currentStack.stackSize){ - return null; + if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){ + return StackUtil.getNull(); } theSlot.onPickupFromSlot(player, newStack); return currentStack; } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/slot/SlotFilter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/slot/SlotFilter.java index d79532795..3d77d91ed 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/slot/SlotFilter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/inventory/slot/SlotFilter.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.inventory.slot; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; @@ -39,7 +40,7 @@ public class SlotFilter extends Slot{ else{ if(heldStack != null){ ItemStack stack = heldStack.copy(); - stack.stackSize = 1; + stack = StackUtil.setStackSize(stack, 1); this.putStack(stack); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBag.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBag.java index 2612d51db..81089b0ae 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBag.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemBag.java @@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.tile.FilterSettings; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -81,7 +82,7 @@ public class ItemBag extends ItemBase{ filter.readFromNBT(invStack.getTagCompound(), "Filter"); if(filter.check(stack, inventory)){ if(isVoid){ - stack.stackSize = 0; + stack = StackUtil.setStackSize(stack, 0); changed = true; } else{ @@ -89,21 +90,21 @@ public class ItemBag extends ItemBase{ ItemStack bagStack = inventory[j]; if(bagStack != null){ if(ItemUtil.canBeStacked(bagStack, stack)){ - int maxTransfer = Math.min(stack.stackSize, stack.getMaxStackSize()-bagStack.stackSize); + int maxTransfer = Math.min(StackUtil.getStackSize(stack), stack.getMaxStackSize()-StackUtil.getStackSize(bagStack)); if(maxTransfer > 0){ - bagStack.stackSize += maxTransfer; - stack.stackSize -= maxTransfer; + inventory[j] = StackUtil.addStackSize(bagStack, maxTransfer); + stack = StackUtil.addStackSize(stack, -maxTransfer); changed = true; } } } else{ inventory[j] = stack.copy(); - stack.stackSize = 0; + stack = StackUtil.setStackSize(stack, 0); changed = true; } - if(stack.stackSize <= 0){ + if(!StackUtil.isValid(stack)){ break; } } @@ -120,11 +121,12 @@ public class ItemBag extends ItemBase{ } } - if(stack.stackSize <= 0){ + if(!StackUtil.isValid(stack)){ break; } } } + item.setEntityItemStack(stack); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemChestToCrateUpgrade.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemChestToCrateUpgrade.java index e9517262e..9d063d62d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemChestToCrateUpgrade.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemChestToCrateUpgrade.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -71,7 +72,7 @@ public class ItemChestToCrateUpgrade extends ItemBase{ } if(!player.capabilities.isCreativeMode){ - heldStack.stackSize--; + player.setHeldItem(hand, StackUtil.addStackSize(heldStack, -1)); } } return EnumActionResult.SUCCESS; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java index ce5a4da64..93bcbfb3e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemDrill.java @@ -21,6 +21,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.darkhax.tesla.api.ITeslaProducer; @@ -105,11 +106,11 @@ public class ItemDrill extends ItemEnergy{ //Places Blocks if the Placing Upgrade is installed public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ){ ItemStack upgrade = this.getHasUpgradeAsStack(stack, ItemDrillUpgrade.UpgradeType.PLACER); - if(upgrade != null){ + if(StackUtil.isValid(upgrade)){ int slot = ItemDrillUpgrade.getSlotToPlaceFrom(upgrade); if(slot >= 0 && slot < InventoryPlayer.getHotbarSize()){ ItemStack anEquip = player.inventory.getStackInSlot(slot); - if(anEquip != null && anEquip != stack){ + if(StackUtil.isValid(anEquip) && anEquip != stack){ ItemStack equip = anEquip.copy(); if(!world.isRemote){ //tryPlaceItemIntoWorld could throw an Exception @@ -117,7 +118,7 @@ public class ItemDrill extends ItemEnergy{ //Places the Block into the World if(equip.onItemUse(player, world, pos, hand, side, hitX, hitY, hitZ) != EnumActionResult.FAIL){ if(!player.capabilities.isCreativeMode){ - player.inventory.setInventorySlotContents(slot, equip.stackSize <= 0 ? null : equip.copy()); + player.inventory.setInventorySlotContents(slot, StackUtil.validateCopy(equip)); } //Synchronizes the Client player.inventoryContainer.detectAndSendChanges(); @@ -149,21 +150,21 @@ public class ItemDrill extends ItemEnergy{ public ItemStack getHasUpgradeAsStack(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){ NBTTagCompound compound = stack.getTagCompound(); if(compound == null){ - return null; + return StackUtil.getNull(); } ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT]; loadSlotsFromNBT(slots, stack); if(slots != null && slots.length > 0){ for(ItemStack slotStack : slots){ - if(slotStack != null && slotStack.getItem() instanceof ItemDrillUpgrade){ + if(StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade){ if(((ItemDrillUpgrade)slotStack.getItem()).type == upgrade){ return slotStack; } } } } - return null; + return StackUtil.getNull(); } @Override @@ -195,7 +196,7 @@ public class ItemDrill extends ItemEnergy{ loadSlotsFromNBT(slots, stack); if(slots != null && slots.length > 0){ for(ItemStack slotStack : slots){ - if(slotStack != null){ + if(StackUtil.isValid(slotStack)){ Item item = slotStack.getItem(); int extracted = 0; @@ -352,7 +353,7 @@ public class ItemDrill extends ItemEnergy{ * @return Is the Upgrade applied? */ public boolean getHasUpgrade(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){ - return this.getHasUpgradeAsStack(stack, upgrade) != null; + return StackUtil.isValid(this.getHasUpgradeAsStack(stack, upgrade)); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java index b4654d472..6a5d3579a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemFillingWand.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.block.Block; import net.minecraft.block.SoundType; @@ -191,7 +192,7 @@ public class ItemFillingWand extends ItemEnergy{ if(state != null){ Block block = state.getBlock(); ItemStack blockStack = new ItemStack(block, 1, block.getMetaFromState(state)); - if(blockStack.getItem() != null){ + if(StackUtil.isValid(blockStack)){ display = blockStack.getDisplayName(); } } @@ -203,13 +204,13 @@ public class ItemFillingWand extends ItemEnergy{ Block block = state.getBlock(); ItemStack stack = new ItemStack(block, 1, block.damageDropped(state)); - if(stack != null && stack.getItem() != null){ + if(StackUtil.isValid(stack)){ for(int i = 0; i < player.inventory.getSizeInventory(); i++){ ItemStack slot = player.inventory.getStackInSlot(i); - if(slot != null && slot.isItemEqual(stack) && slot.stackSize > 0){ - slot.stackSize--; - if(slot.stackSize <= 0){ - player.inventory.setInventorySlotContents(i, null); + if(StackUtil.isValid(slot) && slot.isItemEqual(stack)){ + slot = StackUtil.addStackSize(slot, -1); + if(!StackUtil.isValid(slot)){ + player.inventory.setInventorySlotContents(i, StackUtil.getNull()); } return true; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairyBall.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairyBall.java index ae2518225..e86fa7ab4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairyBall.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemHairyBall.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.player.EntityPlayer; @@ -62,7 +63,7 @@ public class ItemHairyBall extends ItemBase{ entityItem.setPickupDelay(0); player.worldObj.spawnEntityInWorld(entityItem); } - stack.stackSize--; + stack = StackUtil.addStackSize(stack, -1); world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.2F, world.rand.nextFloat()*0.1F+0.9F); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemKnife.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemKnife.java index 2becdff1a..528e2ef14 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemKnife.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemKnife.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items; import com.google.common.collect.Multimap; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.inventory.EntityEquipmentSlot; @@ -54,7 +55,6 @@ public class ItemKnife extends ItemBase{ public ItemStack getContainerItem(ItemStack stack){ ItemStack theStack = stack.copy(); theStack.setItemDamage(theStack.getItemDamage()+1); - theStack.stackSize = 1; - return theStack; + return StackUtil.setStackSize(theStack, 1); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemMagnetRing.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemMagnetRing.java index 968bb59f4..ea9cb3f76 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemMagnetRing.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemMagnetRing.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -39,7 +40,7 @@ public class ItemMagnetRing extends ItemEnergy{ if(!items.isEmpty()){ for(EntityItem item : items){ if(!item.isDead && !item.cannotPickup()){ - int energyForItem = 350*item.getEntityItem().stackSize; + int energyForItem = 350*StackUtil.getStackSize(item.getEntityItem()); if(this.getEnergyStored(stack) >= energyForItem){ item.onCollideWithPlayer(player); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemResonantRice.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemResonantRice.java index 08e8ccce1..2dcde099d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemResonantRice.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemResonantRice.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; @@ -29,7 +30,7 @@ public class ItemResonantRice extends ItemBase{ @Override public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand){ if(!world.isRemote){ - stack.stackSize--; + stack = StackUtil.addStackSize(stack, 1); world.createExplosion(null, player.posX, player.posY, player.posZ, 0.5F, true); } return new ActionResult(EnumActionResult.SUCCESS, stack); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java index 2b6e49628..538704d80 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSolidifiedExperience.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; @@ -57,13 +58,13 @@ public class ItemSolidifiedExperience extends ItemBase{ if(!player.isSneaking()){ amount = SOLID_XP_AMOUNT; if(!player.capabilities.isCreativeMode){ - stack.stackSize--; + stack = StackUtil.addStackSize(stack, -1); } } else{ - amount = SOLID_XP_AMOUNT*stack.stackSize; + amount = SOLID_XP_AMOUNT*StackUtil.getStackSize(stack); if(!player.capabilities.isCreativeMode){ - stack.stackSize = 0; + stack = StackUtil.setStackSize(stack, 0); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSpawnerChanger.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSpawnerChanger.java index de2573323..037c778c6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSpawnerChanger.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemSpawnerChanger.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityList; @@ -85,7 +86,7 @@ public class ItemSpawnerChanger extends ItemBase{ ItemPhantomConnector.clearStorage(stack, "Entity"); if(!player.capabilities.isCreativeMode){ - stack.stackSize--; + player.setHeldItem(hand, StackUtil.addStackSize(stack, -1)); } return EnumActionResult.SUCCESS; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java index 362412037..cf24a5912 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWaterBowl.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; @@ -44,7 +45,7 @@ public class ItemWaterBowl extends ItemBase{ public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event){ if(event.getWorld() != null){ if(ConfigBoolValues.WATER_BOWL.isEnabled()){ - if(event.getItemStack() != null && event.getItemStack().getItem() == Items.BOWL){ + if(StackUtil.isValid(event.getItemStack()) && event.getItemStack().getItem() == Items.BOWL){ RayTraceResult trace = WorldUtil.getNearestBlockWithDefaultReachDistance(event.getWorld(), event.getEntityPlayer(), true, false, false); ActionResult result = ForgeEventFactory.onBucketUse(event.getEntityPlayer(), event.getWorld(), event.getItemStack(), trace); if(result == null && trace != null && trace.getBlockPos() != null){ @@ -57,10 +58,10 @@ public class ItemWaterBowl extends ItemBase{ if(!event.getWorld().isRemote){ event.getWorld().setBlockState(trace.getBlockPos(), Blocks.AIR.getDefaultState(), 11); - event.getItemStack().stackSize--; + ItemStack reduced = StackUtil.addStackSize(event.getItemStack(), -1); ItemStack bowl = new ItemStack(InitItems.itemWaterBowl); - if(event.getItemStack().stackSize <= 0){ + if(!StackUtil.isValid(reduced)){ event.getEntityPlayer().setHeldItem(event.getHand(), bowl); } else if(!event.getEntityPlayer().inventory.addItemStackToInventory(bowl.copy())){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java index b4ad54970..787846241 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemWorm.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.entity.EntityWorm; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.BlockGrass; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -50,7 +51,7 @@ public class ItemWorm extends ItemBase{ worm.setPosition(pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5); world.spawnEntityInWorld(worm); - stack.stackSize--; + player.setHeldItem(hand, StackUtil.addStackSize(stack, -1)); } return EnumActionResult.SUCCESS; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensDisruption.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensDisruption.java index aa7f5df64..ea82126cc 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensDisruption.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensDisruption.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items.lens; import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor; import de.ellpeck.actuallyadditions.api.lens.Lens; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -36,7 +37,7 @@ public class LensDisruption extends Lens{ ArrayList items = (ArrayList)tile.getWorldObject().getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(hitBlock.getX()-range, hitBlock.getY()-range, hitBlock.getZ()-range, hitBlock.getX()+range, hitBlock.getY()+range, hitBlock.getZ()+range)); for(EntityItem item : items){ ItemStack stack = item.getEntityItem(); - if(!item.isDead && stack != null){ + if(!item.isDead && StackUtil.isValid(stack)){ if(!stack.hasTagCompound() || !stack.getTagCompound().getBoolean(ModUtil.MOD_ID+"DisruptedAlready")){ ItemStack newStack; @@ -48,9 +49,9 @@ public class LensDisruption extends Lens{ newStack = new ItemStack(Block.REGISTRY.getRandomObject(tile.getWorldObject().rand)); } } - while(newStack == null || newStack.getItem() == null); + while(!StackUtil.isValid(newStack)); - newStack.stackSize = stack.stackSize; + newStack = StackUtil.setStackSize(newStack, StackUtil.getStackSize(stack)); if(!newStack.hasTagCompound()){ newStack.setTagCompound(new NBTTagCompound()); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java index 17e8bedc7..9b3163965 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java @@ -25,6 +25,7 @@ import de.ellpeck.actuallyadditions.mod.booklet.page.PagePicture; import de.ellpeck.actuallyadditions.mod.booklet.page.PageTextOnly; import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -177,25 +178,25 @@ public class MethodHandler implements IMethodHandler{ ArrayList items = (ArrayList)tile.getWorldObject().getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(hitBlock.getX()-range, hitBlock.getY()-range, hitBlock.getZ()-range, hitBlock.getX()+range, hitBlock.getY()+range, hitBlock.getZ()+range)); for(EntityItem item : items){ ItemStack stack = item.getEntityItem(); - if(!item.isDead && stack != null){ + if(!item.isDead && StackUtil.isValid(stack)){ List recipes = LensRecipeHandler.getRecipesFor(stack); for(LensConversionRecipe recipe : recipes){ if(recipe != null && recipe.type == tile.getLens()){ - int itemsPossible = Math.min(tile.getEnergy()/recipe.energyUse, stack.stackSize); + int itemsPossible = Math.min(tile.getEnergy()/recipe.energyUse, StackUtil.getStackSize(stack)); if(itemsPossible > 0){ item.setDead(); - if(stack.stackSize-itemsPossible > 0){ + if(StackUtil.getStackSize(stack)-itemsPossible > 0){ ItemStack stackCopy = stack.copy(); - stackCopy.stackSize -= itemsPossible; + stackCopy = StackUtil.addStackSize(stackCopy, -itemsPossible); EntityItem inputLeft = new EntityItem(tile.getWorldObject(), item.posX, item.posY, item.posZ, stackCopy); tile.getWorldObject().spawnEntityInWorld(inputLeft); } ItemStack outputCopy = recipe.outputStack.copy(); - outputCopy.stackSize = itemsPossible; + outputCopy = StackUtil.setStackSize(outputCopy, itemsPossible); EntityItem newItem = new EntityItem(tile.getWorldObject(), item.posX, item.posY, item.posZ, outputCopy); tile.getWorldObject().spawnEntityInWorld(newItem); @@ -216,21 +217,21 @@ public class MethodHandler implements IMethodHandler{ public boolean addCrusherRecipes(List inputs, List outputOnes, int outputOneAmounts, List outputTwos, int outputTwoAmounts, int outputTwoChance){ boolean hasWorkedOnce = false; for(ItemStack input : inputs){ - if(input != null && CrusherRecipeRegistry.getRecipeFromInput(input) == null){ + if(StackUtil.isValid(input) && CrusherRecipeRegistry.getRecipeFromInput(input) == null){ for(ItemStack outputOne : outputOnes){ - if(outputOne != null && !CrusherRecipeRegistry.hasBlacklistedOutput(outputOne)){ + if(StackUtil.isValid(outputOne) && !CrusherRecipeRegistry.hasBlacklistedOutput(outputOne)){ ItemStack outputOneCopy = outputOne.copy(); - outputOneCopy.stackSize = outputOneAmounts; + outputOneCopy = StackUtil.setStackSize(outputOneCopy, outputOneAmounts); if(outputTwos == null || outputTwos.isEmpty()){ - ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, null, 0); + ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, StackUtil.getNull(), 0); hasWorkedOnce = true; } else{ for(ItemStack outputTwo : outputTwos){ - if(outputTwo != null && !CrusherRecipeRegistry.hasBlacklistedOutput(outputTwo)){ + if(StackUtil.isValid(outputTwo) && !CrusherRecipeRegistry.hasBlacklistedOutput(outputTwo)){ ItemStack outputTwoCopy = outputTwo.copy(); - outputTwoCopy.stackSize = outputTwoAmounts; + outputTwoCopy = StackUtil.setStackSize(outputTwoCopy, outputTwoAmounts); ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, outputTwoCopy, outputTwoChance); hasWorkedOnce = true; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/FilterSettings.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/FilterSettings.java index 7ecc8ae02..aba51bd12 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/FilterSettings.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/FilterSettings.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemFilter; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.OreDictionary; @@ -51,9 +52,9 @@ public class FilterSettings{ } public static boolean check(ItemStack stack, ItemStack[] slots, int startSlot, int endSlot, boolean whitelist, boolean meta, boolean nbt, int oredict){ - if(stack != null){ + if(StackUtil.isValid(stack)){ for(int i = startSlot; i < endSlot; i++){ - if(slots[i] != null){ + if(StackUtil.isValid(slots[i])){ if(areEqualEnough(slots[i], stack, meta, nbt, oredict)){ return whitelist; } @@ -62,7 +63,7 @@ public class FilterSettings{ ItemDrill.loadSlotsFromNBT(filterSlots, slots[i]); if(filterSlots != null && filterSlots.length > 0){ for(ItemStack filterSlot : filterSlots){ - if(filterSlot != null && areEqualEnough(filterSlot, stack, meta, nbt, oredict)){ + if(StackUtil.isValid(filterSlot) && areEqualEnough(filterSlot, stack, meta, nbt, oredict)){ return whitelist; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBioReactor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBioReactor.java index 4d211d849..4c3bf261c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBioReactor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBioReactor.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.EnergyStorage; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.IGrowable; import net.minecraft.item.Item; @@ -40,7 +41,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh } public static boolean isValidItem(ItemStack stack){ - if(stack != null){ + if(StackUtil.isValid(stack)){ Item item = stack.getItem(); if(isValid(item)){ return true; @@ -66,7 +67,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){ for(int i = 0; i < this.slots.length; i++){ ItemStack stack = this.slots[i]; - if(stack != null){ + if(StackUtil.isValid(stack)){ Item item = stack.getItem(); if(isValidItem(stack) && (types == null || !types.contains(item))){ if(types == null){ @@ -74,10 +75,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh } types.add(item); - stack.stackSize--; - if(stack.stackSize <= 0){ - this.slots[i] = null; - } + this.slots[i] = StackUtil.addStackSize(stack, -1); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java index 176e0c79a..bce7af8eb 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; @@ -100,8 +101,8 @@ public class TileEntityBreaker extends TileEntityInventoryBase{ else if(this.isPlacer){ int theSlot = WorldUtil.findFirstFilledSlot(this.slots); this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(sideToManipulate, this.worldObj, this.pos, this.slots[theSlot])); - if(this.slots[theSlot] != null && this.slots[theSlot].stackSize <= 0){ - this.slots[theSlot] = null; + if(!StackUtil.isValid(this.slots[theSlot])){ + this.slots[theSlot] = StackUtil.getNull(); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java index 02f94a1cd..d99729812 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCanolaPress.java @@ -14,6 +14,7 @@ import cofh.api.energy.EnergyStorage; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -91,10 +92,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IC if(this.currentProcessTime >= TIME){ this.currentProcessTime = 0; - this.slots[0].stackSize--; - if(this.slots[0].stackSize == 0){ - this.slots[0] = null; - } + this.slots[0] = StackUtil.addStackSize(this.slots[0], -1); this.tank.fillInternal(new FluidStack(InitFluids.fluidCanolaOil, PRODUCE), true); this.markDirty(); @@ -119,7 +117,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IC } public boolean isCanola(int slot){ - return this.slots[slot] != null && this.slots[slot].getItem() == InitItems.itemMisc && this.slots[slot].getItemDamage() == TheMiscItems.CANOLA.ordinal(); + return StackUtil.isValid(this.slots[slot]) && this.slots[slot].getItem() == InitItems.itemMisc && this.slots[slot].getItemDamage() == TheMiscItems.CANOLA.ordinal(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java index 2463cff59..6fb7e05e9 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoalGenerator.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.EnergyStorage; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntityFurnace; @@ -73,15 +74,12 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements this.storage.receiveEnergy(PRODUCE, false); } - if(this.currentBurnTime <= 0 && this.slots[0] != null && TileEntityFurnace.getItemBurnTime(this.slots[0]) > 0 && this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){ + if(this.currentBurnTime <= 0 && StackUtil.isValid(this.slots[0]) && TileEntityFurnace.getItemBurnTime(this.slots[0]) > 0 && this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){ int burnTime = TileEntityFurnace.getItemBurnTime(this.slots[0]); this.maxBurnTime = burnTime; this.currentBurnTime = burnTime; - this.slots[0].stackSize--; - if(this.slots[0].stackSize == 0){ - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } + this.slots[0] = StackUtil.addStackSize(this.slots[0], -1); } if(flag != this.currentBurnTime > 0){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoffeeMachine.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoffeeMachine.java index 79011f56c..ae9b79246 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoffeeMachine.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCoffeeMachine.java @@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemCoffee; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -132,10 +133,7 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements if(this.slots[SLOT_COFFEE_BEANS] != null && this.slots[SLOT_COFFEE_BEANS].getItem() == InitItems.itemCoffeeBean){ int toAdd = 2; if(toAdd <= COFFEE_CACHE_MAX_AMOUNT-this.coffeeCacheAmount){ - this.slots[SLOT_COFFEE_BEANS].stackSize--; - if(this.slots[SLOT_COFFEE_BEANS].stackSize <= 0){ - this.slots[SLOT_COFFEE_BEANS] = null; - } + this.slots[SLOT_COFFEE_BEANS] = StackUtil.addStackSize(this.slots[SLOT_COFFEE_BEANS], -1); this.coffeeCacheAmount += toAdd; } } @@ -143,7 +141,7 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements public void brew(){ if(!this.worldObj.isRemote){ - if(this.slots[SLOT_INPUT] != null && this.slots[SLOT_INPUT].getItem() == InitItems.itemMisc && this.slots[SLOT_INPUT].getItemDamage() == TheMiscItems.CUP.ordinal() && this.slots[SLOT_OUTPUT] == null && this.coffeeCacheAmount >= CACHE_USE && this.tank.getFluid() != null && this.tank.getFluid().getFluid() == FluidRegistry.WATER && this.tank.getFluidAmount() >= WATER_USE){ + if(StackUtil.isValid(this.slots[SLOT_INPUT]) && this.slots[SLOT_INPUT].getItem() == InitItems.itemMisc && this.slots[SLOT_INPUT].getItemDamage() == TheMiscItems.CUP.ordinal() && !StackUtil.isValid(this.slots[SLOT_OUTPUT]) && this.coffeeCacheAmount >= CACHE_USE && this.tank.getFluid() != null && this.tank.getFluid().getFluid() == FluidRegistry.WATER && this.tank.getFluidAmount() >= WATER_USE){ if(this.storage.getEnergyStored() >= ENERGY_USED){ if(this.brewTime%30 == 0){ this.worldObj.playSound(null, this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), SoundHandler.coffeeMachine, SoundCategory.BLOCKS, 0.35F, 1.0F); @@ -155,23 +153,17 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements this.brewTime = 0; ItemStack output = new ItemStack(InitItems.itemCoffee); for(int i = 3; i < this.slots.length; i++){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ CoffeeIngredient ingredient = ItemCoffee.getIngredientFromStack(this.slots[i]); if(ingredient != null){ if(ingredient.effect(output)){ - this.slots[i].stackSize--; - if(this.slots[i].stackSize <= 0){ - this.slots[i] = this.slots[i].getItem().getContainerItem(this.slots[i]); - } + this.slots[i] = StackUtil.addStackSize(this.slots[i], 1); } } } } this.slots[SLOT_OUTPUT] = output.copy(); - this.slots[SLOT_INPUT].stackSize--; - if(this.slots[SLOT_INPUT].stackSize <= 0){ - this.slots[SLOT_INPUT] = null; - } + this.slots[SLOT_INPUT] = StackUtil.addStackSize(this.slots[SLOT_INPUT], -1); this.coffeeCacheAmount -= CACHE_USE; this.tank.drainInternal(WATER_USE, true); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCompost.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCompost.java index b309a9fd3..f9a08d24f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCompost.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityCompost.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -62,9 +63,9 @@ public class TileEntityCompost extends TileEntityInventoryBase{ if(!this.worldObj.isRemote){ boolean theFlag = this.conversionTime > 0; - if(this.slots[0] != null){ + if(StackUtil.isValid(this.slots[0])){ CompostRecipe recipe = getRecipeForInput(this.slots[0]); - if(recipe != null && this.slots[0].isItemEqual(recipe.input) && this.slots[0].stackSize >= recipe.input.stackSize){ + if(recipe != null && this.slots[0].isItemEqual(recipe.input) && StackUtil.getStackSize(this.slots[0]) >= StackUtil.getStackSize(recipe.input)){ this.conversionTime++; if(this.conversionTime >= 3000){ this.slots[0] = recipe.output.copy(); @@ -98,8 +99,8 @@ public class TileEntityCompost extends TileEntityInventoryBase{ public int getInventoryStackLimit(){ if(this.slots[0] != null){ CompostRecipe recipe = getRecipeForInput(this.slots[0]); - if(recipe != null && recipe.input != null){ - return recipe.input.stackSize; + if(recipe != null && StackUtil.isValid(recipe.input)){ + return StackUtil.getStackSize(recipe.input); } } return super.getInventoryStackLimit(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDistributorItem.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDistributorItem.java index f2a66452f..43c1a516b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDistributorItem.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDistributorItem.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -42,26 +43,26 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{ for(int i = 0; i < handlerUp.getSlots(); i++){ ItemStack pullable = handlerUp.extractItem(i, 1, true); - if(pullable != null && (this.slots[0] == null || ItemUtil.canBeStacked(this.slots[0], pullable))){ + if(StackUtil.isValid(pullable) && (!StackUtil.isValid(this.slots[0]) || ItemUtil.canBeStacked(this.slots[0], pullable))){ ItemStack pulled = handlerUp.extractItem(i, 1, false); - if(pulled != null){ - if(this.slots[0] == null){ + if(StackUtil.isValid(pulled)){ + if(!StackUtil.isValid(this.slots[0])){ this.slots[0] = pulled.copy(); } else{ - this.slots[0].stackSize += pulled.stackSize; + this.slots[0] = StackUtil.addStackSize(this.slots[0], StackUtil.getStackSize(pulled)); } shouldMarkDirty = true; } } - if(this.slots[0] != null && this.slots[0].stackSize >= this.slots[0].getMaxStackSize()){ + if(StackUtil.isValid(this.slots[0]) && StackUtil.getStackSize(this.slots[0]) >= this.slots[0].getMaxStackSize()){ break; } } } - if(!this.handlersAround.isEmpty() && (!this.handlersAround.containsKey(EnumFacing.UP) || this.handlersAround.size() >= 2) && this.slots[0] != null){ + if(!this.handlersAround.isEmpty() && (!this.handlersAround.containsKey(EnumFacing.UP) || this.handlersAround.size() >= 2) && StackUtil.isValid(this.slots[0])){ EnumFacing[] allFacings = EnumFacing.values(); do{ this.putSide++; @@ -76,33 +77,33 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{ IItemHandler handler = this.handlersAround.get(putFacing); if(handler != null){ int aroundAmount = this.handlersAround.containsKey(EnumFacing.UP) ? this.handlersAround.size()-1 : this.handlersAround.size(); - int amount = this.slots[0].stackSize/aroundAmount; + int amount = StackUtil.getStackSize(this.slots[0])/aroundAmount; if(amount <= 0){ - amount = this.slots[0].stackSize; + amount = StackUtil.getStackSize(this.slots[0]); } if(amount > 0){ ItemStack toInsert = this.slots[0].copy(); - toInsert.stackSize = amount; + toInsert = StackUtil.setStackSize(toInsert, amount); for(int i = 0; i < handler.getSlots(); i++){ ItemStack notInserted = handler.insertItem(i, toInsert.copy(), false); - if(notInserted == null){ - this.slots[0].stackSize -= amount; + if(!StackUtil.isValid(notInserted)){ + this.slots[0] = StackUtil.addStackSize(this.slots[0], -amount); shouldMarkDirty = true; break; } - else if(notInserted.stackSize != this.slots[0].stackSize){ - this.slots[0].stackSize -= notInserted.stackSize; + else if(StackUtil.getStackSize(notInserted) != StackUtil.getStackSize(this.slots[0])){ + this.slots[0] = StackUtil.addStackSize(this.slots[0], -StackUtil.getStackSize(notInserted)); toInsert = notInserted; shouldMarkDirty = true; } } - if(this.slots[0].stackSize <= 0){ - this.slots[0] = null; + if(!StackUtil.isValid(this.slots[0])){ + this.slots[0] = StackUtil.getNull(); shouldMarkDirty = true; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDropper.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDropper.java index 24cca333f..55ccc9290 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDropper.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDropper.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; @@ -64,9 +65,9 @@ public class TileEntityDropper extends TileEntityInventoryBase{ } private void doWork(){ - if(this.removeFromInventory(false) != null){ + if(StackUtil.isValid(this.removeFromInventory(false))){ ItemStack stack = this.removeFromInventory(true); - stack.stackSize = 1; + stack = StackUtil.setStackSize(stack, 1); IBlockState state = this.worldObj.getBlockState(this.pos); WorldUtil.dropItemAtSide(WorldUtil.getDirectionByPistonRotation(state.getBlock().getMetaFromState(state)), this.worldObj, this.pos, stack); } @@ -74,19 +75,16 @@ public class TileEntityDropper extends TileEntityInventoryBase{ public ItemStack removeFromInventory(boolean actuallyDo){ for(int i = 0; i < this.slots.length; i++){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ ItemStack slot = this.slots[i].copy(); if(actuallyDo){ - this.slots[i].stackSize--; - if(this.slots[i].stackSize <= 0){ - this.slots[i] = null; - } + this.slots[i] = StackUtil.addStackSize(this.slots[i], -1); this.markDirty(); } return slot; } } - return null; + return StackUtil.getNull(); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnergizer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnergizer.java index 8f5d982a9..5b8526b0d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnergizer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnergizer.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyContainerItem; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; @@ -47,7 +48,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus public void updateEntity(){ super.updateEntity(); if(!this.worldObj.isRemote){ - if(this.slots[0] != null && this.slots[1] == null){ + if(StackUtil.isValid(this.slots[0]) && !StackUtil.isValid(this.slots[1])){ if(this.storage.getEnergyStored() > 0){ int received = 0; boolean canTakeUp = false; @@ -77,10 +78,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus if(canTakeUp){ this.slots[1] = this.slots[0].copy(); - this.slots[0].stackSize--; - if(this.slots[0].stackSize <= 0){ - this.slots[0] = null; - } + this.slots[0] = StackUtil.addStackSize(this.slots[0], -1); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnervator.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnervator.java index 5066f5046..0afa9920e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnervator.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityEnervator.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyContainerItem; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaProducer; @@ -47,7 +48,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha public void updateEntity(){ super.updateEntity(); if(!this.worldObj.isRemote){ - if(this.slots[0] != null && this.slots[1] == null){ + if(StackUtil.isValid(this.slots[0]) && !StackUtil.isValid(this.slots[1])){ if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){ int extracted = 0; boolean canTakeUp = false; @@ -78,10 +79,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha if(canTakeUp){ this.slots[1] = this.slots[0].copy(); - this.slots[0].stackSize--; - if(this.slots[0].stackSize <= 0){ - this.slots[0] = null; - } + this.slots[0] = StackUtil.addStackSize(this.slots[0], -1); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFeeder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFeeder.java index 56c507955..90ddbea48 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFeeder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFeeder.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.init.Items; @@ -73,16 +74,13 @@ public class TileEntityFeeder extends TileEntityInventoryBase{ if(this.currentAnimalAmount < THRESHOLD){ if(this.currentTimer >= TIME){ this.currentTimer = 0; - if(this.slots[0] != null){ + if(StackUtil.isValid(this.slots[0])){ EntityAnimal randomAnimal = animals.get(this.worldObj.rand.nextInt(this.currentAnimalAmount)); if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && (randomAnimal.isBreedingItem(this.slots[0]) || this.canHorseBeFed(randomAnimal))){ this.feedAnimal(randomAnimal); - this.slots[0].stackSize--; - if(this.slots[0].stackSize == 0){ - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } + this.slots[0] = StackUtil.addStackSize(this.slots[0], -1); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFishingNet.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFishingNet.java index 018978672..73845de5b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFishingNet.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFishingNet.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; @@ -88,8 +89,8 @@ public class TileEntityFishingNet extends TileEntityBase{ for(int i = 0; i < cap.getSlots(); i++){ stack = cap.insertItem(i, stack, false); - if(stack == null || stack.stackSize <= 0){ - return null; + if(!StackUtil.isValid(stack)){ + return StackUtil.getNull(); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFurnaceDouble.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFurnaceDouble.java index 8e43e6325..07584a973 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFurnaceDouble.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityFurnaceDouble.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.EnergyStorage; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -48,27 +49,26 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements ItemStack first = slots[slot1]; ItemStack second = slots[slot2]; - if(first != null || second != null){ - ItemStack toSplit = null; - if(first == null && second != null){ + if(StackUtil.isValid(first) || StackUtil.isValid(second)){ + ItemStack toSplit = StackUtil.getNull(); + if(!StackUtil.isValid(first) && StackUtil.isValid(second)){ toSplit = second; } - else if(second == null && first != null){ + else if(!StackUtil.isValid(second) && StackUtil.isValid(first)){ toSplit = first; } else if(ItemUtil.canBeStacked(first, second)){ - if(first.stackSize < first.getMaxStackSize() || second.stackSize < second.getMaxStackSize()){ - if(!((first.stackSize <= second.stackSize+1 && first.stackSize >= second.stackSize-1) || (second.stackSize <= first.stackSize+1 && second.stackSize >= first.stackSize-1))){ + if(StackUtil.getStackSize(first) < first.getMaxStackSize() || StackUtil.getStackSize(second) < second.getMaxStackSize()){ + if(!((StackUtil.getStackSize(first) <= StackUtil.getStackSize(second)+1 && StackUtil.getStackSize(first) >= StackUtil.getStackSize(second)-1) || (StackUtil.getStackSize(second) <= StackUtil.getStackSize(first)+1 && StackUtil.getStackSize(second) >= StackUtil.getStackSize(first)-1))){ toSplit = first; - toSplit.stackSize += second.stackSize; + toSplit = StackUtil.addStackSize(toSplit, StackUtil.getStackSize(second)); } } } - if(toSplit != null && toSplit.stackSize > 1){ + if(StackUtil.isValid(toSplit)){ ItemStack splitFirst = toSplit.copy(); - ItemStack secondSplit = splitFirst.splitStack(splitFirst.stackSize/2); - + ItemStack secondSplit = splitFirst.splitStack(StackUtil.getStackSize(splitFirst)/2); slots[slot1] = splitFirst; slots[slot2] = secondSplit; } @@ -168,32 +168,28 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements } public boolean canSmeltOn(int theInput, int theOutput){ - if(this.slots[theInput] != null){ + if(StackUtil.isValid(this.slots[theInput])){ ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots[theInput]); - if(this.slots[theInput] != null){ - if(output != null){ - if(this.slots[theOutput] == null || (this.slots[theOutput].isItemEqual(output) && this.slots[theOutput].stackSize <= this.slots[theOutput].getMaxStackSize()-output.stackSize)){ - return true; - } + if(StackUtil.isValid(output)){ + if(!StackUtil.isValid(this.slots[theOutput]) || (this.slots[theOutput].isItemEqual(output) && StackUtil.getStackSize(this.slots[theOutput]) <= this.slots[theOutput].getMaxStackSize()-StackUtil.getStackSize(output))){ + return true; } } + } return false; } public void finishBurning(int theInput, int theOutput){ ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots[theInput]); - if(this.slots[theOutput] == null){ + if(!StackUtil.isValid(this.slots[theOutput])){ this.slots[theOutput] = output.copy(); } else if(this.slots[theOutput].getItem() == output.getItem()){ - this.slots[theOutput].stackSize += output.stackSize; + this.slots[theOutput] = StackUtil.addStackSize(this.slots[theOutput], StackUtil.getStackSize(output)); } - this.slots[theInput].stackSize--; - if(this.slots[theInput].stackSize <= 0){ - this.slots[theInput] = null; - } + this.slots[theInput] = StackUtil.addStackSize(this.slots[theInput], -1); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityGrinder.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityGrinder.java index 2684627ae..e5969fcd5 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityGrinder.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityGrinder.java @@ -15,6 +15,7 @@ import cofh.api.energy.EnergyStorage; import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -184,17 +185,17 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements ICusto } public boolean canCrushOn(int theInput, int theFirstOutput, int theSecondOutput){ - if(this.slots[theInput] != null){ + if(StackUtil.isValid(this.slots[theInput])){ ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots[theInput]); ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots[theInput]); - if(outputOne != null){ + if(StackUtil.isValid(outputOne)){ if(outputOne.getItemDamage() == Util.WILDCARD){ outputOne.setItemDamage(0); } - if(outputTwo != null && outputTwo.getItemDamage() == Util.WILDCARD){ + if(StackUtil.isValid(outputTwo) && outputTwo.getItemDamage() == Util.WILDCARD){ outputTwo.setItemDamage(0); } - if((this.slots[theFirstOutput] == null || (this.slots[theFirstOutput].isItemEqual(outputOne) && this.slots[theFirstOutput].stackSize <= this.slots[theFirstOutput].getMaxStackSize()-outputOne.stackSize)) && (outputTwo == null || (this.slots[theSecondOutput] == null || (this.slots[theSecondOutput].isItemEqual(outputTwo) && this.slots[theSecondOutput].stackSize <= this.slots[theSecondOutput].getMaxStackSize()-outputTwo.stackSize)))){ + if((!StackUtil.isValid(this.slots[theFirstOutput]) || (this.slots[theFirstOutput].isItemEqual(outputOne) && StackUtil.getStackSize(this.slots[theFirstOutput]) <= this.slots[theFirstOutput].getMaxStackSize()-StackUtil.getStackSize(outputOne))) && (!StackUtil.isValid(outputTwo) || (!StackUtil.isValid(this.slots[theSecondOutput]) || (this.slots[theSecondOutput].isItemEqual(outputTwo) && StackUtil.getStackSize(this.slots[theSecondOutput]) <= this.slots[theSecondOutput].getMaxStackSize()-StackUtil.getStackSize(outputTwo))))){ return true; } } @@ -208,38 +209,35 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements ICusto public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){ ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots[theInput]); - if(outputOne != null){ + if(StackUtil.isValid(outputOne)){ if(outputOne.getItemDamage() == Util.WILDCARD){ outputOne.setItemDamage(0); } - if(this.slots[theFirstOutput] == null){ + if(!StackUtil.isValid(this.slots[theFirstOutput])){ this.slots[theFirstOutput] = outputOne.copy(); } else if(this.slots[theFirstOutput].getItem() == outputOne.getItem()){ - this.slots[theFirstOutput].stackSize += outputOne.stackSize; + this.slots[theFirstOutput] = StackUtil.addStackSize(this.slots[theFirstOutput], StackUtil.getStackSize(outputOne)); } } ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots[theInput]); - if(outputTwo != null){ + if(StackUtil.isValid(outputTwo)){ if(outputTwo.getItemDamage() == Util.WILDCARD){ outputTwo.setItemDamage(0); } int rand = this.worldObj.rand.nextInt(100)+1; if(rand <= CrusherRecipeRegistry.getOutputTwoChance(this.slots[theInput])){ - if(this.slots[theSecondOutput] == null){ + if(!StackUtil.isValid(this.slots[theSecondOutput])){ this.slots[theSecondOutput] = outputTwo.copy(); } else if(this.slots[theSecondOutput].getItem() == outputTwo.getItem()){ - this.slots[theSecondOutput].stackSize += outputTwo.stackSize; + this.slots[theSecondOutput] = StackUtil.addStackSize(this.slots[theSecondOutput], StackUtil.getStackSize(outputTwo)); } } } - this.slots[theInput].stackSize--; - if(this.slots[theInput].stackSize <= 0){ - this.slots[theInput] = null; - } + this.slots[theInput] = StackUtil.addStackSize(this.slots[theInput], -1); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java index 85df14562..fa28d001a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInputter.java @@ -14,6 +14,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; @@ -121,194 +122,6 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt return false; } - /** - * Pulls Items from the specified Slots on the specified Side - */ - private void pull(){ - if(this.newPulling() || !(this.placeToPull instanceof IInventory)){ - return; - } - - //The Inventory to pull from - IInventory theInventory = (IInventory)this.placeToPull; - //Does the Inventory even have Slots!? - if(theInventory.getSizeInventory() > 0){ - //The slot currently pulling from (for later) - int theSlotToPull = this.slotToPullStart; - //The amount of Items that can fit into one slot of the inventory - int maxSize = theInventory.getInventoryStackLimit(); - //If the Inventory is ISided, deal with that - ISidedInventory theSided = null; - if(theInventory instanceof ISidedInventory){ - theSided = (ISidedInventory)theInventory; - } - //If can be pulled (for later) - boolean can = false; - - //The Stack that is pulled (for later) - ItemStack theStack = null; - //Go through all of the specified Slots - for(int i = Math.max(theSlotToPull, 0); i < Math.min(this.slotToPullEnd, theInventory.getSizeInventory()); i++){ - //Temporary Stack for storage - ItemStack tempStack = theInventory.getStackInSlot(i); - if(tempStack != null){ - //Set maxSize to the max Size of the temporary stack if it's smaller than the Inventory's Max Size - if(tempStack.getMaxStackSize() < this.getInventoryStackLimit()){ - maxSize = tempStack.getMaxStackSize(); - } - else{ - maxSize = this.getInventoryStackLimit(); - } - } - //If ESD has enough Space & Item in question is on whitelist - if(tempStack != null && (this.slots[0] == null || (ItemUtil.canBeStacked(tempStack, this.slots[0]) && this.slots[0].stackSize < maxSize)) && this.checkBothFilters(tempStack, false)){ - //Deal with ISided - if(theSided != null){ - //Check if Item can be inserted from any Side (Because Sidedness gets ignored!) - for(int j = 0; j <= 5; j++){ - if(theSided.canExtractItem(i, tempStack, EnumFacing.values()[j])){ - theStack = tempStack; - theSlotToPull = i; - can = true; - break; - } - } - } - //Deal with IInventory - else{ - theStack = tempStack; - theSlotToPull = i; - can = true; - } - } - //Stop if it can already pull - if(can){ - break; - } - } - //If pull can be done - if(can){ - //If ESD already has Items - if(this.slots[0] != null){ - if(ItemUtil.canBeStacked(theStack, this.slots[0])){ - //If the StackSize is smaller than the space the ESD has left - if(theStack.stackSize <= maxSize-this.slots[0].stackSize){ - this.slots[0].stackSize += theStack.stackSize; - theInventory.setInventorySlotContents(theSlotToPull, null); - } - //If the StackSize is bigger than what fits into the Inventory - else if(theStack.stackSize > maxSize-this.slots[0].stackSize){ - theInventory.decrStackSize(theSlotToPull, maxSize-this.slots[0].stackSize); - this.slots[0].stackSize = maxSize; - } - } - } - //If ESD is empty - else{ - ItemStack toBePut = theStack.copy(); - if(maxSize < toBePut.stackSize){ - toBePut.stackSize = maxSize; - } - //Actually puts the Item - this.setInventorySlotContents(0, toBePut); - //Removes the Item from the inventory getting pulled from - if(theStack.stackSize == toBePut.stackSize){ - theInventory.setInventorySlotContents(theSlotToPull, null); - } - else{ - theInventory.decrStackSize(theSlotToPull, toBePut.stackSize); - } - } - } - } - } - - /** - * Puts Items into the specified Slots at the specified Side - * (Check pull() for Description, similar to this) - */ - private void put(){ - if(this.newPutting() || !(this.placeToPut instanceof IInventory)){ - return; - } - - IInventory theInventory = (IInventory)this.placeToPut; - if(theInventory.getSizeInventory() > 0){ - int theSlotToPut = this.slotToPutStart; - int maxSize = theInventory.getInventoryStackLimit(); - ISidedInventory theSided = null; - if(theInventory instanceof ISidedInventory){ - theSided = (ISidedInventory)theInventory; - } - boolean can = false; - - if(this.slots[0] != null){ - ItemStack theStack = null; - for(int i = Math.max(theSlotToPut, 0); i < Math.min(this.slotToPutEnd, theInventory.getSizeInventory()); i++){ - ItemStack tempStack = theInventory.getStackInSlot(i); - if(tempStack != null){ - if(tempStack.getMaxStackSize() < theInventory.getInventoryStackLimit()){ - maxSize = tempStack.getMaxStackSize(); - } - else{ - maxSize = theInventory.getInventoryStackLimit(); - } - } - if(theInventory.isItemValidForSlot(i, this.slots[0]) && (tempStack == null || (ItemUtil.canBeStacked(tempStack, this.slots[0]) && tempStack.stackSize < maxSize)) && this.checkBothFilters(this.slots[0], true)){ - if(theSided != null){ - for(int j = 0; j <= 5; j++){ - if(theSided.canInsertItem(i, this.slots[0], EnumFacing.values()[j])){ - theStack = tempStack; - theSlotToPut = i; - can = true; - break; - } - } - } - else{ - theStack = tempStack; - theSlotToPut = i; - can = true; - } - } - if(can){ - break; - } - } - if(can){ - if(theStack != null){ - ItemStack copiedStack = theStack.copy(); - if(ItemUtil.canBeStacked(copiedStack, this.slots[0])){ - if(this.slots[0].stackSize <= maxSize-copiedStack.stackSize){ - copiedStack.stackSize += this.slots[0].stackSize; - this.slots[0] = null; - theInventory.setInventorySlotContents(theSlotToPut, copiedStack); - } - else if(this.slots[0].stackSize > maxSize-copiedStack.stackSize){ - this.decrStackSize(0, maxSize-copiedStack.stackSize); - copiedStack.stackSize = maxSize; - theInventory.setInventorySlotContents(theSlotToPut, copiedStack); - } - } - } - else{ - ItemStack toBePut = this.slots[0].copy(); - if(maxSize < toBePut.stackSize){ - toBePut.stackSize = maxSize; - } - theInventory.setInventorySlotContents(theSlotToPut, toBePut); - if(this.slots[0].stackSize == toBePut.stackSize){ - this.slots[0] = null; - } - else{ - this.decrStackSize(0, toBePut.stackSize); - } - } - } - } - } - } - /** * Checks if one of the filters contains the ItemStack * @@ -455,10 +268,10 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt if(!this.isRedstonePowered){ if(!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)){ if(this.sideToPull != -1 && this.placeToPull != null){ - this.pull(); + this.newPulling(); } - if(this.slots[0] != null && this.sideToPut != -1 && this.placeToPut != null){ - this.put(); + if(StackUtil.isValid(this.slots[0]) && this.sideToPut != -1 && this.placeToPut != null){ + this.newPutting(); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInventoryBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInventoryBase.java index 920493f54..6ede6d218 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInventoryBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityInventoryBase.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -20,6 +21,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.wrapper.SidedInvWrapper; +import java.util.Arrays; + public abstract class TileEntityInventoryBase extends TileEntityBase implements ISidedInventory{ private final SidedInvWrapper[] invWrappers = new SidedInvWrapper[6]; @@ -29,6 +32,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements super(name); this.slots = new ItemStack[slots]; + Arrays.fill(this.slots, StackUtil.getNull()); if(this.hasInvWrapperCapabilities()){ this.getInvWrappers(this.invWrappers); @@ -40,7 +44,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements NBTTagList tagList = new NBTTagList(); for(ItemStack slot : slots){ NBTTagCompound tagCompound = new NBTTagCompound(); - if(slot != null){ + if(StackUtil.isValid(slot)){ slot.writeToNBT(tagCompound); } tagList.appendTag(tagCompound); @@ -54,7 +58,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements NBTTagList tagList = compound.getTagList("Items", 10); for(int i = 0; i < slots.length; i++){ NBTTagCompound tagCompound = tagList.getCompoundTagAt(i); - slots[i] = tagCompound != null && tagCompound.hasKey("id") ? ItemStack.loadItemStackFromNBT(tagCompound) : null; + slots[i] = tagCompound != null && tagCompound.hasKey("id") ? ItemStack.loadItemStackFromNBT(tagCompound) : StackUtil.getNull(); } } } @@ -159,35 +163,35 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements if(i < this.getSizeInventory()){ return this.slots[i]; } - return null; + return StackUtil.getNull(); } @Override public ItemStack decrStackSize(int i, int j){ - if(this.slots[i] != null){ + if(StackUtil.isValid(this.slots[i])){ ItemStack stackAt; - if(this.slots[i].stackSize <= j){ + if(StackUtil.getStackSize(this.slots[i]) <= j){ stackAt = this.slots[i]; - this.slots[i] = null; + this.slots[i] = StackUtil.getNull(); this.markDirty(); return stackAt; } else{ stackAt = this.slots[i].splitStack(j); - if(this.slots[i].stackSize <= 0){ - this.slots[i] = null; + if(StackUtil.getStackSize(this.slots[i]) <= 0){ + this.slots[i] = StackUtil.getNull(); } this.markDirty(); return stackAt; } } - return null; + return StackUtil.getNull(); } @Override public ItemStack removeStackFromSlot(int index){ ItemStack stack = this.slots[index]; - this.slots[index] = null; + this.slots[index] = StackUtil.getNull(); return stack; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java index 8387aa5e0..6f3709259 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.laser.Network; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -59,7 +60,7 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{ @Override public ItemStack extractItem(int slot, int amount, boolean simulate){ ItemStack stackIn = TileEntityItemViewer.this.getStackInSlot(slot); - if(stackIn != null){ + if(StackUtil.isValid(stackIn)){ if(TileEntityItemViewer.this.canExtractItem(slot, stackIn, direction)){ SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot); if(info != null){ @@ -150,8 +151,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{ if(handler != null){ if(this.isWhitelisted(handler, stack, true)){ if(ItemStack.areItemsEqual(handler.handler.getStackInSlot(handler.switchedIndex), stack)){ - ItemStack gaveBack = handler.handler.extractItem(handler.switchedIndex, stack.stackSize, true); - return gaveBack != null; + ItemStack gaveBack = handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stack), true); + return StackUtil.isValid(gaveBack); } } } @@ -195,8 +196,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{ if(handler != null){ ItemStack toInsert = stack.copy(); ItemStack inSlot = handler.handler.getStackInSlot(handler.switchedIndex); - if(inSlot != null){ - toInsert.stackSize -= inSlot.stackSize; + if(StackUtil.isValid(inSlot)){ + toInsert = StackUtil.addStackSize(toInsert, -StackUtil.getStackSize(inSlot)); } handler.handler.insertItem(handler.switchedIndex, toInsert, false); } @@ -243,8 +244,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{ SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index); if(handler != null){ ItemStack stackInSlot = handler.handler.getStackInSlot(handler.switchedIndex); - if(stackInSlot != null){ - handler.handler.extractItem(handler.switchedIndex, stackInSlot.stackSize, false); + if(StackUtil.isValid(stackInSlot)){ + handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stackInSlot), false); } return stackInSlot; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java index eab1b8b0c..06b261c4d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItemWhitelist.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemFilter; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -22,6 +23,8 @@ import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; import net.minecraftforge.items.IItemHandler; +import java.util.Arrays; + public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{ public final IInventory filterInventory; @@ -32,6 +35,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem public TileEntityLaserRelayItemWhitelist(){ super("laserRelayItemWhitelist"); + Arrays.fill(this.slots, StackUtil.getNull()); this.filterInventory = new IInventory(){ private TileEntityLaserRelayItemWhitelist tile; @@ -91,6 +95,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem public void clear(){ int length = this.tile.slots.length; this.tile.slots = new ItemStack[length]; + Arrays.fill(this.tile.slots, StackUtil.getNull()); } @Override @@ -109,35 +114,35 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem if(i < this.getSizeInventory()){ return this.tile.slots[i]; } - return null; + return StackUtil.getNull(); } @Override public ItemStack decrStackSize(int i, int j){ - if(this.tile.slots[i] != null){ + if(StackUtil.isValid(this.tile.slots[i])){ ItemStack stackAt; - if(this.tile.slots[i].stackSize <= j){ + if(StackUtil.getStackSize(this.tile.slots[i]) <= j){ stackAt = this.tile.slots[i]; - this.tile.slots[i] = null; + this.tile.slots[i] = StackUtil.getNull(); this.markDirty(); return stackAt; } else{ stackAt = this.tile.slots[i].splitStack(j); - if(this.tile.slots[i].stackSize <= 0){ - this.tile.slots[i] = null; + if(StackUtil.getStackSize(this.tile.slots[i]) <= 0){ + this.tile.slots[i] = StackUtil.getNull(); } this.markDirty(); return stackAt; } } - return null; + return StackUtil.getNull(); } @Override public ItemStack removeStackFromSlot(int index){ ItemStack stack = this.tile.slots[index]; - this.tile.slots[index] = null; + this.tile.slots[index] = StackUtil.getNull(); return stack; } @@ -205,13 +210,13 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem for(IItemHandler handler : this.handlersAround.values()){ for(int i = 0; i < handler.getSlots(); i++){ ItemStack stack = handler.getStackInSlot(i); - if(stack != null){ + if(StackUtil.isValid(stack)){ ItemStack copy = stack.copy(); - copy.stackSize = 1; + copy = StackUtil.setStackSize(copy, 1); if(!FilterSettings.check(copy, this.slots, usedSettings.startSlot, usedSettings.endSlot, true, usedSettings.respectMeta, usedSettings.respectNBT, usedSettings.respectOredict)){ for(int k = usedSettings.startSlot; k < usedSettings.endSlot; k++){ - if(this.slots[k] != null){ + if(StackUtil.isValid(this.slots[k])){ if(this.slots[k].getItem() instanceof ItemFilter){ ItemStack[] filterSlots = new ItemStack[ContainerFilter.SLOT_AMOUNT]; ItemDrill.loadSlotsFromNBT(filterSlots, this.slots[k]); @@ -219,7 +224,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem boolean did = false; if(filterSlots != null && filterSlots.length > 0){ for(int j = 0; j < filterSlots.length; j++){ - if(filterSlots[j] == null || filterSlots[j].stackSize <= 0){ + if(!StackUtil.isValid(filterSlots[j])){ filterSlots[j] = copy; did = true; break; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomPlacer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomPlacer.java index f3efea179..c203c1ec0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomPlacer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomPlacer.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.tile.IPhantomTile; import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -148,8 +149,8 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements else{ int theSlot = WorldUtil.findFirstFilledSlot(this.slots); this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(WorldUtil.getDirectionBySidesInOrder(this.side), this.worldObj, this.boundPosition, this.slots[theSlot])); - if(this.slots[theSlot] != null && this.slots[theSlot].stackSize <= 0){ - this.slots[theSlot] = null; + if(!StackUtil.isValid(this.slots[theSlot])){ + this.slots[theSlot] = StackUtil.getNull(); } } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityXPSolidifier.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityXPSolidifier.java index da2633b40..4c02c324a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityXPSolidifier.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityXPSolidifier.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.StackUtil; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -122,15 +123,15 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I super.updateEntity(); if(!this.worldObj.isRemote){ if(this.amount > 0){ - if(this.slots[0] == null){ + if(!StackUtil.isValid(this.slots[0])){ int toSet = this.amount > 64 ? 64 : this.amount; this.slots[0] = new ItemStack(InitItems.itemSolidifiedExperience, toSet); this.amount -= toSet; } - else if(this.slots[0].stackSize < 64){ - int needed = 64-this.slots[0].stackSize; + else if(StackUtil.getStackSize(this.slots[0]) < 64){ + int needed = 64-StackUtil.getStackSize(this.slots[0]); int toAdd = this.amount > needed ? needed : this.amount; - this.slots[0].stackSize += toAdd; + this.slots[0] = StackUtil.addStackSize(this.slots[0], toAdd); this.amount -= toAdd; } } @@ -153,8 +154,8 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I } } - if(this.slots[1] != null && this.slots[1].getItem() instanceof ItemSolidifiedExperience){ - this.amount += this.slots[1].stackSize; + if(StackUtil.isValid(this.slots[1]) && this.slots[1].getItem() instanceof ItemSolidifiedExperience){ + this.amount += StackUtil.getStackSize(this.slots[1]); this.slots[1] = null; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java new file mode 100644 index 000000000..ccfbfab57 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java @@ -0,0 +1,68 @@ +/* + * This file ("StackUtil.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.util; + +import net.minecraft.item.ItemStack; + +public final class StackUtil{ + + public static ItemStack validateCopy(ItemStack stack){ + if(isValid(stack)){ + return stack.copy(); + } + else{ + return getNull(); + } + } + + public static ItemStack validateCheck(ItemStack stack){ + if(isValid(stack)){ + return stack; + } + else{ + return getNull(); + } + } + + public static boolean isValid(ItemStack stack){ + return stack != null && !ItemStack.areItemStacksEqual(stack, getNull()) && stack.stackSize > 0 && stack.getItem() != null; + } + + public static ItemStack getNull(){ + return null; + } + + public static int getStackSize(ItemStack stack){ + if(!isValid(stack)){ + return 0; + } + else{ + return stack.stackSize; + } + } + + public static ItemStack setStackSize(ItemStack stack, int size){ + if(size <= 0){ + if(isValid(stack)){ + return stack.getItem().getContainerItem(stack); + } + else{ + return getNull(); + } + } + stack.stackSize = size; + return stack; + } + + public static ItemStack addStackSize(ItemStack stack, int size){ + return setStackSize(stack, getStackSize(stack)+size); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java index 3bbcfc7fd..07f3af09f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java @@ -63,7 +63,7 @@ public final class WorldUtil{ if(theoreticalExtract != null){ ItemStack remaining = insertCap.insertItem(slotInsert, theoreticalExtract, false); if(!ItemStack.areItemStacksEqual(remaining, theoreticalExtract)){ - int toExtract = remaining == null ? theoreticalExtract.stackSize : theoreticalExtract.stackSize-remaining.stackSize; + int toExtract = remaining == null ? StackUtil.getStackSize(theoreticalExtract) : StackUtil.getStackSize(theoreticalExtract)-StackUtil.getStackSize(remaining); extractCap.extractItem(slotExtract, toExtract, false); return true; } @@ -141,7 +141,7 @@ public final class WorldUtil{ } public static ItemStack useItemAtSide(EnumFacing side, World world, BlockPos pos, ItemStack stack){ - if(world instanceof WorldServer && stack != null && stack.getItem() != null && pos != null){ + if(world instanceof WorldServer && StackUtil.isValid(stack) && pos != null){ BlockPos offsetPos = pos.offset(side); IBlockState state = world.getBlockState(offsetPos); Block block = state.getBlock(); @@ -173,16 +173,14 @@ public final class WorldUtil{ //Redstone if(replaceable && stack.getItem() == Items.REDSTONE){ world.setBlockState(offsetPos, Blocks.REDSTONE_WIRE.getDefaultState(), 2); - stack.stackSize--; - return stack; + return StackUtil.addStackSize(stack, -1); } //Plants if(replaceable && stack.getItem() instanceof IPlantable){ if(((IPlantable)stack.getItem()).getPlant(world, offsetPos).getBlock().canPlaceBlockAt(world, offsetPos)){ if(world.setBlockState(offsetPos, ((IPlantable)stack.getItem()).getPlant(world, offsetPos), 2)){ - stack.stackSize--; - return stack; + return StackUtil.addStackSize(stack, -1); } } } @@ -278,12 +276,12 @@ public final class WorldUtil{ for(int i = start; i < end; i++){ if(shouldAlwaysWork || ((!(inventory instanceof ISidedInventory) || ((ISidedInventory)inventory).canInsertItem(i, stackToPutIn, side)) && inventory.isItemValidForSlot(i, stackToPutIn))){ ItemStack stackInQuestion = inventory.getStackInSlot(i); - if(stackToPutIn != null && (stackInQuestion == null || (ItemUtil.canBeStacked(stackInQuestion, stackToPutIn) && stackInQuestion.getMaxStackSize() >= stackInQuestion.stackSize+stackToPutIn.stackSize))){ - if(stackInQuestion == null){ + if(StackUtil.isValid(stackToPutIn) && (!StackUtil.isValid(stackInQuestion) || (ItemUtil.canBeStacked(stackInQuestion, stackToPutIn) && stackInQuestion.getMaxStackSize() >= StackUtil.getStackSize(stackInQuestion)+StackUtil.getStackSize(stackToPutIn)))){ + if(!StackUtil.isValid(stackInQuestion)){ inventory.setInventorySlotContents(i, stackToPutIn.copy()); } else{ - stackInQuestion.stackSize += stackToPutIn.stackSize; + inventory.setInventorySlotContents(i, StackUtil.addStackSize(stackInQuestion, StackUtil.getStackSize(stackToPutIn))); } working++; @@ -402,7 +400,7 @@ public final class WorldUtil{ block.onBlockDestroyedByPlayer(world, pos, state); } - if(stack.stackSize <= 0 && stack == player.getHeldItemMainhand()){ + if(StackUtil.getStackSize(stack) <= 0 && stack == player.getHeldItemMainhand()){ ForgeEventFactory.onPlayerDestroyItem(player, stack, EnumHand.MAIN_HAND); player.setHeldItem(EnumHand.MAIN_HAND, null); }