From 6c809e15551f069faaad9ac4a5a934653fd30cff Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 13:41:37 -0400 Subject: [PATCH 1/5] Custom ItemBlock for Contractor --- src/resonantinduction/ResonantInduction.java | 3 +- .../contractor/BlockEMContractor.java | 35 +++++++++++++++++++ .../contractor/ItemBlockContractor.java | 27 ++++++++++++++ .../render/RenderEMContractor.java | 9 ++--- 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 src/resonantinduction/contractor/ItemBlockContractor.java diff --git a/src/resonantinduction/ResonantInduction.java b/src/resonantinduction/ResonantInduction.java index fe79fb19..615f14fc 100644 --- a/src/resonantinduction/ResonantInduction.java +++ b/src/resonantinduction/ResonantInduction.java @@ -10,6 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.common.Configuration; import net.minecraftforge.oredict.ShapedOreRecipe; import resonantinduction.contractor.BlockEMContractor; +import resonantinduction.contractor.ItemBlockContractor; import resonantinduction.contractor.TileEntityEMContractor; import resonantinduction.entangler.ItemQuantumEntangler; import resonantinduction.tesla.BlockTesla; @@ -125,7 +126,7 @@ public class ResonantInduction GameRegistry.registerBlock(blockTesla, blockTesla.getUnlocalizedName()); blockEMContractor = new BlockEMContractor(getNextBlockID()); - GameRegistry.registerBlock(blockEMContractor, blockEMContractor.getUnlocalizedName()); + GameRegistry.registerBlock(blockEMContractor, ItemBlockContractor.class, blockEMContractor.getUnlocalizedName()); CONFIGURATION.save(); diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index ee870684..4cb4e000 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -2,9 +2,12 @@ package resonantinduction.contractor; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.ResonantInduction; @@ -28,6 +31,36 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider return BlockRenderingHandler.INSTANCE.getRenderId(); } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemstack) + { + TileEntityEMContractor tileEntity = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); + int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + int height = Math.round(entityliving.rotationPitch); + + int change = 1; + + if(height >= 65) + { + change = 1; + } + else if(height <= -65) + { + change = 0; + } + else { + switch(side) + { + case 0: change = 2; break; + case 1: change = 5; break; + case 2: change = 3; break; + case 3: change = 4; break; + } + } + + tileEntity.setFacing(ForgeDirection.getOrientation(change)); + } + @Override public void onBlockAdded(World world, int x, int y, int z) { @@ -43,6 +76,7 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider if(tileEntity instanceof IInventory) { tileContractor.setFacing(side.getOpposite()); + return; } } } @@ -78,6 +112,7 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider if(tileEntity instanceof IInventory) { tileContractor.setFacing(side.getOpposite()); + return; } } } diff --git a/src/resonantinduction/contractor/ItemBlockContractor.java b/src/resonantinduction/contractor/ItemBlockContractor.java new file mode 100644 index 00000000..9faa9043 --- /dev/null +++ b/src/resonantinduction/contractor/ItemBlockContractor.java @@ -0,0 +1,27 @@ +package resonantinduction.contractor; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemBlockContractor extends ItemBlock +{ + public ItemBlockContractor(int id) + { + super(id); + } + + @Override + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) + { + boolean place = super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata); + + if(place) + { + TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); + } + + return place; + } +} diff --git a/src/resonantinduction/render/RenderEMContractor.java b/src/resonantinduction/render/RenderEMContractor.java index 9d73e42c..2145d61b 100644 --- a/src/resonantinduction/render/RenderEMContractor.java +++ b/src/resonantinduction/render/RenderEMContractor.java @@ -22,6 +22,7 @@ public class RenderEMContractor extends TileEntitySpecialRenderer GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y + 1.5, z + 0.5); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); switch(((TileEntityEMContractor)t).getFacing()) { @@ -32,13 +33,13 @@ public class RenderEMContractor extends TileEntitySpecialRenderer case UP: break; case NORTH: - GL11.glTranslatef(-1, 1, 0); - GL11.glRotatef(-90, 0, 0, 1); - break; - case SOUTH: GL11.glTranslatef(1, 1, 0); GL11.glRotatef(90, 0, 0, 1); break; + case SOUTH: + GL11.glTranslatef(-1, 1, 0); + GL11.glRotatef(-90, 0, 0, 1); + break; case WEST: GL11.glTranslatef(0, 1, 1); GL11.glRotatef(-90, 1, 0, 0); From 8278bb7794ed2e776c3d4cc6968eda987983fdbf Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 13:56:29 -0400 Subject: [PATCH 2/5] Adjustments --- .../contractor/BlockEMContractor.java | 31 ----- .../contractor/ItemBlockContractor.java | 2 + .../contractor/TileEntityEMContractor.java | 127 +++++++++--------- 3 files changed, 68 insertions(+), 92 deletions(-) diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index 4cb4e000..b2cf0fc3 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -31,41 +31,10 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider return BlockRenderingHandler.INSTANCE.getRenderId(); } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemstack) - { - TileEntityEMContractor tileEntity = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); - int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - int height = Math.round(entityliving.rotationPitch); - - int change = 1; - - if(height >= 65) - { - change = 1; - } - else if(height <= -65) - { - change = 0; - } - else { - switch(side) - { - case 0: change = 2; break; - case 1: change = 5; break; - case 2: change = 3; break; - case 3: change = 4; break; - } - } - - tileEntity.setFacing(ForgeDirection.getOrientation(change)); - } - @Override public void onBlockAdded(World world, int x, int y, int z) { TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); - tileContractor.updateBounds(); if(!tileContractor.isLatched()) { diff --git a/src/resonantinduction/contractor/ItemBlockContractor.java b/src/resonantinduction/contractor/ItemBlockContractor.java index 9faa9043..9323e35c 100644 --- a/src/resonantinduction/contractor/ItemBlockContractor.java +++ b/src/resonantinduction/contractor/ItemBlockContractor.java @@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; public class ItemBlockContractor extends ItemBlock { @@ -20,6 +21,7 @@ public class ItemBlockContractor extends ItemBlock if(place) { TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); + tileContractor.setFacing(ForgeDirection.getOrientation(side)); } return place; diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index 9fad87d3..a42ea490 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -30,6 +30,7 @@ public class TileEntityEMContractor extends TileEntity @Override public void updateEntity() { + System.out.println(facing + " " + worldObj.isRemote); pushDelay = Math.max(0, pushDelay--); if(!suck && pushDelay == 0) @@ -40,6 +41,11 @@ public class TileEntityEMContractor extends TileEntity if(operationBounds != null) { List list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds); + + if(!list.isEmpty()) + { + System.out.println("GOood"); + } for(Entity entity : list) { @@ -88,63 +94,6 @@ public class TileEntityEMContractor extends TileEntity entityItem.isAirBorne = true; break; case NORTH: - if(!worldObj.isRemote) - { - entityItem.setPosition(entityItem.posX, yCoord+0.5, zCoord+0.5); - } - - entityItem.motionY = 0; - entityItem.motionZ = 0; - - if(!suck) - { - entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); - } - else { - entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); - } - - entityItem.isAirBorne = true; - break; - case SOUTH: - if(!worldObj.isRemote) - { - entityItem.setPosition(entityItem.posX, yCoord+0.5, zCoord+0.5); - } - - entityItem.motionY = 0; - entityItem.motionZ = 0; - - if(!suck) - { - entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); - } - else { - entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); - } - - entityItem.isAirBorne = true; - break; - case WEST: - if(!worldObj.isRemote) - { - entityItem.setPosition(xCoord+0.5, yCoord+0.5, entityItem.posZ); - } - - entityItem.motionX = 0; - entityItem.motionY = 0; - - if(!suck) - { - entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); - } - else { - entityItem.motionZ = Math.max(-MAX_SPEED, entityItem.motionZ-ACCELERATION); - } - - entityItem.isAirBorne = true; - break; - case EAST: if(!worldObj.isRemote) { entityItem.setPosition(xCoord+0.5, yCoord+0.5, entityItem.posZ); @@ -161,6 +110,63 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); } + entityItem.isAirBorne = true; + break; + case SOUTH: + if(!worldObj.isRemote) + { + entityItem.setPosition(xCoord+0.5, yCoord+0.5, entityItem.posZ); + } + + entityItem.motionX = 0; + entityItem.motionY = 0; + + if(!suck) + { + entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); + } + else { + entityItem.motionZ = Math.max(-MAX_SPEED, entityItem.motionZ-ACCELERATION); + } + + entityItem.isAirBorne = true; + break; + case WEST: + if(!worldObj.isRemote) + { + entityItem.setPosition(entityItem.posX, yCoord+0.5, zCoord+0.5); + } + + entityItem.motionY = 0; + entityItem.motionZ = 0; + + if(!suck) + { + entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); + } + else { + entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); + } + + entityItem.isAirBorne = true; + break; + case EAST: + if(!worldObj.isRemote) + { + entityItem.setPosition(entityItem.posX, yCoord+0.5, zCoord+0.5); + } + + entityItem.motionY = 0; + entityItem.motionZ = 0; + + if(!suck) + { + entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); + } + else { + entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); + } + entityItem.isAirBorne = true; break; } @@ -180,7 +186,7 @@ public class TileEntityEMContractor extends TileEntity operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+1, Math.min(yCoord+MAX_REACH, 255), zCoord+1); break; case NORTH: - operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+MAX_REACH, yCoord+1, zCoord+1); + operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord-MAX_REACH, xCoord+1, yCoord+1, zCoord); break; case SOUTH: operationBounds = AxisAlignedBB.getBoundingBox(xCoord-MAX_REACH, yCoord, zCoord, xCoord, yCoord+1, zCoord+1); @@ -189,7 +195,7 @@ public class TileEntityEMContractor extends TileEntity operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+1, yCoord+1, zCoord+MAX_REACH); break; case EAST: - operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord-MAX_REACH, xCoord+1, yCoord+1, zCoord); + operationBounds = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+MAX_REACH, yCoord+1, zCoord+1); break; } } @@ -212,8 +218,6 @@ public class TileEntityEMContractor extends TileEntity { int newOrdinal = facing.ordinal() < 5 ? facing.ordinal()+1 : 0; setFacing(ForgeDirection.getOrientation(newOrdinal)); - - updateBounds(); } public ForgeDirection getFacing() @@ -224,6 +228,7 @@ public class TileEntityEMContractor extends TileEntity public void setFacing(ForgeDirection side) { facing = side; + updateBounds(); } @Override From ec9835aa534a3d1ff5a3ee9860ef03c09b84d0ae Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 14:14:28 -0400 Subject: [PATCH 3/5] Packets! --- src/resonantinduction/PacketHandler.java | 45 +++++++++++++++++- .../base/IPacketReceiver.java | 4 ++ .../contractor/TileEntityEMContractor.java | 46 ++++++++++++++++--- .../tesla/TileEntityTesla.java | 10 ++-- 4 files changed, 94 insertions(+), 11 deletions(-) diff --git a/src/resonantinduction/PacketHandler.java b/src/resonantinduction/PacketHandler.java index 3b022b19..ea103214 100644 --- a/src/resonantinduction/PacketHandler.java +++ b/src/resonantinduction/PacketHandler.java @@ -5,6 +5,7 @@ package resonantinduction; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; +import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.INetworkManager; @@ -52,6 +53,19 @@ public class PacketHandler implements IPacketHandler ((IPacketReceiver) tileEntity).handle(dataStream); } } + else if (packetType == PacketType.DATA_REQUEST.ordinal()) + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof IPacketReceiver) + { + sendTileEntityPacketToClients(tileEntity, ((IPacketReceiver) tileEntity).getNetworkedData(new ArrayList())); + } + } } catch (Exception e) { @@ -90,12 +104,40 @@ public class PacketHandler implements IPacketHandler { output.writeByte((Byte) data); } + else if (data instanceof Object[]) + { + encode((Object[])data, output); + } } } catch (Exception e) { } } + + public static void sendDataRequest(TileEntity tileEntity) + { + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + DataOutputStream data = new DataOutputStream(bytes); + + try + { + data.writeInt(PacketType.DATA_REQUEST.ordinal()); + data.writeInt(tileEntity.xCoord); + data.writeInt(tileEntity.yCoord); + data.writeInt(tileEntity.zCoord); + } + catch (Exception e) + { + } + + Packet250CustomPayload packet = new Packet250CustomPayload(); + packet.channel = ResonantInduction.CHANNEL; + packet.data = bytes.toByteArray(); + packet.length = packet.data.length; + + PacketDispatcher.sendPacketToServer(packet); + } public static void sendTileEntityPacketToServer(TileEntity tileEntity, Object... dataValues) { @@ -135,6 +177,7 @@ public class PacketHandler implements IPacketHandler public static enum PacketType { - TILE + TILE, + DATA_REQUEST } } diff --git a/src/resonantinduction/base/IPacketReceiver.java b/src/resonantinduction/base/IPacketReceiver.java index 12683075..781fbc0b 100644 --- a/src/resonantinduction/base/IPacketReceiver.java +++ b/src/resonantinduction/base/IPacketReceiver.java @@ -1,8 +1,12 @@ package resonantinduction.base; +import java.util.ArrayList; + import com.google.common.io.ByteArrayDataInput; public interface IPacketReceiver { public void handle(ByteArrayDataInput input); + + public ArrayList getNetworkedData(ArrayList data); } diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index a42ea490..cdd103ea 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -1,7 +1,13 @@ package resonantinduction.contractor; +import java.util.ArrayList; import java.util.List; +import com.google.common.io.ByteArrayDataInput; + +import resonantinduction.PacketHandler; +import resonantinduction.base.IPacketReceiver; + import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.IInventory; @@ -10,7 +16,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; -public class TileEntityEMContractor extends TileEntity +public class TileEntityEMContractor extends TileEntity implements IPacketReceiver { public static int MAX_REACH = 40; public static double MAX_SPEED = .1; @@ -30,7 +36,6 @@ public class TileEntityEMContractor extends TileEntity @Override public void updateEntity() { - System.out.println(facing + " " + worldObj.isRemote); pushDelay = Math.max(0, pushDelay--); if(!suck && pushDelay == 0) @@ -41,11 +46,6 @@ public class TileEntityEMContractor extends TileEntity if(operationBounds != null) { List list = worldObj.getEntitiesWithinAABB(Entity.class, operationBounds); - - if(!list.isEmpty()) - { - System.out.println("GOood"); - } for(Entity entity : list) { @@ -175,6 +175,17 @@ public class TileEntityEMContractor extends TileEntity } } + @Override + public void validate() + { + super.validate(); + + if(worldObj.isRemote) + { + PacketHandler.sendDataRequest(this); + } + } + public void updateBounds() { switch(facing) @@ -228,6 +239,12 @@ public class TileEntityEMContractor extends TileEntity public void setFacing(ForgeDirection side) { facing = side; + + if(!worldObj.isRemote) + { + PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList())); + } + updateBounds(); } @@ -248,4 +265,19 @@ public class TileEntityEMContractor extends TileEntity nbtTags.setInteger("facing", facing.ordinal()); nbtTags.setBoolean("suck", suck); } + + @Override + public void handle(ByteArrayDataInput input) + { + try { + facing = ForgeDirection.getOrientation(input.readInt()); + } catch(Exception e) {} + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + data.add(facing.ordinal()); + return data; + } } diff --git a/src/resonantinduction/tesla/TileEntityTesla.java b/src/resonantinduction/tesla/TileEntityTesla.java index c91040a6..65a68be9 100644 --- a/src/resonantinduction/tesla/TileEntityTesla.java +++ b/src/resonantinduction/tesla/TileEntityTesla.java @@ -3,18 +3,16 @@ */ package resonantinduction.tesla; +import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import net.minecraft.block.BlockFurnace; -import net.minecraft.entity.Entity; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; -import net.minecraft.util.AxisAlignedBB; import resonantinduction.ITesla; import resonantinduction.PacketHandler; import resonantinduction.ResonantInduction; @@ -179,6 +177,12 @@ public class TileEntityTesla extends TileEntityBase implements ITesla, IPacketRe { return PacketHandler.getTileEntityPacket(this, (byte) 1, this.getEnergyStored(), this.dyeID); } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + return null; + } @Override public void handle(ByteArrayDataInput input) From 4f74f6590747c49e1908bbfac8d538a40366f29a Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 14:28:39 -0400 Subject: [PATCH 4/5] Fixed automatic rotation --- src/resonantinduction/PacketHandler.java | 2 +- src/resonantinduction/contractor/BlockEMContractor.java | 2 +- src/resonantinduction/contractor/TileEntityEMContractor.java | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/resonantinduction/PacketHandler.java b/src/resonantinduction/PacketHandler.java index ea103214..b6acc911 100644 --- a/src/resonantinduction/PacketHandler.java +++ b/src/resonantinduction/PacketHandler.java @@ -63,7 +63,7 @@ public class PacketHandler implements IPacketHandler if (tileEntity instanceof IPacketReceiver) { - sendTileEntityPacketToClients(tileEntity, ((IPacketReceiver) tileEntity).getNetworkedData(new ArrayList())); + sendTileEntityPacketToClients(tileEntity, ((IPacketReceiver) tileEntity).getNetworkedData(new ArrayList()).toArray()); } } } diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index b2cf0fc3..0fb183d6 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -72,7 +72,7 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider { TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); - if(!tileContractor.isLatched()) + if(!world.isRemote && !tileContractor.isLatched()) { for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index cdd103ea..6a38e27f 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -271,6 +271,7 @@ public class TileEntityEMContractor extends TileEntity implements IPacketReceive { try { facing = ForgeDirection.getOrientation(input.readInt()); + worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); } catch(Exception e) {} } From 3209d1c6714efd27b2803fcf1bbbf7b1f1462029 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 3 Aug 2013 14:36:48 -0400 Subject: [PATCH 5/5] Fixed placement rotation! --- .../contractor/BlockEMContractor.java | 20 ------------------- .../contractor/ItemBlockContractor.java | 16 +++++++++++++++ .../contractor/TileEntityEMContractor.java | 2 +- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index 0fb183d6..dd4f9389 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -31,26 +31,6 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider return BlockRenderingHandler.INSTANCE.getRenderId(); } - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - 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()); - return; - } - } - } - } - @Override public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { diff --git a/src/resonantinduction/contractor/ItemBlockContractor.java b/src/resonantinduction/contractor/ItemBlockContractor.java index 9323e35c..9ca49d3e 100644 --- a/src/resonantinduction/contractor/ItemBlockContractor.java +++ b/src/resonantinduction/contractor/ItemBlockContractor.java @@ -1,8 +1,10 @@ package resonantinduction.contractor; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; @@ -22,6 +24,20 @@ public class ItemBlockContractor extends ItemBlock { TileEntityEMContractor tileContractor = (TileEntityEMContractor)world.getBlockTileEntity(x, y, z); tileContractor.setFacing(ForgeDirection.getOrientation(side)); + + if(!tileContractor.isLatched()) + { + for(ForgeDirection side1 : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tileEntity = world.getBlockTileEntity(x+side1.offsetX, y+side1.offsetY, z+side1.offsetZ); + + if(tileEntity instanceof IInventory) + { + tileContractor.setFacing(side1.getOpposite()); + break; + } + } + } } return place; diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index 6a38e27f..e2a8d7ee 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -242,7 +242,7 @@ public class TileEntityEMContractor extends TileEntity implements IPacketReceive if(!worldObj.isRemote) { - PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList())); + PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList()).toArray()); } updateBounds();