diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockMarginallyMaximisedChest.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockMarginallyMaximisedChest.java index 7781f0b62..610630a38 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockMarginallyMaximisedChest.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockMarginallyMaximisedChest.java @@ -1,18 +1,16 @@ package com.fouristhenumber.utilitiesinexcess.common.blocks; -import java.util.Random; +import static com.fouristhenumber.utilitiesinexcess.utils.UIEUtils.dropItemsFromIInventory; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; @@ -26,8 +24,6 @@ public class BlockMarginallyMaximisedChest extends BlockContainer { - private final Random random = new Random(); - public BlockMarginallyMaximisedChest() { super(Material.wood); setBlockName("marginally_maximised_chest"); @@ -78,47 +74,11 @@ public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer public void breakBlock(World worldIn, int x, int y, int z, Block blockBroken, int meta) { TileEntity te = worldIn.getTileEntity(x, y, z); if (te instanceof IInventory inv) { - dropContent(0, inv, worldIn, te.xCoord, te.yCoord, te.zCoord); + dropItemsFromIInventory(0, inv, worldIn, te.xCoord, te.yCoord, te.zCoord); } super.breakBlock(worldIn, x, y, z, blockBroken, meta); } - public void dropContent(int newSize, IInventory chest, World world, int x, int y, int z) { - for (int l = newSize; l < chest.getSizeInventory(); l++) { - ItemStack itemstack = chest.getStackInSlot(l); - if (itemstack == null) { - continue; - } - float f = random.nextFloat() * 0.8F + 0.1F; - float f1 = random.nextFloat() * 0.8F + 0.1F; - float f2 = random.nextFloat() * 0.8F + 0.1F; - while (itemstack.stackSize > 0) { - int i1 = random.nextInt(21) + 10; - if (i1 > itemstack.stackSize) { - i1 = itemstack.stackSize; - } - itemstack.stackSize -= i1; - EntityItem entityitem = new EntityItem( - world, - (float) x + f, - (float) y + (newSize > 0 ? 1 : 0) + f1, - (float) z + f2, - new ItemStack(itemstack.getItem(), i1, itemstack.getItemDamage())); - float f3 = 0.05F; - entityitem.motionX = (float) random.nextGaussian() * f3; - entityitem.motionY = (float) random.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) random.nextGaussian() * f3; - if (itemstack.hasTagCompound()) { - entityitem.getEntityItem() - .setTagCompound( - (NBTTagCompound) itemstack.getTagCompound() - .copy()); - } - world.spawnEntityInWorld(entityitem); - } - } - } - @Override public boolean hasComparatorInputOverride() { return true; diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockTrashCanFluid.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockTrashCanFluid.java index 416990b4c..155a3a2f3 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockTrashCanFluid.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockTrashCanFluid.java @@ -1,8 +1,12 @@ package com.fouristhenumber.utilitiesinexcess.common.blocks; +import static com.fouristhenumber.utilitiesinexcess.utils.UIEUtils.dropItemsFromIInventory; + +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -47,6 +51,15 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return true; } + @Override + public void breakBlock(World worldIn, int x, int y, int z, Block blockBroken, int meta) { + TileEntity te = worldIn.getTileEntity(x, y, z); + if (te instanceof IInventory inv) { + dropItemsFromIInventory(0, inv, worldIn, te.xCoord, te.yCoord, te.zCoord); + } + super.breakBlock(worldIn, x, y, z, blockBroken, meta); + } + @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityTrashCanFluid(); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java index a2b9b6a54..6754023d5 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/generators/BlockBaseGenerator.java @@ -1,9 +1,13 @@ package com.fouristhenumber.utilitiesinexcess.common.blocks.generators; +import static com.fouristhenumber.utilitiesinexcess.utils.UIEUtils.dropItemsFromIInventory; + import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import com.cleanroommc.modularui.factory.GuiFactories; @@ -30,6 +34,15 @@ public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer return true; } + @Override + public void breakBlock(World worldIn, int x, int y, int z, Block blockBroken, int meta) { + TileEntity te = worldIn.getTileEntity(x, y, z); + if (te instanceof IInventory inv) { + dropItemsFromIInventory(0, inv, worldIn, te.xCoord, te.yCoord, te.zCoord); + } + super.breakBlock(worldIn, x, y, z, blockBroken, meta); + } + @Override public void onNeighborBlockChange(World worldIn, int x, int y, int z, Block neighbor) { if (worldIn.getTileEntity(x, y, z) instanceof TileEntityBaseGenerator generator) { diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java index c61554447..0e55926f9 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/utils/UIEUtils.java @@ -4,10 +4,13 @@ import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; import com.fouristhenumber.utilitiesinexcess.compat.Mods; @@ -84,6 +87,42 @@ public static NBTTagCompound getUIETag(EntityPlayer player) { return uieTag; } + public static void dropItemsFromIInventory(int newSize, IInventory chest, World world, int x, int y, int z) { + for (int l = newSize; l < chest.getSizeInventory(); l++) { + ItemStack itemstack = chest.getStackInSlot(l); + if (itemstack == null) { + continue; + } + float f = uieRandom.nextFloat() * 0.8F + 0.1F; + float f1 = uieRandom.nextFloat() * 0.8F + 0.1F; + float f2 = uieRandom.nextFloat() * 0.8F + 0.1F; + while (itemstack.stackSize > 0) { + int i1 = uieRandom.nextInt(21) + 10; + if (i1 > itemstack.stackSize) { + i1 = itemstack.stackSize; + } + itemstack.stackSize -= i1; + EntityItem entityitem = new EntityItem( + world, + (float) x + f, + (float) y + (newSize > 0 ? 1 : 0) + f1, + (float) z + f2, + new ItemStack(itemstack.getItem(), i1, itemstack.getItemDamage())); + float f3 = 0.05F; + entityitem.motionX = (float) uieRandom.nextGaussian() * f3; + entityitem.motionY = (float) uieRandom.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) uieRandom.nextGaussian() * f3; + if (itemstack.hasTagCompound()) { + entityitem.getEntityItem() + .setTagCompound( + (NBTTagCompound) itemstack.getTagCompound() + .copy()); + } + world.spawnEntityInWorld(entityitem); + } + } + } + public static void hideInNei(Block block) { hideInNei(Item.getItemFromBlock(block)); }