Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -26,8 +24,6 @@

public class BlockMarginallyMaximisedChest extends BlockContainer {

private final Random random = new Random();

public BlockMarginallyMaximisedChest() {
super(Material.wood);
setBlockName("marginally_maximised_chest");
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

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