From 5262a378261ab219df304ea032735e6826251a8c Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 13:18:12 -0400 Subject: [PATCH] Work on automatic orientation setting --- .../contractor/BlockEMContractor.java | 32 ++++++++++++++++--- .../contractor/TileEntityEMContractor.java | 22 ++++++++++++- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index 7b709f90..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 @@ -53,9 +67,19 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider @Override public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { - for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + 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()); + } + } } } diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index 560193b9..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; @@ -193,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(); } @@ -206,6 +221,11 @@ public class TileEntityEMContractor extends TileEntity return facing; } + public void setFacing(ForgeDirection side) + { + facing = side; + } + @Override public void readFromNBT(NBTTagCompound nbtTags) {