This only took 20 years

Prepared for 1.11 ItemStack updates
This commit is contained in:
Ellpeck 2016-11-16 16:59:00 +01:00
parent a94a49f9c9
commit 6e34f9e345
77 changed files with 668 additions and 732 deletions

View file

@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.base.ItemBlockBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor; import de.ellpeck.actuallyadditions.mod.tile.TileEntityAtomicReconstructor;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; 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.StringUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase; import net.minecraft.block.BlockPistonBase;
@ -70,11 +71,11 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
if(!world.isRemote){ if(!world.isRemote){
TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor)world.getTileEntity(pos); TileEntityAtomicReconstructor reconstructor = (TileEntityAtomicReconstructor)world.getTileEntity(pos);
if(reconstructor != null){ if(reconstructor != null){
if(heldItem != null){ if(StackUtil.isValid(heldItem)){
Item item = heldItem.getItem(); 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(); ItemStack toPut = heldItem.copy();
toPut.stackSize = 1; toPut = StackUtil.setStackSize(toPut, 1);
reconstructor.setInventorySlotContents(0, toPut); reconstructor.setInventorySlotContents(0, toPut);
player.inventory.decrStackSize(player.inventory.currentItem, 1); player.inventory.decrStackSize(player.inventory.currentItem, 1);
} }
@ -86,9 +87,9 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
} }
else{ else{
ItemStack slot = reconstructor.getStackInSlot(0); ItemStack slot = reconstructor.getStackInSlot(0);
if(slot != null){ if(StackUtil.isValid(slot)){
player.inventory.setInventorySlotContents(player.inventory.currentItem, slot.copy()); player.inventory.setInventorySlotContents(player.inventory.currentItem, slot.copy());
reconstructor.setInventorySlotContents(0, null); reconstructor.setInventorySlotContents(0, StackUtil.getNull());
} }
} }
} }

View file

@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -92,20 +93,20 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
if(stackPlayer != null){ if(stackPlayer != null){
CompostRecipe recipeHand = TileEntityCompost.getRecipeForInput(stackPlayer); CompostRecipe recipeHand = TileEntityCompost.getRecipeForInput(stackPlayer);
if(recipeHand != null && (recipeIn == null || recipeIn == recipeHand)){ 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){ if(slot == null){
ItemStack stackToAdd = stackPlayer.copy(); ItemStack stackToAdd = stackPlayer.copy();
stackToAdd.stackSize = maxAdd; stackToAdd = StackUtil.setStackSize(stackToAdd, maxAdd);
compost.setInventorySlotContents(0, stackToAdd); compost.setInventorySlotContents(0, stackToAdd);
player.inventory.decrStackSize(player.inventory.currentItem, maxAdd); player.inventory.decrStackSize(player.inventory.currentItem, maxAdd);
return true; return true;
} }
else{ else{
ItemStack stackIn = slot.copy(); ItemStack stackIn = slot.copy();
if(stackIn.stackSize < recipeHand.input.stackSize){ if(StackUtil.getStackSize(stackIn) < StackUtil.getStackSize(recipeHand.input)){
int sizeAdded = Math.min(maxAdd, recipeHand.input.stackSize-stackIn.stackSize); int sizeAdded = Math.min(maxAdd, StackUtil.getStackSize(recipeHand.input)-StackUtil.getStackSize(stackIn));
stackIn.stackSize += sizeAdded; stackIn = StackUtil.addStackSize(stackIn, sizeAdded);
compost.setInventorySlotContents(0, stackIn); compost.setInventorySlotContents(0, stackIn);
player.inventory.decrStackSize(player.inventory.currentItem, sizeAdded); player.inventory.decrStackSize(player.inventory.currentItem, sizeAdded);
return true; return true;
@ -121,9 +122,9 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
return true; return true;
} }
else if(ItemUtil.canBeStacked(stackPlayer, slot)){ 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(); ItemStack stackToAdd = stackPlayer.copy();
stackToAdd.stackSize += addedStackSize; stackToAdd = StackUtil.addStackSize(stackToAdd, addedStackSize);
player.inventory.setInventorySlotContents(player.inventory.currentItem, stackToAdd); player.inventory.setInventorySlotContents(player.inventory.currentItem, stackToAdd);
compost.decrStackSize(0, addedStackSize); compost.decrStackSize(0, addedStackSize);
return true; return true;

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.blocks;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityDisplayStand; import de.ellpeck.actuallyadditions.mod.tile.TileEntityDisplayStand;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@ -54,29 +55,29 @@ public class BlockDisplayStand extends BlockContainerBase{
TileEntityDisplayStand stand = (TileEntityDisplayStand)world.getTileEntity(pos); TileEntityDisplayStand stand = (TileEntityDisplayStand)world.getTileEntity(pos);
if(stand != null){ if(stand != null){
ItemStack display = stand.getStackInSlot(0); ItemStack display = stand.getStackInSlot(0);
if(heldItem != null){ if(StackUtil.isValid(heldItem)){
if(display == null){ if(!StackUtil.isValid(display)){
ItemStack toPut = heldItem.copy(); ItemStack toPut = heldItem.copy();
toPut.stackSize = 1; toPut = StackUtil.setStackSize(toPut, 1);
stand.setInventorySlotContents(0, toPut); stand.setInventorySlotContents(0, toPut);
player.inventory.decrStackSize(player.inventory.currentItem, 1); player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
return true; return true;
} }
else if(ItemUtil.canBeStacked(heldItem, display)){ 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){ if(maxTransfer > 0){
heldItem.stackSize += maxTransfer; player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
ItemStack newDisplay = display.copy(); ItemStack newDisplay = display.copy();
newDisplay.stackSize -= maxTransfer; newDisplay = StackUtil.addStackSize(newDisplay, -maxTransfer);
stand.setInventorySlotContents(0, newDisplay.stackSize <= 0 ? null : newDisplay); stand.setInventorySlotContents(0, StackUtil.validateCheck(newDisplay));
return true; return true;
} }
} }
} }
else{ else{
if(display != null){ if(StackUtil.isValid(display)){
player.inventory.setInventorySlotContents(player.inventory.currentItem, display.copy()); player.setHeldItem(hand, display.copy());
stand.setInventorySlotContents(0, null); stand.setInventorySlotContents(0, StackUtil.getNull());
return true; return true;
} }
} }

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.blocks;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityEmpowerer; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEmpowerer;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@ -54,29 +55,29 @@ public class BlockEmpowerer extends BlockContainerBase{
TileEntityEmpowerer empowerer = (TileEntityEmpowerer)world.getTileEntity(pos); TileEntityEmpowerer empowerer = (TileEntityEmpowerer)world.getTileEntity(pos);
if(empowerer != null){ if(empowerer != null){
ItemStack stackThere = empowerer.getStackInSlot(0); ItemStack stackThere = empowerer.getStackInSlot(0);
if(heldItem != null){ if(StackUtil.isValid(heldItem)){
if(stackThere == null && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){ if(!StackUtil.isValid(stackThere) && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){
ItemStack toPut = heldItem.copy(); ItemStack toPut = heldItem.copy();
toPut.stackSize = 1; toPut = StackUtil.setStackSize(toPut, 1);
empowerer.setInventorySlotContents(0, toPut); empowerer.setInventorySlotContents(0, toPut);
player.inventory.decrStackSize(player.inventory.currentItem, 1); player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
return true; return true;
} }
else if(ItemUtil.canBeStacked(heldItem, stackThere)){ 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){ if(maxTransfer > 0){
heldItem.stackSize += maxTransfer; player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
ItemStack newStackThere = stackThere.copy(); ItemStack newStackThere = stackThere.copy();
newStackThere.stackSize -= maxTransfer; StackUtil.addStackSize(newStackThere, -maxTransfer);
empowerer.setInventorySlotContents(0, newStackThere.stackSize <= 0 ? null : newStackThere); empowerer.setInventorySlotContents(0, StackUtil.validateCheck(newStackThere));
return true; return true;
} }
} }
} }
else{ else{
if(stackThere != null){ if(StackUtil.isValid(stackThere)){
player.inventory.setInventorySlotContents(player.inventory.currentItem, stackThere.copy()); player.setHeldItem(hand, stackThere.copy());
empowerer.setInventorySlotContents(0, null); empowerer.setInventorySlotContents(0, StackUtil.getNull());
return true; return true;
} }
} }

View file

@ -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.BlockBase;
import de.ellpeck.actuallyadditions.mod.blocks.base.ItemBlockBase; import de.ellpeck.actuallyadditions.mod.blocks.base.ItemBlockBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.properties.PropertyInteger;
@ -118,7 +119,7 @@ public class BlockSlabs extends BlockBase{
@Override @Override
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ){ 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); IBlockState state = worldIn.getBlockState(pos);
if(state.getBlock() == this.block){ 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)){ if(bound != Block.NULL_AABB && worldIn.checkNoEntityCollision(bound.offset(pos)) && worldIn.setBlockState(pos, newState, 11)){
SoundType soundtype = theBlock.fullBlock.getSoundType(); SoundType soundtype = theBlock.fullBlock.getSoundType();
worldIn.playSound(playerIn, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume()+1.0F)/2.0F, soundtype.getPitch()*0.8F); 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 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{ else{
return EnumActionResult.FAIL; 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); 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); IBlockState iblockstate = worldIn.getBlockState(pos);
if(iblockstate.getBlock() == this.block){ 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)){ if(bound != Block.NULL_AABB && worldIn.checkNoEntityCollision(bound.offset(pos)) && worldIn.setBlockState(pos, newState, 11)){
SoundType soundtype = theBlock.fullBlock.getSoundType(); SoundType soundtype = theBlock.fullBlock.getSoundType();
worldIn.playSound(player, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume()+1.0F)/2.0F, soundtype.getPitch()*0.8F); 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; return true;

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.recipe.TreasureChestLoot; import de.ellpeck.actuallyadditions.api.recipe.TreasureChestLoot;
import de.ellpeck.actuallyadditions.mod.achievement.TheAchievements; import de.ellpeck.actuallyadditions.mod.achievement.TheAchievements;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyInteger; 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++){ for(int i = 0; i < MathHelper.getRandomIntegerInRange(world.rand, 3, 6); i++){
TreasureChestLoot theReturn = WeightedRandom.getRandomItem(world.rand, ActuallyAdditionsAPI.TREASURE_CHEST_LOOT); TreasureChestLoot theReturn = WeightedRandom.getRandomItem(world.rand, ActuallyAdditionsAPI.TREASURE_CHEST_LOOT);
ItemStack itemStack = theReturn.returnItem.copy(); 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 dX = world.rand.nextFloat()*0.8F+0.1F;
float dY = 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; 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; float factor = 0.05F;
entityItem.motionX = world.rand.nextGaussian()*factor; entityItem.motionX = world.rand.nextGaussian()*factor;
entityItem.motionY = world.rand.nextGaussian()*factor+0.2F; entityItem.motionY = world.rand.nextGaussian()*factor+0.2F;
entityItem.motionZ = world.rand.nextGaussian()*factor; entityItem.motionZ = world.rand.nextGaussian()*factor;
world.spawnEntityInWorld(entityItem); world.spawnEntityInWorld(entityItem);
itemStack.stackSize = 0;
} }
} }

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockRedstoneTorch; 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){ public void dropSlotFromInventory(int i, TileEntityInventoryBase tile, World world, BlockPos pos){
ItemStack stack = tile.getStackInSlot(i); 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 dX = world.rand.nextFloat()*0.8F+0.1F;
float dY = 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; 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){ public boolean tryToggleRedstone(World world, BlockPos pos, EntityPlayer player){
ItemStack stack = player.getHeldItemMainhand(); 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); TileEntity tile = world.getTileEntity(pos);
if(tile instanceof TileEntityBase){ if(tile instanceof TileEntityBase){
TileEntityBase base = (TileEntityBase)tile; TileEntityBase base = (TileEntityBase)tile;

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.blocks.base;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockCrops;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
@ -96,13 +97,13 @@ public class BlockPlant extends BlockCrops implements ItemBlockBase.ICustomRarit
List<ItemStack> drops = this.getDrops(world, pos, state, 0); List<ItemStack> drops = this.getDrops(world, pos, state, 0);
boolean deductedSeedSize = false; boolean deductedSeedSize = false;
for(ItemStack drop : drops){ for(ItemStack drop : drops){
if(drop != null){ if(StackUtil.isValid(drop)){
if(drop.getItem() == this.seedItem && !deductedSeedSize){ if(drop.getItem() == this.seedItem && !deductedSeedSize){
drop.stackSize--; StackUtil.addStackSize(drop, -1);
deductedSeedSize = true; 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); EntityItem entity = new EntityItem(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, drop);
world.spawnEntityInWorld(entity); world.spawnEntityInWorld(entity);
} }

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost; import de.ellpeck.actuallyadditions.mod.tile.TileEntityCompost;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
@ -29,23 +30,23 @@ public class RenderCompost extends TileEntitySpecialRenderer{
TileEntityCompost compost = (TileEntityCompost)te; TileEntityCompost compost = (TileEntityCompost)te;
ItemStack slot = compost.getStackInSlot(0); ItemStack slot = compost.getStackInSlot(0);
if(slot != null){ if(StackUtil.isValid(slot)){
Block display = null; Block display = null;
int maxAmount = 0; int maxAmount = 0;
for(CompostRecipe aRecipe : ActuallyAdditionsAPI.COMPOST_RECIPES){ for(CompostRecipe aRecipe : ActuallyAdditionsAPI.COMPOST_RECIPES){
if(slot.isItemEqual(aRecipe.input)){ if(slot.isItemEqual(aRecipe.input)){
display = aRecipe.inputDisplay; display = aRecipe.inputDisplay;
maxAmount = aRecipe.input.stackSize; maxAmount = StackUtil.getStackSize(aRecipe.input);
break; break;
} }
else if(slot.isItemEqual(aRecipe.output)){ else if(slot.isItemEqual(aRecipe.output)){
display = aRecipe.outputDisplay; display = aRecipe.outputDisplay;
maxAmount = aRecipe.output.stackSize; maxAmount = StackUtil.getStackSize(aRecipe.output);
break; break;
} }
} }
if(display != null){ if(display != null){
float i = (float)slot.stackSize/(float)maxAmount; float i = (float)StackUtil.getStackSize(slot)/(float)maxAmount;
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.translate((float)x+0.5F, (float)y+(i/3F)+0.01F, (float)z+0.5F); GlStateManager.translate((float)x+0.5F, (float)y+(i/3F)+0.01F, (float)z+0.5F);
//Hehe //Hehe

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.booklet.page;
import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase; import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase;
import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet; import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; 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.StringUtil;
import de.ellpeck.actuallyadditions.mod.util.Util; import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
@ -162,9 +163,9 @@ public class PageCrafting extends BookletPage{
for(int x = 0; x < width; x++){ for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){ for(int y = 0; y < height; y++){
ItemStack stack = stacks[y*width+x]; ItemStack stack = stacks[y*width+x];
if(stack != null){ if(StackUtil.isValid(stack)){
ItemStack copy = stack.copy(); ItemStack copy = stack.copy();
copy.stackSize = 1; copy = StackUtil.setStackSize(copy, 1);
if(copy.getItemDamage() == Util.WILDCARD){ if(copy.getItemDamage() == Util.WILDCARD){
copy.setItemDamage(0); copy.setItemDamage(0);
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.gen;
import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams; 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.entity.passive.EntityVillager.ITradeList;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -30,15 +31,11 @@ public class JamVillagerTradeList implements ITradeList{
if(random.nextFloat() >= 0.65F){ if(random.nextFloat() >= 0.65F){
//Jam as input //Jam as input
jam.stackSize = random.nextInt(3)+1; recipeList.add(new MerchantRecipe(StackUtil.setStackSize(jam, random.nextInt(3)+1), StackUtil.setStackSize(emerald, random.nextInt(2)+1)));
emerald.stackSize = random.nextInt(2)+1;
recipeList.add(new MerchantRecipe(jam, emerald));
} }
else{ else{
//Emeralds as input //Emeralds as input
jam.stackSize = random.nextInt(4)+2; recipeList.add(new MerchantRecipe(StackUtil.setStackSize(emerald, random.nextInt(6)+2), StackUtil.setStackSize(jam, random.nextInt(4)+2)));
emerald.stackSize = random.nextInt(6)+2;
recipeList.add(new MerchantRecipe(emerald, jam));
} }
} }
} }

View file

@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemBag;
import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.*; 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.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Arrays;
public class ContainerBag extends Container implements IButtonReactor{ 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(this.isVoid || !this.filter.check(newStack, this.bagInventory.slots) || !this.mergeItemStack(newStack, 4, 32, false)){
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override
@ -230,6 +233,7 @@ public class ContainerBag extends Container implements IButtonReactor{
public InventoryBag(boolean isVoid){ public InventoryBag(boolean isVoid){
this.slots = new ItemStack[getSlotAmount(isVoid)]; this.slots = new ItemStack[getSlotAmount(isVoid)];
Arrays.fill(this.slots, StackUtil.getNull());
} }
@Override @Override
@ -286,6 +290,7 @@ public class ContainerBag extends Container implements IButtonReactor{
public void clear(){ public void clear(){
int length = this.slots.length; int length = this.slots.length;
this.slots = new ItemStack[length]; this.slots = new ItemStack[length];
Arrays.fill(this.slots, StackUtil.getNull());
} }
@Override @Override
@ -304,35 +309,35 @@ public class ContainerBag extends Container implements IButtonReactor{
if(i < this.getSizeInventory()){ if(i < this.getSizeInventory()){
return this.slots[i]; return this.slots[i];
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack decrStackSize(int i, int j){ public ItemStack decrStackSize(int i, int j){
if(this.slots[i] != null){ if(StackUtil.isValid(this.slots[i])){
ItemStack stackAt; ItemStack stackAt;
if(this.slots[i].stackSize <= j){ if(StackUtil.getStackSize(this.slots[i]) <= j){
stackAt = this.slots[i]; stackAt = this.slots[i];
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
else{ else{
stackAt = this.slots[i].splitStack(j); stackAt = this.slots[i].splitStack(j);
if(this.slots[i].stackSize <= 0){ if(StackUtil.getStackSize(this.slots[i]) <= 0){
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
} }
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack removeStackFromSlot(int index){ public ItemStack removeStackFromSlot(int index){
ItemStack stack = this.slots[index]; ItemStack stack = this.slots[index];
this.slots[index] = null; this.slots[index] = StackUtil.getNull();
return stack; return stack;
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBioReactor; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -59,39 +60,39 @@ public class ContainerBioReactor extends Container{
//Shift from Inventory //Shift from Inventory
if(TileEntityBioReactor.isValidItem(newStack)){ if(TileEntityBioReactor.isValidItem(newStack)){
if(!this.mergeItemStack(newStack, 0, 8, false)){ if(!this.mergeItemStack(newStack, 0, 8, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBreaker; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -62,33 +63,33 @@ public class ContainerBreaker extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCanolaPress; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -58,39 +59,39 @@ public class ContainerCanolaPress extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CANOLA.ordinal()){ if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CANOLA.ordinal()){
if(!this.mergeItemStack(newStack, 0, 1, false)){ if(!this.mergeItemStack(newStack, 0, 1, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoalGenerator; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -57,39 +58,39 @@ public class ContainerCoalGenerator extends Container{
//Shift from Inventory //Shift from Inventory
if(TileEntityFurnace.getItemBurnTime(newStack) > 0){ if(TileEntityFurnace.getItemBurnTime(newStack) > 0){
if(!this.mergeItemStack(newStack, 0, 1, false)){ if(!this.mergeItemStack(newStack, 0, 1, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemCoffee;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -66,7 +67,7 @@ public class ContainerCoffeeMachine extends Container{
//Slots in Inventory to shift from //Slots in Inventory to shift from
if(slot == TileEntityCoffeeMachine.SLOT_OUTPUT){ if(slot == TileEntityCoffeeMachine.SLOT_OUTPUT){
if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); theSlot.onSlotChange(newStack, currentStack);
} }
@ -75,49 +76,49 @@ public class ContainerCoffeeMachine extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CUP.ordinal()){ if(newStack.getItem() == InitItems.itemMisc && newStack.getItemDamage() == TheMiscItems.CUP.ordinal()){
if(!this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_INPUT, TileEntityCoffeeMachine.SLOT_INPUT+1, false)){ if(!this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_INPUT, TileEntityCoffeeMachine.SLOT_INPUT+1, false)){
return null; return StackUtil.getNull();
} }
} }
else if(ItemCoffee.getIngredientFromStack(newStack) != null){ else if(ItemCoffee.getIngredientFromStack(newStack) != null){
if(!this.mergeItemStack(newStack, 3, 11, false)){ if(!this.mergeItemStack(newStack, 3, 11, false)){
return null; return StackUtil.getNull();
} }
} }
else if(newStack.getItem() == InitItems.itemCoffeeBean){ else if(newStack.getItem() == InitItems.itemCoffeeBean){
if(!this.mergeItemStack(newStack, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS+1, false)){ 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){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.inventory; package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.*; import net.minecraft.inventory.*;
@ -51,7 +52,7 @@ public class ContainerCrafter extends Container{
@Override @Override
public ItemStack transferStackInSlot(EntityPlayer player, int index){ public ItemStack transferStackInSlot(EntityPlayer player, int index){
ItemStack itemstack = null; ItemStack itemstack = StackUtil.getNull();
Slot slot = this.inventorySlots.get(index); Slot slot = this.inventorySlots.get(index);
if(slot != null && slot.getHasStack()){ if(slot != null && slot.getHasStack()){
@ -60,34 +61,34 @@ public class ContainerCrafter extends Container{
if(index == 0){ if(index == 0){
if(!this.mergeItemStack(itemstack1, 10, 46, true)){ if(!this.mergeItemStack(itemstack1, 10, 46, true)){
return null; return StackUtil.getNull();
} }
slot.onSlotChange(itemstack1, itemstack); slot.onSlotChange(itemstack1, itemstack);
} }
else if(index >= 10 && index < 37){ else if(index >= 10 && index < 37){
if(!this.mergeItemStack(itemstack1, 37, 46, false)){ if(!this.mergeItemStack(itemstack1, 37, 46, false)){
return null; return StackUtil.getNull();
} }
} }
else if(index >= 37 && index < 46){ else if(index >= 37 && index < 46){
if(!this.mergeItemStack(itemstack1, 10, 37, false)){ if(!this.mergeItemStack(itemstack1, 10, 37, false)){
return null; return StackUtil.getNull();
} }
} }
else if(!this.mergeItemStack(itemstack1, 10, 46, false)){ else if(!this.mergeItemStack(itemstack1, 10, 46, false)){
return null; return StackUtil.getNull();
} }
if(itemstack1.stackSize <= 0){ if(!StackUtil.isValid(itemstack1)){
slot.putStack(null); slot.putStack(StackUtil.getNull());
} }
else{ else{
slot.onSlotChanged(); slot.onSlotChanged();
} }
if(itemstack1.stackSize == itemstack.stackSize){ if(StackUtil.getStackSize(itemstack1) == StackUtil.getStackSize(itemstack)){
return null; return StackUtil.getNull();
} }
slot.onPickupFromSlot(player, itemstack1); slot.onPickupFromSlot(player, itemstack1);

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityDirectionalBreaker; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -62,33 +63,33 @@ public class ContainerDirectionalBreaker extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
import de.ellpeck.actuallyadditions.mod.items.ItemDrillUpgrade; import de.ellpeck.actuallyadditions.mod.items.ItemDrillUpgrade;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; 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.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import java.util.Arrays;
public class ContainerDrill extends Container{ public class ContainerDrill extends Container{
@ -84,39 +87,39 @@ public class ContainerDrill extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() instanceof ItemDrillUpgrade || newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){ if(newStack.getItem() instanceof ItemDrillUpgrade || newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){
if(!this.mergeItemStack(newStack, 0, 5, false)){ if(!this.mergeItemStack(newStack, 0, 5, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override
@ -147,6 +150,10 @@ public class ContainerDrill extends Container{
public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; public ItemStack[] slots = new ItemStack[SLOT_AMOUNT];
public InventoryDrill(){
Arrays.fill(this.slots, StackUtil.getNull());
}
@Override @Override
public String getName(){ public String getName(){
return "drill"; return "drill";
@ -201,6 +208,7 @@ public class ContainerDrill extends Container{
public void clear(){ public void clear(){
int length = this.slots.length; int length = this.slots.length;
this.slots = new ItemStack[length]; this.slots = new ItemStack[length];
Arrays.fill(this.slots, StackUtil.getNull());
} }
@Override @Override
@ -219,35 +227,35 @@ public class ContainerDrill extends Container{
if(i < this.getSizeInventory()){ if(i < this.getSizeInventory()){
return this.slots[i]; return this.slots[i];
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack decrStackSize(int i, int j){ public ItemStack decrStackSize(int i, int j){
if(this.slots[i] != null){ if(StackUtil.isValid(this.slots[i])){
ItemStack stackAt; ItemStack stackAt;
if(this.slots[i].stackSize <= j){ if(StackUtil.getStackSize(this.slots[i]) <= j){
stackAt = this.slots[i]; stackAt = this.slots[i];
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
else{ else{
stackAt = this.slots[i].splitStack(j); stackAt = this.slots[i].splitStack(j);
if(this.slots[i].stackSize <= 0){ if(StackUtil.getStackSize(this.slots[i]) <= 0){
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
} }
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack removeStackFromSlot(int index){ public ItemStack removeStackFromSlot(int index){
ItemStack stack = this.slots[index]; ItemStack stack = this.slots[index];
this.slots[index] = null; this.slots[index] = StackUtil.getNull();
return stack; return stack;
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityDropper; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -62,33 +63,33 @@ public class ContainerDropper extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnergizer; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnergizer;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@ -86,7 +87,7 @@ public class ContainerEnergizer extends Container{
//Slots in Inventory to shift from //Slots in Inventory to shift from
if(slot == 1){ if(slot == 1){
if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); theSlot.onSlotChange(newStack, currentStack);
} }
@ -95,39 +96,39 @@ public class ContainerEnergizer extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaConsumer, null))){ if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaConsumer, null))){
if(!this.mergeItemStack(newStack, 0, 1, false)){ if(!this.mergeItemStack(newStack, 0, 1, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnervator; import de.ellpeck.actuallyadditions.mod.tile.TileEntityEnervator;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@ -85,7 +86,7 @@ public class ContainerEnervator extends Container{
//Slots in Inventory to shift from //Slots in Inventory to shift from
if(slot == 1){ if(slot == 1){
if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); theSlot.onSlotChange(newStack, currentStack);
} }
@ -94,39 +95,39 @@ public class ContainerEnervator extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){ if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){
if(!this.mergeItemStack(newStack, 0, 1, false)){ if(!this.mergeItemStack(newStack, 0, 1, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFarmer; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -66,39 +67,39 @@ public class ContainerFarmer extends Container{
//Shift from Inventory //Shift from Inventory
if(newStack.getItem() instanceof IPlantable){ if(newStack.getItem() instanceof IPlantable){
if(!this.mergeItemStack(newStack, 0, 6, false)){ if(!this.mergeItemStack(newStack, 0, 6, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFeeder; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -57,33 +58,33 @@ public class ContainerFeeder extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFermentingBarrel; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -53,32 +54,32 @@ public class ContainerFermentingBarrel extends Container{
if(slot >= inventoryStart){ if(slot >= inventoryStart){
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -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.inventory.slot.SlotImmovable;
import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
import de.ellpeck.actuallyadditions.mod.items.ItemFilter; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ClickType; 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.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import java.util.Arrays;
public class ContainerFilter extends Container{ public class ContainerFilter extends Container{
@ -80,32 +83,32 @@ public class ContainerFilter extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize == 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override
@ -140,6 +143,10 @@ public class ContainerFilter extends Container{
public ItemStack[] slots = new ItemStack[SLOT_AMOUNT]; public ItemStack[] slots = new ItemStack[SLOT_AMOUNT];
public InventoryFilter(){
Arrays.fill(this.slots, StackUtil.getNull());
}
@Override @Override
public String getName(){ public String getName(){
return "filter"; return "filter";
@ -194,6 +201,7 @@ public class ContainerFilter extends Container{
public void clear(){ public void clear(){
int length = this.slots.length; int length = this.slots.length;
this.slots = new ItemStack[length]; this.slots = new ItemStack[length];
Arrays.fill(this.slots, StackUtil.getNull());
} }
@Override @Override
@ -212,35 +220,35 @@ public class ContainerFilter extends Container{
if(i < this.getSizeInventory()){ if(i < this.getSizeInventory()){
return this.slots[i]; return this.slots[i];
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack decrStackSize(int i, int j){ public ItemStack decrStackSize(int i, int j){
if(this.slots[i] != null){ if(StackUtil.isValid(this.slots[i])){
ItemStack stackAt; ItemStack stackAt;
if(this.slots[i].stackSize <= j){ if(StackUtil.getStackSize(this.slots[i]) <= j){
stackAt = this.slots[i]; stackAt = this.slots[i];
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
else{ else{
stackAt = this.slots[i].splitStack(j); stackAt = this.slots[i].splitStack(j);
if(this.slots[i].stackSize <= 0){ if(StackUtil.getStackSize(this.slots[i]) <= 0){
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
} }
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack removeStackFromSlot(int index){ public ItemStack removeStackFromSlot(int index){
ItemStack stack = this.slots[index]; ItemStack stack = this.slots[index];
this.slots[index] = null; this.slots[index] = StackUtil.getNull();
return stack; return stack;
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFluidCollector; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -52,7 +53,7 @@ public class ContainerFluidCollector extends Container{
//Slots in Inventory to shift from //Slots in Inventory to shift from
if(slot == 1){ if(slot == 1){
if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); theSlot.onSlotChange(newStack, currentStack);
} }
@ -60,32 +61,32 @@ public class ContainerFluidCollector extends Container{
else if(slot >= inventoryStart){ else if(slot >= inventoryStart){
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFurnaceDouble; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -59,7 +60,7 @@ public class ContainerFurnaceDouble extends Container{
//Slots in Inventory to shift from //Slots in Inventory to shift from
if(slot == TileEntityFurnaceDouble.SLOT_OUTPUT_1 || slot == TileEntityFurnaceDouble.SLOT_OUTPUT_2){ if(slot == TileEntityFurnaceDouble.SLOT_OUTPUT_1 || slot == TileEntityFurnaceDouble.SLOT_OUTPUT_2){
if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); theSlot.onSlotChange(newStack, currentStack);
} }
@ -69,7 +70,7 @@ public class ContainerFurnaceDouble extends Container{
if(FurnaceRecipes.instance().getSmeltingResult(newStack) != null){ 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_1, TileEntityFurnaceDouble.SLOT_INPUT_1+1, false)){
if(!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_2, TileEntityFurnaceDouble.SLOT_INPUT_2+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){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest; import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import invtweaks.api.container.ChestContainer; import invtweaks.api.container.ChestContainer;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@ -63,33 +64,33 @@ public class ContainerGiantChest extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGrinder; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -65,7 +66,7 @@ public class ContainerGrinder extends Container{
//Slots in Inventory to shift from //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(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)){ if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, true)){
return null; return StackUtil.getNull();
} }
theSlot.onSlotChange(newStack, currentStack); 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.mergeItemStack(newStack, TileEntityGrinder.SLOT_INPUT_1, TileEntityGrinder.SLOT_INPUT_1+1, false)){
if(this.isDouble){ if(this.isDouble){
if(!this.mergeItemStack(newStack, TileEntityGrinder.SLOT_INPUT_2, TileEntityGrinder.SLOT_INPUT_2+1, false)){ if(!this.mergeItemStack(newStack, TileEntityGrinder.SLOT_INPUT_2, TileEntityGrinder.SLOT_INPUT_2+1, false)){
return null; return StackUtil.getNull();
} }
} }
else{ else{
return null; return StackUtil.getNull();
} }
} }
} }
@ -88,32 +89,32 @@ public class ContainerGrinder extends Container{
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -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.inventory.slot.SlotFilter;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInputter; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ClickType; import net.minecraft.inventory.ClickType;
@ -74,33 +75,33 @@ public class ContainerInputter extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayItemWhitelist; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ClickType; import net.minecraft.inventory.ClickType;
@ -63,32 +64,32 @@ public class ContainerLaserRelayItemWhitelist extends Container{
if(slot >= inventoryStart){ if(slot >= inventoryStart){
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityMiner; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -62,33 +63,33 @@ public class ContainerMiner extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityOilGenerator; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -52,32 +53,32 @@ public class ContainerOilGenerator extends Container{
if(slot >= inventoryStart){ if(slot >= inventoryStart){
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityPhantomPlacer; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -62,33 +63,33 @@ public class ContainerPhantomPlacer extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityRangedCollector; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ClickType; import net.minecraft.inventory.ClickType;
@ -69,33 +70,33 @@ public class ContainerRangedCollector extends Container{
// //
if(slot >= inventoryStart && slot <= inventoryEnd){ if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.inventory;
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput; import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityItemRepairer; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -58,39 +59,39 @@ public class ContainerRepairer extends Container{
//Shift from Inventory //Shift from Inventory
if(TileEntityItemRepairer.canBeRepaired(newStack)){ if(TileEntityItemRepairer.canBeRepaired(newStack)){
if(!this.mergeItemStack(newStack, TileEntityItemRepairer.SLOT_INPUT, TileEntityItemRepairer.SLOT_INPUT+1, false)){ if(!this.mergeItemStack(newStack, TileEntityItemRepairer.SLOT_INPUT, TileEntityItemRepairer.SLOT_INPUT+1, false)){
return null; return StackUtil.getNull();
} }
} }
// //
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience; import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityXPSolidifier; 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.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -58,37 +59,37 @@ public class ContainerXPSolidifier extends Container{
if(slot >= inventoryStart){ if(slot >= inventoryStart){
if(newStack.getItem() instanceof ItemSolidifiedExperience){ if(newStack.getItem() instanceof ItemSolidifiedExperience){
if(!this.mergeItemStack(newStack, 1, 2, false)){ if(!this.mergeItemStack(newStack, 1, 2, false)){
return null; return StackUtil.getNull();
} }
} }
else if(slot >= inventoryStart && slot <= inventoryEnd){ else if(slot >= inventoryStart && slot <= inventoryEnd){
if(!this.mergeItemStack(newStack, hotbarStart, hotbarEnd+1, false)){ 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)){ 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)){ else if(!this.mergeItemStack(newStack, inventoryStart, hotbarEnd+1, false)){
return null; return StackUtil.getNull();
} }
if(newStack.stackSize <= 0){ if(!StackUtil.isValid(newStack)){
theSlot.putStack(null); theSlot.putStack(StackUtil.getNull());
} }
else{ else{
theSlot.onSlotChanged(); theSlot.onSlotChanged();
} }
if(newStack.stackSize == currentStack.stackSize){ if(StackUtil.getStackSize(newStack) == StackUtil.getStackSize(currentStack)){
return null; return StackUtil.getNull();
} }
theSlot.onPickupFromSlot(player, newStack); theSlot.onPickupFromSlot(player, newStack);
return currentStack; return currentStack;
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.inventory.slot; package de.ellpeck.actuallyadditions.mod.inventory.slot;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
@ -39,7 +40,7 @@ public class SlotFilter extends Slot{
else{ else{
if(heldStack != null){ if(heldStack != null){
ItemStack stack = heldStack.copy(); ItemStack stack = heldStack.copy();
stack.stackSize = 1; stack = StackUtil.setStackSize(stack, 1);
this.putStack(stack); this.putStack(stack);
} }
} }

View file

@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings; import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; 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.StringUtil;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -81,7 +82,7 @@ public class ItemBag extends ItemBase{
filter.readFromNBT(invStack.getTagCompound(), "Filter"); filter.readFromNBT(invStack.getTagCompound(), "Filter");
if(filter.check(stack, inventory)){ if(filter.check(stack, inventory)){
if(isVoid){ if(isVoid){
stack.stackSize = 0; stack = StackUtil.setStackSize(stack, 0);
changed = true; changed = true;
} }
else{ else{
@ -89,21 +90,21 @@ public class ItemBag extends ItemBase{
ItemStack bagStack = inventory[j]; ItemStack bagStack = inventory[j];
if(bagStack != null){ if(bagStack != null){
if(ItemUtil.canBeStacked(bagStack, stack)){ 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){ if(maxTransfer > 0){
bagStack.stackSize += maxTransfer; inventory[j] = StackUtil.addStackSize(bagStack, maxTransfer);
stack.stackSize -= maxTransfer; stack = StackUtil.addStackSize(stack, -maxTransfer);
changed = true; changed = true;
} }
} }
} }
else{ else{
inventory[j] = stack.copy(); inventory[j] = stack.copy();
stack.stackSize = 0; stack = StackUtil.setStackSize(stack, 0);
changed = true; changed = true;
} }
if(stack.stackSize <= 0){ if(!StackUtil.isValid(stack)){
break; break;
} }
} }
@ -120,11 +121,12 @@ public class ItemBag extends ItemBase{
} }
} }
if(stack.stackSize <= 0){ if(!StackUtil.isValid(stack)){
break; break;
} }
} }
} }
item.setEntityItemStack(stack);
} }
} }

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -71,7 +72,7 @@ public class ItemChestToCrateUpgrade extends ItemBase{
} }
if(!player.capabilities.isCreativeMode){ if(!player.capabilities.isCreativeMode){
heldStack.stackSize--; player.setHeldItem(hand, StackUtil.addStackSize(heldStack, -1));
} }
} }
return EnumActionResult.SUCCESS; return EnumActionResult.SUCCESS;

View file

@ -21,6 +21,7 @@ import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; 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.WorldUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.darkhax.tesla.api.ITeslaProducer; import net.darkhax.tesla.api.ITeslaProducer;
@ -105,11 +106,11 @@ public class ItemDrill extends ItemEnergy{
//Places Blocks if the Placing Upgrade is installed //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){ 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); ItemStack upgrade = this.getHasUpgradeAsStack(stack, ItemDrillUpgrade.UpgradeType.PLACER);
if(upgrade != null){ if(StackUtil.isValid(upgrade)){
int slot = ItemDrillUpgrade.getSlotToPlaceFrom(upgrade); int slot = ItemDrillUpgrade.getSlotToPlaceFrom(upgrade);
if(slot >= 0 && slot < InventoryPlayer.getHotbarSize()){ if(slot >= 0 && slot < InventoryPlayer.getHotbarSize()){
ItemStack anEquip = player.inventory.getStackInSlot(slot); ItemStack anEquip = player.inventory.getStackInSlot(slot);
if(anEquip != null && anEquip != stack){ if(StackUtil.isValid(anEquip) && anEquip != stack){
ItemStack equip = anEquip.copy(); ItemStack equip = anEquip.copy();
if(!world.isRemote){ if(!world.isRemote){
//tryPlaceItemIntoWorld could throw an Exception //tryPlaceItemIntoWorld could throw an Exception
@ -117,7 +118,7 @@ public class ItemDrill extends ItemEnergy{
//Places the Block into the World //Places the Block into the World
if(equip.onItemUse(player, world, pos, hand, side, hitX, hitY, hitZ) != EnumActionResult.FAIL){ if(equip.onItemUse(player, world, pos, hand, side, hitX, hitY, hitZ) != EnumActionResult.FAIL){
if(!player.capabilities.isCreativeMode){ if(!player.capabilities.isCreativeMode){
player.inventory.setInventorySlotContents(slot, equip.stackSize <= 0 ? null : equip.copy()); player.inventory.setInventorySlotContents(slot, StackUtil.validateCopy(equip));
} }
//Synchronizes the Client //Synchronizes the Client
player.inventoryContainer.detectAndSendChanges(); player.inventoryContainer.detectAndSendChanges();
@ -149,21 +150,21 @@ public class ItemDrill extends ItemEnergy{
public ItemStack getHasUpgradeAsStack(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){ public ItemStack getHasUpgradeAsStack(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){
NBTTagCompound compound = stack.getTagCompound(); NBTTagCompound compound = stack.getTagCompound();
if(compound == null){ if(compound == null){
return null; return StackUtil.getNull();
} }
ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT]; ItemStack[] slots = new ItemStack[ContainerDrill.SLOT_AMOUNT];
loadSlotsFromNBT(slots, stack); loadSlotsFromNBT(slots, stack);
if(slots != null && slots.length > 0){ if(slots != null && slots.length > 0){
for(ItemStack slotStack : slots){ 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){ if(((ItemDrillUpgrade)slotStack.getItem()).type == upgrade){
return slotStack; return slotStack;
} }
} }
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
@ -195,7 +196,7 @@ public class ItemDrill extends ItemEnergy{
loadSlotsFromNBT(slots, stack); loadSlotsFromNBT(slots, stack);
if(slots != null && slots.length > 0){ if(slots != null && slots.length > 0){
for(ItemStack slotStack : slots){ for(ItemStack slotStack : slots){
if(slotStack != null){ if(StackUtil.isValid(slotStack)){
Item item = slotStack.getItem(); Item item = slotStack.getItem();
int extracted = 0; int extracted = 0;
@ -352,7 +353,7 @@ public class ItemDrill extends ItemEnergy{
* @return Is the Upgrade applied? * @return Is the Upgrade applied?
*/ */
public boolean getHasUpgrade(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){ public boolean getHasUpgrade(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade){
return this.getHasUpgradeAsStack(stack, upgrade) != null; return StackUtil.isValid(this.getHasUpgradeAsStack(stack, upgrade));
} }
@Override @Override

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
@ -191,7 +192,7 @@ public class ItemFillingWand extends ItemEnergy{
if(state != null){ if(state != null){
Block block = state.getBlock(); Block block = state.getBlock();
ItemStack blockStack = new ItemStack(block, 1, block.getMetaFromState(state)); ItemStack blockStack = new ItemStack(block, 1, block.getMetaFromState(state));
if(blockStack.getItem() != null){ if(StackUtil.isValid(blockStack)){
display = blockStack.getDisplayName(); display = blockStack.getDisplayName();
} }
} }
@ -203,13 +204,13 @@ public class ItemFillingWand extends ItemEnergy{
Block block = state.getBlock(); Block block = state.getBlock();
ItemStack stack = new ItemStack(block, 1, block.damageDropped(state)); 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++){ for(int i = 0; i < player.inventory.getSizeInventory(); i++){
ItemStack slot = player.inventory.getStackInSlot(i); ItemStack slot = player.inventory.getStackInSlot(i);
if(slot != null && slot.isItemEqual(stack) && slot.stackSize > 0){ if(StackUtil.isValid(slot) && slot.isItemEqual(stack)){
slot.stackSize--; slot = StackUtil.addStackSize(slot, -1);
if(slot.stackSize <= 0){ if(!StackUtil.isValid(slot)){
player.inventory.setInventorySlotContents(i, null); player.inventory.setInventorySlotContents(i, StackUtil.getNull());
} }
return true; return true;

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; 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.item.EntityItem;
import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityOcelot;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -62,7 +63,7 @@ public class ItemHairyBall extends ItemBase{
entityItem.setPickupDelay(0); entityItem.setPickupDelay(0);
player.worldObj.spawnEntityInWorld(entityItem); 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); world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.2F, world.rand.nextFloat()*0.1F+0.9F);
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
@ -54,7 +55,6 @@ public class ItemKnife extends ItemBase{
public ItemStack getContainerItem(ItemStack stack){ public ItemStack getContainerItem(ItemStack stack){
ItemStack theStack = stack.copy(); ItemStack theStack = stack.copy();
theStack.setItemDamage(theStack.getItemDamage()+1); theStack.setItemDamage(theStack.getItemDamage()+1);
theStack.stackSize = 1; return StackUtil.setStackSize(theStack, 1);
return theStack;
} }
} }

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -39,7 +40,7 @@ public class ItemMagnetRing extends ItemEnergy{
if(!items.isEmpty()){ if(!items.isEmpty()){
for(EntityItem item : items){ for(EntityItem item : items){
if(!item.isDead && !item.cannotPickup()){ if(!item.isDead && !item.cannotPickup()){
int energyForItem = 350*item.getEntityItem().stackSize; int energyForItem = 350*StackUtil.getStackSize(item.getEntityItem());
if(this.getEnergyStored(stack) >= energyForItem){ if(this.getEnergyStored(stack) >= energyForItem){
item.onCollideWithPlayer(player); item.onCollideWithPlayer(player);

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -29,7 +30,7 @@ public class ItemResonantRice extends ItemBase{
@Override @Override
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand){ public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand){
if(!world.isRemote){ if(!world.isRemote){
stack.stackSize--; stack = StackUtil.addStackSize(stack, 1);
world.createExplosion(null, player.posX, player.posY, player.posZ, 0.5F, true); world.createExplosion(null, player.posX, player.posY, player.posZ, 0.5F, true);
} }
return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, stack); return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, stack);

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -57,13 +58,13 @@ public class ItemSolidifiedExperience extends ItemBase{
if(!player.isSneaking()){ if(!player.isSneaking()){
amount = SOLID_XP_AMOUNT; amount = SOLID_XP_AMOUNT;
if(!player.capabilities.isCreativeMode){ if(!player.capabilities.isCreativeMode){
stack.stackSize--; stack = StackUtil.addStackSize(stack, -1);
} }
} }
else{ else{
amount = SOLID_XP_AMOUNT*stack.stackSize; amount = SOLID_XP_AMOUNT*StackUtil.getStackSize(stack);
if(!player.capabilities.isCreativeMode){ if(!player.capabilities.isCreativeMode){
stack.stackSize = 0; stack = StackUtil.setStackSize(stack, 0);
} }
} }

View file

@ -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.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; 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.StringUtil;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityList;
@ -85,7 +86,7 @@ public class ItemSpawnerChanger extends ItemBase{
ItemPhantomConnector.clearStorage(stack, "Entity"); ItemPhantomConnector.clearStorage(stack, "Entity");
if(!player.capabilities.isCreativeMode){ if(!player.capabilities.isCreativeMode){
stack.stackSize--; player.setHeldItem(hand, StackUtil.addStackSize(stack, -1));
} }
return EnumActionResult.SUCCESS; return EnumActionResult.SUCCESS;

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockLiquid;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -44,7 +45,7 @@ public class ItemWaterBowl extends ItemBase{
public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event){ public void onPlayerInteractEvent(PlayerInteractEvent.RightClickItem event){
if(event.getWorld() != null){ if(event.getWorld() != null){
if(ConfigBoolValues.WATER_BOWL.isEnabled()){ 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); RayTraceResult trace = WorldUtil.getNearestBlockWithDefaultReachDistance(event.getWorld(), event.getEntityPlayer(), true, false, false);
ActionResult<ItemStack> result = ForgeEventFactory.onBucketUse(event.getEntityPlayer(), event.getWorld(), event.getItemStack(), trace); ActionResult<ItemStack> result = ForgeEventFactory.onBucketUse(event.getEntityPlayer(), event.getWorld(), event.getItemStack(), trace);
if(result == null && trace != null && trace.getBlockPos() != null){ if(result == null && trace != null && trace.getBlockPos() != null){
@ -57,10 +58,10 @@ public class ItemWaterBowl extends ItemBase{
if(!event.getWorld().isRemote){ if(!event.getWorld().isRemote){
event.getWorld().setBlockState(trace.getBlockPos(), Blocks.AIR.getDefaultState(), 11); 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); ItemStack bowl = new ItemStack(InitItems.itemWaterBowl);
if(event.getItemStack().stackSize <= 0){ if(!StackUtil.isValid(reduced)){
event.getEntityPlayer().setHeldItem(event.getHand(), bowl); event.getEntityPlayer().setHeldItem(event.getHand(), bowl);
} }
else if(!event.getEntityPlayer().inventory.addItemStackToInventory(bowl.copy())){ else if(!event.getEntityPlayer().inventory.addItemStackToInventory(bowl.copy())){

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.entity.EntityWorm; import de.ellpeck.actuallyadditions.mod.entity.EntityWorm;
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.BlockGrass; import net.minecraft.block.BlockGrass;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem; 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); worm.setPosition(pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5);
world.spawnEntityInWorld(worm); world.spawnEntityInWorld(worm);
stack.stackSize--; player.setHeldItem(hand, StackUtil.addStackSize(stack, -1));
} }
return EnumActionResult.SUCCESS; return EnumActionResult.SUCCESS;
} }

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.items.lens;
import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor; import de.ellpeck.actuallyadditions.api.internal.IAtomicReconstructor;
import de.ellpeck.actuallyadditions.api.lens.Lens; import de.ellpeck.actuallyadditions.api.lens.Lens;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
@ -36,7 +37,7 @@ public class LensDisruption extends Lens{
ArrayList<EntityItem> items = (ArrayList<EntityItem>)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)); ArrayList<EntityItem> items = (ArrayList<EntityItem>)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){ for(EntityItem item : items){
ItemStack stack = item.getEntityItem(); 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")){ if(!stack.hasTagCompound() || !stack.getTagCompound().getBoolean(ModUtil.MOD_ID+"DisruptedAlready")){
ItemStack newStack; ItemStack newStack;
@ -48,9 +49,9 @@ public class LensDisruption extends Lens{
newStack = new ItemStack(Block.REGISTRY.getRandomObject(tile.getWorldObject().rand)); 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()){ if(!newStack.hasTagCompound()){
newStack.setTagCompound(new NBTTagCompound()); newStack.setTagCompound(new NBTTagCompound());

View file

@ -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.booklet.page.PageTextOnly;
import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler; import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler;
import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
@ -177,25 +178,25 @@ public class MethodHandler implements IMethodHandler{
ArrayList<EntityItem> items = (ArrayList<EntityItem>)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)); ArrayList<EntityItem> items = (ArrayList<EntityItem>)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){ for(EntityItem item : items){
ItemStack stack = item.getEntityItem(); ItemStack stack = item.getEntityItem();
if(!item.isDead && stack != null){ if(!item.isDead && StackUtil.isValid(stack)){
List<LensConversionRecipe> recipes = LensRecipeHandler.getRecipesFor(stack); List<LensConversionRecipe> recipes = LensRecipeHandler.getRecipesFor(stack);
for(LensConversionRecipe recipe : recipes){ for(LensConversionRecipe recipe : recipes){
if(recipe != null && recipe.type == tile.getLens()){ 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){ if(itemsPossible > 0){
item.setDead(); item.setDead();
if(stack.stackSize-itemsPossible > 0){ if(StackUtil.getStackSize(stack)-itemsPossible > 0){
ItemStack stackCopy = stack.copy(); 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); EntityItem inputLeft = new EntityItem(tile.getWorldObject(), item.posX, item.posY, item.posZ, stackCopy);
tile.getWorldObject().spawnEntityInWorld(inputLeft); tile.getWorldObject().spawnEntityInWorld(inputLeft);
} }
ItemStack outputCopy = recipe.outputStack.copy(); 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); EntityItem newItem = new EntityItem(tile.getWorldObject(), item.posX, item.posY, item.posZ, outputCopy);
tile.getWorldObject().spawnEntityInWorld(newItem); tile.getWorldObject().spawnEntityInWorld(newItem);
@ -216,21 +217,21 @@ public class MethodHandler implements IMethodHandler{
public boolean addCrusherRecipes(List<ItemStack> inputs, List<ItemStack> outputOnes, int outputOneAmounts, List<ItemStack> outputTwos, int outputTwoAmounts, int outputTwoChance){ public boolean addCrusherRecipes(List<ItemStack> inputs, List<ItemStack> outputOnes, int outputOneAmounts, List<ItemStack> outputTwos, int outputTwoAmounts, int outputTwoChance){
boolean hasWorkedOnce = false; boolean hasWorkedOnce = false;
for(ItemStack input : inputs){ for(ItemStack input : inputs){
if(input != null && CrusherRecipeRegistry.getRecipeFromInput(input) == null){ if(StackUtil.isValid(input) && CrusherRecipeRegistry.getRecipeFromInput(input) == null){
for(ItemStack outputOne : outputOnes){ for(ItemStack outputOne : outputOnes){
if(outputOne != null && !CrusherRecipeRegistry.hasBlacklistedOutput(outputOne)){ if(StackUtil.isValid(outputOne) && !CrusherRecipeRegistry.hasBlacklistedOutput(outputOne)){
ItemStack outputOneCopy = outputOne.copy(); ItemStack outputOneCopy = outputOne.copy();
outputOneCopy.stackSize = outputOneAmounts; outputOneCopy = StackUtil.setStackSize(outputOneCopy, outputOneAmounts);
if(outputTwos == null || outputTwos.isEmpty()){ if(outputTwos == null || outputTwos.isEmpty()){
ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, null, 0); ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, StackUtil.getNull(), 0);
hasWorkedOnce = true; hasWorkedOnce = true;
} }
else{ else{
for(ItemStack outputTwo : outputTwos){ for(ItemStack outputTwo : outputTwos){
if(outputTwo != null && !CrusherRecipeRegistry.hasBlacklistedOutput(outputTwo)){ if(StackUtil.isValid(outputTwo) && !CrusherRecipeRegistry.hasBlacklistedOutput(outputTwo)){
ItemStack outputTwoCopy = outputTwo.copy(); ItemStack outputTwoCopy = outputTwo.copy();
outputTwoCopy.stackSize = outputTwoAmounts; outputTwoCopy = StackUtil.setStackSize(outputTwoCopy, outputTwoAmounts);
ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, outputTwoCopy, outputTwoChance); ActuallyAdditionsAPI.addCrusherRecipe(input, outputOneCopy, outputTwoCopy, outputTwoChance);
hasWorkedOnce = true; hasWorkedOnce = true;

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter; import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
import de.ellpeck.actuallyadditions.mod.items.ItemFilter; import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.oredict.OreDictionary; 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){ 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++){ for(int i = startSlot; i < endSlot; i++){
if(slots[i] != null){ if(StackUtil.isValid(slots[i])){
if(areEqualEnough(slots[i], stack, meta, nbt, oredict)){ if(areEqualEnough(slots[i], stack, meta, nbt, oredict)){
return whitelist; return whitelist;
} }
@ -62,7 +63,7 @@ public class FilterSettings{
ItemDrill.loadSlotsFromNBT(filterSlots, slots[i]); ItemDrill.loadSlotsFromNBT(filterSlots, slots[i]);
if(filterSlots != null && filterSlots.length > 0){ if(filterSlots != null && filterSlots.length > 0){
for(ItemStack filterSlot : filterSlots){ 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; return whitelist;
} }
} }

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.IGrowable; import net.minecraft.block.IGrowable;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -40,7 +41,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
} }
public static boolean isValidItem(ItemStack stack){ public static boolean isValidItem(ItemStack stack){
if(stack != null){ if(StackUtil.isValid(stack)){
Item item = stack.getItem(); Item item = stack.getItem();
if(isValid(item)){ if(isValid(item)){
return true; return true;
@ -66,7 +67,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){ if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
for(int i = 0; i < this.slots.length; i++){ for(int i = 0; i < this.slots.length; i++){
ItemStack stack = this.slots[i]; ItemStack stack = this.slots[i];
if(stack != null){ if(StackUtil.isValid(stack)){
Item item = stack.getItem(); Item item = stack.getItem();
if(isValidItem(stack) && (types == null || !types.contains(item))){ if(isValidItem(stack) && (types == null || !types.contains(item))){
if(types == null){ if(types == null){
@ -74,10 +75,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
} }
types.add(item); types.add(item);
stack.stackSize--; this.slots[i] = StackUtil.addStackSize(stack, -1);
if(stack.stackSize <= 0){
this.slots[i] = null;
}
} }
} }
} }

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockLiquid;
@ -100,8 +101,8 @@ public class TileEntityBreaker extends TileEntityInventoryBase{
else if(this.isPlacer){ else if(this.isPlacer){
int theSlot = WorldUtil.findFirstFilledSlot(this.slots); int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(sideToManipulate, this.worldObj, this.pos, this.slots[theSlot])); this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(sideToManipulate, this.worldObj, this.pos, this.slots[theSlot]));
if(this.slots[theSlot] != null && this.slots[theSlot].stackSize <= 0){ if(!StackUtil.isValid(this.slots[theSlot])){
this.slots[theSlot] = null; this.slots[theSlot] = StackUtil.getNull();
} }
} }
} }

View file

@ -14,6 +14,7 @@ import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.Util; import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -91,10 +92,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IC
if(this.currentProcessTime >= TIME){ if(this.currentProcessTime >= TIME){
this.currentProcessTime = 0; this.currentProcessTime = 0;
this.slots[0].stackSize--; this.slots[0] = StackUtil.addStackSize(this.slots[0], -1);
if(this.slots[0].stackSize == 0){
this.slots[0] = null;
}
this.tank.fillInternal(new FluidStack(InitFluids.fluidCanolaOil, PRODUCE), true); this.tank.fillInternal(new FluidStack(InitFluids.fluidCanolaOil, PRODUCE), true);
this.markDirty(); this.markDirty();
@ -119,7 +117,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IC
} }
public boolean isCanola(int slot){ 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 @Override

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.tileentity.TileEntityFurnace;
@ -73,15 +74,12 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements
this.storage.receiveEnergy(PRODUCE, false); 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]); int burnTime = TileEntityFurnace.getItemBurnTime(this.slots[0]);
this.maxBurnTime = burnTime; this.maxBurnTime = burnTime;
this.currentBurnTime = burnTime; this.currentBurnTime = burnTime;
this.slots[0].stackSize--; this.slots[0] = StackUtil.addStackSize(this.slots[0], -1);
if(this.slots[0].stackSize == 0){
this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]);
}
} }
if(flag != this.currentBurnTime > 0){ if(flag != this.currentBurnTime > 0){

View file

@ -17,6 +17,7 @@ import de.ellpeck.actuallyadditions.mod.items.ItemCoffee;
import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems;
import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; import de.ellpeck.actuallyadditions.mod.misc.SoundHandler;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.Util; import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; 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){ if(this.slots[SLOT_COFFEE_BEANS] != null && this.slots[SLOT_COFFEE_BEANS].getItem() == InitItems.itemCoffeeBean){
int toAdd = 2; int toAdd = 2;
if(toAdd <= COFFEE_CACHE_MAX_AMOUNT-this.coffeeCacheAmount){ if(toAdd <= COFFEE_CACHE_MAX_AMOUNT-this.coffeeCacheAmount){
this.slots[SLOT_COFFEE_BEANS].stackSize--; this.slots[SLOT_COFFEE_BEANS] = StackUtil.addStackSize(this.slots[SLOT_COFFEE_BEANS], -1);
if(this.slots[SLOT_COFFEE_BEANS].stackSize <= 0){
this.slots[SLOT_COFFEE_BEANS] = null;
}
this.coffeeCacheAmount += toAdd; this.coffeeCacheAmount += toAdd;
} }
} }
@ -143,7 +141,7 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
public void brew(){ public void brew(){
if(!this.worldObj.isRemote){ 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.storage.getEnergyStored() >= ENERGY_USED){
if(this.brewTime%30 == 0){ 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); 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; this.brewTime = 0;
ItemStack output = new ItemStack(InitItems.itemCoffee); ItemStack output = new ItemStack(InitItems.itemCoffee);
for(int i = 3; i < this.slots.length; i++){ 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]); CoffeeIngredient ingredient = ItemCoffee.getIngredientFromStack(this.slots[i]);
if(ingredient != null){ if(ingredient != null){
if(ingredient.effect(output)){ if(ingredient.effect(output)){
this.slots[i].stackSize--; this.slots[i] = StackUtil.addStackSize(this.slots[i], 1);
if(this.slots[i].stackSize <= 0){
this.slots[i] = this.slots[i].getItem().getContainerItem(this.slots[i]);
}
} }
} }
} }
} }
this.slots[SLOT_OUTPUT] = output.copy(); this.slots[SLOT_OUTPUT] = output.copy();
this.slots[SLOT_INPUT].stackSize--; this.slots[SLOT_INPUT] = StackUtil.addStackSize(this.slots[SLOT_INPUT], -1);
if(this.slots[SLOT_INPUT].stackSize <= 0){
this.slots[SLOT_INPUT] = null;
}
this.coffeeCacheAmount -= CACHE_USE; this.coffeeCacheAmount -= CACHE_USE;
this.tank.drainInternal(WATER_USE, true); this.tank.drainInternal(WATER_USE, true);
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
@ -62,9 +63,9 @@ public class TileEntityCompost extends TileEntityInventoryBase{
if(!this.worldObj.isRemote){ if(!this.worldObj.isRemote){
boolean theFlag = this.conversionTime > 0; boolean theFlag = this.conversionTime > 0;
if(this.slots[0] != null){ if(StackUtil.isValid(this.slots[0])){
CompostRecipe recipe = getRecipeForInput(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++; this.conversionTime++;
if(this.conversionTime >= 3000){ if(this.conversionTime >= 3000){
this.slots[0] = recipe.output.copy(); this.slots[0] = recipe.output.copy();
@ -98,8 +99,8 @@ public class TileEntityCompost extends TileEntityInventoryBase{
public int getInventoryStackLimit(){ public int getInventoryStackLimit(){
if(this.slots[0] != null){ if(this.slots[0] != null){
CompostRecipe recipe = getRecipeForInput(this.slots[0]); CompostRecipe recipe = getRecipeForInput(this.slots[0]);
if(recipe != null && recipe.input != null){ if(recipe != null && StackUtil.isValid(recipe.input)){
return recipe.input.stackSize; return StackUtil.getStackSize(recipe.input);
} }
} }
return super.getInventoryStackLimit(); return super.getInventoryStackLimit();

View file

@ -11,6 +11,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -42,26 +43,26 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{
for(int i = 0; i < handlerUp.getSlots(); i++){ for(int i = 0; i < handlerUp.getSlots(); i++){
ItemStack pullable = handlerUp.extractItem(i, 1, true); 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); ItemStack pulled = handlerUp.extractItem(i, 1, false);
if(pulled != null){ if(StackUtil.isValid(pulled)){
if(this.slots[0] == null){ if(!StackUtil.isValid(this.slots[0])){
this.slots[0] = pulled.copy(); this.slots[0] = pulled.copy();
} }
else{ else{
this.slots[0].stackSize += pulled.stackSize; this.slots[0] = StackUtil.addStackSize(this.slots[0], StackUtil.getStackSize(pulled));
} }
shouldMarkDirty = true; 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; 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(); EnumFacing[] allFacings = EnumFacing.values();
do{ do{
this.putSide++; this.putSide++;
@ -76,33 +77,33 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{
IItemHandler handler = this.handlersAround.get(putFacing); IItemHandler handler = this.handlersAround.get(putFacing);
if(handler != null){ if(handler != null){
int aroundAmount = this.handlersAround.containsKey(EnumFacing.UP) ? this.handlersAround.size()-1 : this.handlersAround.size(); 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){ if(amount <= 0){
amount = this.slots[0].stackSize; amount = StackUtil.getStackSize(this.slots[0]);
} }
if(amount > 0){ if(amount > 0){
ItemStack toInsert = this.slots[0].copy(); ItemStack toInsert = this.slots[0].copy();
toInsert.stackSize = amount; toInsert = StackUtil.setStackSize(toInsert, amount);
for(int i = 0; i < handler.getSlots(); i++){ for(int i = 0; i < handler.getSlots(); i++){
ItemStack notInserted = handler.insertItem(i, toInsert.copy(), false); ItemStack notInserted = handler.insertItem(i, toInsert.copy(), false);
if(notInserted == null){ if(!StackUtil.isValid(notInserted)){
this.slots[0].stackSize -= amount; this.slots[0] = StackUtil.addStackSize(this.slots[0], -amount);
shouldMarkDirty = true; shouldMarkDirty = true;
break; break;
} }
else if(notInserted.stackSize != this.slots[0].stackSize){ else if(StackUtil.getStackSize(notInserted) != StackUtil.getStackSize(this.slots[0])){
this.slots[0].stackSize -= notInserted.stackSize; this.slots[0] = StackUtil.addStackSize(this.slots[0], -StackUtil.getStackSize(notInserted));
toInsert = notInserted; toInsert = notInserted;
shouldMarkDirty = true; shouldMarkDirty = true;
} }
} }
if(this.slots[0].stackSize <= 0){ if(!StackUtil.isValid(this.slots[0])){
this.slots[0] = null; this.slots[0] = StackUtil.getNull();
shouldMarkDirty = true; shouldMarkDirty = true;
} }
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -64,9 +65,9 @@ public class TileEntityDropper extends TileEntityInventoryBase{
} }
private void doWork(){ private void doWork(){
if(this.removeFromInventory(false) != null){ if(StackUtil.isValid(this.removeFromInventory(false))){
ItemStack stack = this.removeFromInventory(true); ItemStack stack = this.removeFromInventory(true);
stack.stackSize = 1; stack = StackUtil.setStackSize(stack, 1);
IBlockState state = this.worldObj.getBlockState(this.pos); IBlockState state = this.worldObj.getBlockState(this.pos);
WorldUtil.dropItemAtSide(WorldUtil.getDirectionByPistonRotation(state.getBlock().getMetaFromState(state)), this.worldObj, this.pos, stack); 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){ public ItemStack removeFromInventory(boolean actuallyDo){
for(int i = 0; i < this.slots.length; i++){ 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(); ItemStack slot = this.slots[i].copy();
if(actuallyDo){ if(actuallyDo){
this.slots[i].stackSize--; this.slots[i] = StackUtil.addStackSize(this.slots[i], -1);
if(this.slots[i].stackSize <= 0){
this.slots[i] = null;
}
this.markDirty(); this.markDirty();
} }
return slot; return slot;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyContainerItem; import cofh.api.energy.IEnergyContainerItem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaConsumer;
import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaHolder;
@ -47,7 +48,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus
public void updateEntity(){ public void updateEntity(){
super.updateEntity(); super.updateEntity();
if(!this.worldObj.isRemote){ 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){ if(this.storage.getEnergyStored() > 0){
int received = 0; int received = 0;
boolean canTakeUp = false; boolean canTakeUp = false;
@ -77,10 +78,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus
if(canTakeUp){ if(canTakeUp){
this.slots[1] = this.slots[0].copy(); this.slots[1] = this.slots[0].copy();
this.slots[0].stackSize--; this.slots[0] = StackUtil.addStackSize(this.slots[0], -1);
if(this.slots[0].stackSize <= 0){
this.slots[0] = null;
}
} }
} }
} }

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyContainerItem; import cofh.api.energy.IEnergyContainerItem;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil;
import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaHolder;
import net.darkhax.tesla.api.ITeslaProducer; import net.darkhax.tesla.api.ITeslaProducer;
@ -47,7 +48,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
public void updateEntity(){ public void updateEntity(){
super.updateEntity(); super.updateEntity();
if(!this.worldObj.isRemote){ 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()){ if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
int extracted = 0; int extracted = 0;
boolean canTakeUp = false; boolean canTakeUp = false;
@ -78,10 +79,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
if(canTakeUp){ if(canTakeUp){
this.slots[1] = this.slots[0].copy(); this.slots[1] = this.slots[0].copy();
this.slots[0].stackSize--; this.slots[0] = StackUtil.addStackSize(this.slots[0], -1);
if(this.slots[0].stackSize <= 0){
this.slots[0] = null;
}
} }
} }
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Items; import net.minecraft.init.Items;
@ -73,16 +74,13 @@ public class TileEntityFeeder extends TileEntityInventoryBase{
if(this.currentAnimalAmount < THRESHOLD){ if(this.currentAnimalAmount < THRESHOLD){
if(this.currentTimer >= TIME){ if(this.currentTimer >= TIME){
this.currentTimer = 0; this.currentTimer = 0;
if(this.slots[0] != null){ if(StackUtil.isValid(this.slots[0])){
EntityAnimal randomAnimal = animals.get(this.worldObj.rand.nextInt(this.currentAnimalAmount)); EntityAnimal randomAnimal = animals.get(this.worldObj.rand.nextInt(this.currentAnimalAmount));
if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && (randomAnimal.isBreedingItem(this.slots[0]) || this.canHorseBeFed(randomAnimal))){ if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && (randomAnimal.isBreedingItem(this.slots[0]) || this.canHorseBeFed(randomAnimal))){
this.feedAnimal(randomAnimal); this.feedAnimal(randomAnimal);
this.slots[0].stackSize--; this.slots[0] = StackUtil.addStackSize(this.slots[0], -1);
if(this.slots[0].stackSize == 0){
this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]);
}
} }
} }
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -88,8 +89,8 @@ public class TileEntityFishingNet extends TileEntityBase{
for(int i = 0; i < cap.getSlots(); i++){ for(int i = 0; i < cap.getSlots(); i++){
stack = cap.insertItem(i, stack, false); stack = cap.insertItem(i, stack, false);
if(stack == null || stack.stackSize <= 0){ if(!StackUtil.isValid(stack)){
return null; return StackUtil.getNull();
} }
} }
} }

View file

@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -48,27 +49,26 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
ItemStack first = slots[slot1]; ItemStack first = slots[slot1];
ItemStack second = slots[slot2]; ItemStack second = slots[slot2];
if(first != null || second != null){ if(StackUtil.isValid(first) || StackUtil.isValid(second)){
ItemStack toSplit = null; ItemStack toSplit = StackUtil.getNull();
if(first == null && second != null){ if(!StackUtil.isValid(first) && StackUtil.isValid(second)){
toSplit = second; toSplit = second;
} }
else if(second == null && first != null){ else if(!StackUtil.isValid(second) && StackUtil.isValid(first)){
toSplit = first; toSplit = first;
} }
else if(ItemUtil.canBeStacked(first, second)){ else if(ItemUtil.canBeStacked(first, second)){
if(first.stackSize < first.getMaxStackSize() || second.stackSize < second.getMaxStackSize()){ if(StackUtil.getStackSize(first) < first.getMaxStackSize() || StackUtil.getStackSize(second) < 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) <= 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 = 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 splitFirst = toSplit.copy();
ItemStack secondSplit = splitFirst.splitStack(splitFirst.stackSize/2); ItemStack secondSplit = splitFirst.splitStack(StackUtil.getStackSize(splitFirst)/2);
slots[slot1] = splitFirst; slots[slot1] = splitFirst;
slots[slot2] = secondSplit; slots[slot2] = secondSplit;
} }
@ -168,32 +168,28 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
} }
public boolean canSmeltOn(int theInput, int theOutput){ 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]); ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots[theInput]);
if(this.slots[theInput] != null){ if(StackUtil.isValid(output)){
if(output != null){ if(!StackUtil.isValid(this.slots[theOutput]) || (this.slots[theOutput].isItemEqual(output) && StackUtil.getStackSize(this.slots[theOutput]) <= this.slots[theOutput].getMaxStackSize()-StackUtil.getStackSize(output))){
if(this.slots[theOutput] == null || (this.slots[theOutput].isItemEqual(output) && this.slots[theOutput].stackSize <= this.slots[theOutput].getMaxStackSize()-output.stackSize)){ return true;
return true;
}
} }
} }
} }
return false; return false;
} }
public void finishBurning(int theInput, int theOutput){ public void finishBurning(int theInput, int theOutput){
ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots[theInput]); ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots[theInput]);
if(this.slots[theOutput] == null){ if(!StackUtil.isValid(this.slots[theOutput])){
this.slots[theOutput] = output.copy(); this.slots[theOutput] = output.copy();
} }
else if(this.slots[theOutput].getItem() == output.getItem()){ 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--; this.slots[theInput] = StackUtil.addStackSize(this.slots[theInput], -1);
if(this.slots[theInput].stackSize <= 0){
this.slots[theInput] = null;
}
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -15,6 +15,7 @@ import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; import de.ellpeck.actuallyadditions.mod.misc.SoundHandler;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.Util; import de.ellpeck.actuallyadditions.mod.util.Util;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; 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){ 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 outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots[theInput]);
ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots[theInput]); ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots[theInput]);
if(outputOne != null){ if(StackUtil.isValid(outputOne)){
if(outputOne.getItemDamage() == Util.WILDCARD){ if(outputOne.getItemDamage() == Util.WILDCARD){
outputOne.setItemDamage(0); outputOne.setItemDamage(0);
} }
if(outputTwo != null && outputTwo.getItemDamage() == Util.WILDCARD){ if(StackUtil.isValid(outputTwo) && outputTwo.getItemDamage() == Util.WILDCARD){
outputTwo.setItemDamage(0); 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; return true;
} }
} }
@ -208,38 +209,35 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements ICusto
public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){ public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){
ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots[theInput]); ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots[theInput]);
if(outputOne != null){ if(StackUtil.isValid(outputOne)){
if(outputOne.getItemDamage() == Util.WILDCARD){ if(outputOne.getItemDamage() == Util.WILDCARD){
outputOne.setItemDamage(0); outputOne.setItemDamage(0);
} }
if(this.slots[theFirstOutput] == null){ if(!StackUtil.isValid(this.slots[theFirstOutput])){
this.slots[theFirstOutput] = outputOne.copy(); this.slots[theFirstOutput] = outputOne.copy();
} }
else if(this.slots[theFirstOutput].getItem() == outputOne.getItem()){ 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]); ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots[theInput]);
if(outputTwo != null){ if(StackUtil.isValid(outputTwo)){
if(outputTwo.getItemDamage() == Util.WILDCARD){ if(outputTwo.getItemDamage() == Util.WILDCARD){
outputTwo.setItemDamage(0); outputTwo.setItemDamage(0);
} }
int rand = this.worldObj.rand.nextInt(100)+1; int rand = this.worldObj.rand.nextInt(100)+1;
if(rand <= CrusherRecipeRegistry.getOutputTwoChance(this.slots[theInput])){ if(rand <= CrusherRecipeRegistry.getOutputTwoChance(this.slots[theInput])){
if(this.slots[theSecondOutput] == null){ if(!StackUtil.isValid(this.slots[theSecondOutput])){
this.slots[theSecondOutput] = outputTwo.copy(); this.slots[theSecondOutput] = outputTwo.copy();
} }
else if(this.slots[theSecondOutput].getItem() == outputTwo.getItem()){ 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--; this.slots[theInput] = StackUtil.addStackSize(this.slots[theInput], -1);
if(this.slots[theInput].stackSize <= 0){
this.slots[theInput] = null;
}
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -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.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor; import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
@ -121,194 +122,6 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
return false; 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 * 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.isRedstonePowered){
if(!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)){ if(!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)){
if(this.sideToPull != -1 && this.placeToPull != null){ if(this.sideToPull != -1 && this.placeToPull != null){
this.pull(); this.newPulling();
} }
if(this.slots[0] != null && this.sideToPut != -1 && this.placeToPut != null){ if(StackUtil.isValid(this.slots[0]) && this.sideToPut != -1 && this.placeToPut != null){
this.put(); this.newPutting();
} }
} }
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.tile; package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -20,6 +21,8 @@ import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.wrapper.SidedInvWrapper; import net.minecraftforge.items.wrapper.SidedInvWrapper;
import java.util.Arrays;
public abstract class TileEntityInventoryBase extends TileEntityBase implements ISidedInventory{ public abstract class TileEntityInventoryBase extends TileEntityBase implements ISidedInventory{
private final SidedInvWrapper[] invWrappers = new SidedInvWrapper[6]; private final SidedInvWrapper[] invWrappers = new SidedInvWrapper[6];
@ -29,6 +32,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
super(name); super(name);
this.slots = new ItemStack[slots]; this.slots = new ItemStack[slots];
Arrays.fill(this.slots, StackUtil.getNull());
if(this.hasInvWrapperCapabilities()){ if(this.hasInvWrapperCapabilities()){
this.getInvWrappers(this.invWrappers); this.getInvWrappers(this.invWrappers);
@ -40,7 +44,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
NBTTagList tagList = new NBTTagList(); NBTTagList tagList = new NBTTagList();
for(ItemStack slot : slots){ for(ItemStack slot : slots){
NBTTagCompound tagCompound = new NBTTagCompound(); NBTTagCompound tagCompound = new NBTTagCompound();
if(slot != null){ if(StackUtil.isValid(slot)){
slot.writeToNBT(tagCompound); slot.writeToNBT(tagCompound);
} }
tagList.appendTag(tagCompound); tagList.appendTag(tagCompound);
@ -54,7 +58,7 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
NBTTagList tagList = compound.getTagList("Items", 10); NBTTagList tagList = compound.getTagList("Items", 10);
for(int i = 0; i < slots.length; i++){ for(int i = 0; i < slots.length; i++){
NBTTagCompound tagCompound = tagList.getCompoundTagAt(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()){ if(i < this.getSizeInventory()){
return this.slots[i]; return this.slots[i];
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack decrStackSize(int i, int j){ public ItemStack decrStackSize(int i, int j){
if(this.slots[i] != null){ if(StackUtil.isValid(this.slots[i])){
ItemStack stackAt; ItemStack stackAt;
if(this.slots[i].stackSize <= j){ if(StackUtil.getStackSize(this.slots[i]) <= j){
stackAt = this.slots[i]; stackAt = this.slots[i];
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
else{ else{
stackAt = this.slots[i].splitStack(j); stackAt = this.slots[i].splitStack(j);
if(this.slots[i].stackSize <= 0){ if(StackUtil.getStackSize(this.slots[i]) <= 0){
this.slots[i] = null; this.slots[i] = StackUtil.getNull();
} }
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack removeStackFromSlot(int index){ public ItemStack removeStackFromSlot(int index){
ItemStack stack = this.slots[index]; ItemStack stack = this.slots[index];
this.slots[index] = null; this.slots[index] = StackUtil.getNull();
return stack; return stack;
} }

View file

@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.api.laser.Network;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -59,7 +60,7 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
@Override @Override
public ItemStack extractItem(int slot, int amount, boolean simulate){ public ItemStack extractItem(int slot, int amount, boolean simulate){
ItemStack stackIn = TileEntityItemViewer.this.getStackInSlot(slot); ItemStack stackIn = TileEntityItemViewer.this.getStackInSlot(slot);
if(stackIn != null){ if(StackUtil.isValid(stackIn)){
if(TileEntityItemViewer.this.canExtractItem(slot, stackIn, direction)){ if(TileEntityItemViewer.this.canExtractItem(slot, stackIn, direction)){
SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot); SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
if(info != null){ if(info != null){
@ -150,8 +151,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
if(handler != null){ if(handler != null){
if(this.isWhitelisted(handler, stack, true)){ if(this.isWhitelisted(handler, stack, true)){
if(ItemStack.areItemsEqual(handler.handler.getStackInSlot(handler.switchedIndex), stack)){ if(ItemStack.areItemsEqual(handler.handler.getStackInSlot(handler.switchedIndex), stack)){
ItemStack gaveBack = handler.handler.extractItem(handler.switchedIndex, stack.stackSize, true); ItemStack gaveBack = handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stack), true);
return gaveBack != null; return StackUtil.isValid(gaveBack);
} }
} }
} }
@ -195,8 +196,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
if(handler != null){ if(handler != null){
ItemStack toInsert = stack.copy(); ItemStack toInsert = stack.copy();
ItemStack inSlot = handler.handler.getStackInSlot(handler.switchedIndex); ItemStack inSlot = handler.handler.getStackInSlot(handler.switchedIndex);
if(inSlot != null){ if(StackUtil.isValid(inSlot)){
toInsert.stackSize -= inSlot.stackSize; toInsert = StackUtil.addStackSize(toInsert, -StackUtil.getStackSize(inSlot));
} }
handler.handler.insertItem(handler.switchedIndex, toInsert, false); handler.handler.insertItem(handler.switchedIndex, toInsert, false);
} }
@ -243,8 +244,8 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index); SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index);
if(handler != null){ if(handler != null){
ItemStack stackInSlot = handler.handler.getStackInSlot(handler.switchedIndex); ItemStack stackInSlot = handler.handler.getStackInSlot(handler.switchedIndex);
if(stackInSlot != null){ if(StackUtil.isValid(stackInSlot)){
handler.handler.extractItem(handler.switchedIndex, stackInSlot.stackSize, false); handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stackInSlot), false);
} }
return stackInSlot; return stackInSlot;
} }

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
import de.ellpeck.actuallyadditions.mod.items.ItemDrill; import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
import de.ellpeck.actuallyadditions.mod.items.ItemFilter; import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -22,6 +23,8 @@ import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextComponentTranslation;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import java.util.Arrays;
public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{
public final IInventory filterInventory; public final IInventory filterInventory;
@ -32,6 +35,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
public TileEntityLaserRelayItemWhitelist(){ public TileEntityLaserRelayItemWhitelist(){
super("laserRelayItemWhitelist"); super("laserRelayItemWhitelist");
Arrays.fill(this.slots, StackUtil.getNull());
this.filterInventory = new IInventory(){ this.filterInventory = new IInventory(){
private TileEntityLaserRelayItemWhitelist tile; private TileEntityLaserRelayItemWhitelist tile;
@ -91,6 +95,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
public void clear(){ public void clear(){
int length = this.tile.slots.length; int length = this.tile.slots.length;
this.tile.slots = new ItemStack[length]; this.tile.slots = new ItemStack[length];
Arrays.fill(this.tile.slots, StackUtil.getNull());
} }
@Override @Override
@ -109,35 +114,35 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
if(i < this.getSizeInventory()){ if(i < this.getSizeInventory()){
return this.tile.slots[i]; return this.tile.slots[i];
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack decrStackSize(int i, int j){ public ItemStack decrStackSize(int i, int j){
if(this.tile.slots[i] != null){ if(StackUtil.isValid(this.tile.slots[i])){
ItemStack stackAt; ItemStack stackAt;
if(this.tile.slots[i].stackSize <= j){ if(StackUtil.getStackSize(this.tile.slots[i]) <= j){
stackAt = this.tile.slots[i]; stackAt = this.tile.slots[i];
this.tile.slots[i] = null; this.tile.slots[i] = StackUtil.getNull();
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
else{ else{
stackAt = this.tile.slots[i].splitStack(j); stackAt = this.tile.slots[i].splitStack(j);
if(this.tile.slots[i].stackSize <= 0){ if(StackUtil.getStackSize(this.tile.slots[i]) <= 0){
this.tile.slots[i] = null; this.tile.slots[i] = StackUtil.getNull();
} }
this.markDirty(); this.markDirty();
return stackAt; return stackAt;
} }
} }
return null; return StackUtil.getNull();
} }
@Override @Override
public ItemStack removeStackFromSlot(int index){ public ItemStack removeStackFromSlot(int index){
ItemStack stack = this.tile.slots[index]; ItemStack stack = this.tile.slots[index];
this.tile.slots[index] = null; this.tile.slots[index] = StackUtil.getNull();
return stack; return stack;
} }
@ -205,13 +210,13 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
for(IItemHandler handler : this.handlersAround.values()){ for(IItemHandler handler : this.handlersAround.values()){
for(int i = 0; i < handler.getSlots(); i++){ for(int i = 0; i < handler.getSlots(); i++){
ItemStack stack = handler.getStackInSlot(i); ItemStack stack = handler.getStackInSlot(i);
if(stack != null){ if(StackUtil.isValid(stack)){
ItemStack copy = stack.copy(); 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)){ 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++){ 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){ if(this.slots[k].getItem() instanceof ItemFilter){
ItemStack[] filterSlots = new ItemStack[ContainerFilter.SLOT_AMOUNT]; ItemStack[] filterSlots = new ItemStack[ContainerFilter.SLOT_AMOUNT];
ItemDrill.loadSlotsFromNBT(filterSlots, this.slots[k]); ItemDrill.loadSlotsFromNBT(filterSlots, this.slots[k]);
@ -219,7 +224,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
boolean did = false; boolean did = false;
if(filterSlots != null && filterSlots.length > 0){ if(filterSlots != null && filterSlots.length > 0){
for(int j = 0; j < filterSlots.length; j++){ for(int j = 0; j < filterSlots.length; j++){
if(filterSlots[j] == null || filterSlots[j].stackSize <= 0){ if(!StackUtil.isValid(filterSlots[j])){
filterSlots[j] = copy; filterSlots[j] = copy;
did = true; did = true;
break; break;

View file

@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.api.tile.IPhantomTile;
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler; import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -148,8 +149,8 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
else{ else{
int theSlot = WorldUtil.findFirstFilledSlot(this.slots); int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(WorldUtil.getDirectionBySidesInOrder(this.side), this.worldObj, this.boundPosition, this.slots[theSlot])); 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){ if(!StackUtil.isValid(this.slots[theSlot])){
this.slots[theSlot] = null; this.slots[theSlot] = StackUtil.getNull();
} }
} }
} }

View file

@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems;
import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience; import de.ellpeck.actuallyadditions.mod.items.ItemSolidifiedExperience;
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor; import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
import de.ellpeck.actuallyadditions.mod.util.ModUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -122,15 +123,15 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
super.updateEntity(); super.updateEntity();
if(!this.worldObj.isRemote){ if(!this.worldObj.isRemote){
if(this.amount > 0){ if(this.amount > 0){
if(this.slots[0] == null){ if(!StackUtil.isValid(this.slots[0])){
int toSet = this.amount > 64 ? 64 : this.amount; int toSet = this.amount > 64 ? 64 : this.amount;
this.slots[0] = new ItemStack(InitItems.itemSolidifiedExperience, toSet); this.slots[0] = new ItemStack(InitItems.itemSolidifiedExperience, toSet);
this.amount -= toSet; this.amount -= toSet;
} }
else if(this.slots[0].stackSize < 64){ else if(StackUtil.getStackSize(this.slots[0]) < 64){
int needed = 64-this.slots[0].stackSize; int needed = 64-StackUtil.getStackSize(this.slots[0]);
int toAdd = this.amount > needed ? needed : this.amount; 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; 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){ if(StackUtil.isValid(this.slots[1]) && this.slots[1].getItem() instanceof ItemSolidifiedExperience){
this.amount += this.slots[1].stackSize; this.amount += StackUtil.getStackSize(this.slots[1]);
this.slots[1] = null; this.slots[1] = null;
} }

View file

@ -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);
}
}

View file

@ -63,7 +63,7 @@ public final class WorldUtil{
if(theoreticalExtract != null){ if(theoreticalExtract != null){
ItemStack remaining = insertCap.insertItem(slotInsert, theoreticalExtract, false); ItemStack remaining = insertCap.insertItem(slotInsert, theoreticalExtract, false);
if(!ItemStack.areItemStacksEqual(remaining, theoreticalExtract)){ 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); extractCap.extractItem(slotExtract, toExtract, false);
return true; return true;
} }
@ -141,7 +141,7 @@ public final class WorldUtil{
} }
public static ItemStack useItemAtSide(EnumFacing side, World world, BlockPos pos, ItemStack stack){ 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); BlockPos offsetPos = pos.offset(side);
IBlockState state = world.getBlockState(offsetPos); IBlockState state = world.getBlockState(offsetPos);
Block block = state.getBlock(); Block block = state.getBlock();
@ -173,16 +173,14 @@ public final class WorldUtil{
//Redstone //Redstone
if(replaceable && stack.getItem() == Items.REDSTONE){ if(replaceable && stack.getItem() == Items.REDSTONE){
world.setBlockState(offsetPos, Blocks.REDSTONE_WIRE.getDefaultState(), 2); world.setBlockState(offsetPos, Blocks.REDSTONE_WIRE.getDefaultState(), 2);
stack.stackSize--; return StackUtil.addStackSize(stack, -1);
return stack;
} }
//Plants //Plants
if(replaceable && stack.getItem() instanceof IPlantable){ if(replaceable && stack.getItem() instanceof IPlantable){
if(((IPlantable)stack.getItem()).getPlant(world, offsetPos).getBlock().canPlaceBlockAt(world, offsetPos)){ if(((IPlantable)stack.getItem()).getPlant(world, offsetPos).getBlock().canPlaceBlockAt(world, offsetPos)){
if(world.setBlockState(offsetPos, ((IPlantable)stack.getItem()).getPlant(world, offsetPos), 2)){ if(world.setBlockState(offsetPos, ((IPlantable)stack.getItem()).getPlant(world, offsetPos), 2)){
stack.stackSize--; return StackUtil.addStackSize(stack, -1);
return stack;
} }
} }
} }
@ -278,12 +276,12 @@ public final class WorldUtil{
for(int i = start; i < end; i++){ for(int i = start; i < end; i++){
if(shouldAlwaysWork || ((!(inventory instanceof ISidedInventory) || ((ISidedInventory)inventory).canInsertItem(i, stackToPutIn, side)) && inventory.isItemValidForSlot(i, stackToPutIn))){ if(shouldAlwaysWork || ((!(inventory instanceof ISidedInventory) || ((ISidedInventory)inventory).canInsertItem(i, stackToPutIn, side)) && inventory.isItemValidForSlot(i, stackToPutIn))){
ItemStack stackInQuestion = inventory.getStackInSlot(i); ItemStack stackInQuestion = inventory.getStackInSlot(i);
if(stackToPutIn != null && (stackInQuestion == null || (ItemUtil.canBeStacked(stackInQuestion, stackToPutIn) && stackInQuestion.getMaxStackSize() >= stackInQuestion.stackSize+stackToPutIn.stackSize))){ if(StackUtil.isValid(stackToPutIn) && (!StackUtil.isValid(stackInQuestion) || (ItemUtil.canBeStacked(stackInQuestion, stackToPutIn) && stackInQuestion.getMaxStackSize() >= StackUtil.getStackSize(stackInQuestion)+StackUtil.getStackSize(stackToPutIn)))){
if(stackInQuestion == null){ if(!StackUtil.isValid(stackInQuestion)){
inventory.setInventorySlotContents(i, stackToPutIn.copy()); inventory.setInventorySlotContents(i, stackToPutIn.copy());
} }
else{ else{
stackInQuestion.stackSize += stackToPutIn.stackSize; inventory.setInventorySlotContents(i, StackUtil.addStackSize(stackInQuestion, StackUtil.getStackSize(stackToPutIn)));
} }
working++; working++;
@ -402,7 +400,7 @@ public final class WorldUtil{
block.onBlockDestroyedByPlayer(world, pos, state); 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); ForgeEventFactory.onPlayerDestroyItem(player, stack, EnumHand.MAIN_HAND);
player.setHeldItem(EnumHand.MAIN_HAND, null); player.setHeldItem(EnumHand.MAIN_HAND, null);
} }