diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index 7a380d38..ee870684 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -3,6 +3,7 @@ package resonantinduction.contractor; import net.minecraft.block.ITileEntityProvider; 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 net.minecraftforge.common.ForgeDirection; @@ -30,8 +31,21 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider @Override public void onBlockAdded(World world, int x, int y, int z) { - TileEntityEMContractor tileEntity = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); - tileEntity.updateBounds(); + TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); + tileContractor.updateBounds(); + + if(!tileContractor.isLatched()) + { + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tileEntity = world.getBlockTileEntity(x+side.offsetX, y+side.offsetY, z+side.offsetZ); + + if(tileEntity instanceof IInventory) + { + tileContractor.setFacing(side.getOpposite()); + } + } + } } @Override @@ -49,6 +63,25 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider return true; } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) + { + TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); + + if(!tileContractor.isLatched()) + { + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tileEntity = world.getBlockTileEntity(x+side.offsetX, y+side.offsetY, z+side.offsetZ); + + if(tileEntity instanceof IInventory) + { + tileContractor.setFacing(side.getOpposite()); + } + } + } + } @Override public TileEntity createNewTileEntity(World world) diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index 394a2537..9fad87d3 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -4,6 +4,7 @@ import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; +import net.minecraft.inventory.IInventory; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -17,6 +18,8 @@ public class TileEntityEMContractor extends TileEntity private ForgeDirection facing = ForgeDirection.UP; + public int pushDelay; + public AxisAlignedBB operationBounds; /** @@ -27,6 +30,13 @@ public class TileEntityEMContractor extends TileEntity @Override public void updateEntity() { + pushDelay = Math.max(0, pushDelay--); + + if(!suck && pushDelay == 0) + { + + } + if(operationBounds != null) { List list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds); @@ -184,10 +194,24 @@ public class TileEntityEMContractor extends TileEntity } } + public boolean isLatched() + { + ForgeDirection side = facing.getOpposite(); + + TileEntity tile = worldObj.getBlockTileEntity(xCoord+facing.offsetX, yCoord+facing.offsetY, zCoord+facing.offsetZ); + + if(tile instanceof IInventory) + { + return true; + } + + return false; + } + public void incrementFacing() { int newOrdinal = facing.ordinal() < 5 ? facing.ordinal()+1 : 0; - facing = ForgeDirection.getOrientation(newOrdinal); + setFacing(ForgeDirection.getOrientation(newOrdinal)); updateBounds(); } @@ -197,6 +221,11 @@ public class TileEntityEMContractor extends TileEntity return facing; } + public void setFacing(ForgeDirection side) + { + facing = side; + } + @Override public void readFromNBT(NBTTagCompound nbtTags) {