From c5269cc1abf64c939c02e0175e5364f33d439066 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Wed, 18 Dec 2013 16:09:30 -0500 Subject: [PATCH] Fix a few crashes, begin actual side-based implementation --- .../client/render/RenderPartTransmitter.java | 4 +-- .../common/multipart/PartSidedPipe.java | 25 ++++++++++++++++--- .../common/multipart/PartTransmitter.java | 11 ++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/common/mekanism/client/render/RenderPartTransmitter.java b/common/mekanism/client/render/RenderPartTransmitter.java index 9eb36b9b6..68b5d0032 100644 --- a/common/mekanism/client/render/RenderPartTransmitter.java +++ b/common/mekanism/client/render/RenderPartTransmitter.java @@ -338,7 +338,7 @@ public class RenderPartTransmitter implements IIconRegister for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - renderGasSide(side, tube); + renderGasSide(side, tube); } CCRenderState.draw(); @@ -375,7 +375,7 @@ public class RenderPartTransmitter implements IIconRegister public void renderGasSide(ForgeDirection side, PartPressurizedTube tube) { boolean connected = PartTransmitter.connectionMapContainsSide(tube.getAllCurrentConnections(), side); - renderTransparency(tube.getTransmitterNetwork().gasStored.getGas().getIcon(), tube.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, tube.currentScale)); + renderTransparency(tube.getTransmitterNetwork().refGas.getIcon(), tube.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, tube.currentScale)); } public void renderPart(Icon icon, CCModel cc, double x, double y, double z) diff --git a/common/mekanism/common/multipart/PartSidedPipe.java b/common/mekanism/common/multipart/PartSidedPipe.java index d579f6f1c..7842469c9 100644 --- a/common/mekanism/common/multipart/PartSidedPipe.java +++ b/common/mekanism/common/multipart/PartSidedPipe.java @@ -173,7 +173,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - if(canConnectMutual(side)) + if(connectionTypes[side.ordinal()] != ConnectionType.NONE && canConnectMutual(side)) { TileEntity tileEntity = Object3D.get(tile()).getFromSide(side).getTileEntity(world()); @@ -388,9 +388,13 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, public ConnectionType getConnectionType(ForgeDirection side) { if(!connectionMapContainsSide(getAllCurrentConnections(), side)) + { return ConnectionType.NONE; - if(connectionMapContainsSide(currentTransmitterConnections, side)) + } + else if(connectionMapContainsSide(currentTransmitterConnections, side)) + { return ConnectionType.NORMAL; + } return connectionTypes[side.ordinal()]; } @@ -425,12 +429,13 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, { return RenderPartTransmitter.large_models.get(name); } - else - { + else { return RenderPartTransmitter.small_models.get(name); } } } + + public abstract void onModeChange(ForgeDirection side); @Override public boolean onSneakRightClick(EntityPlayer player, int side) @@ -445,6 +450,18 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, { connectionTypes[hit.subHit] = ConnectionType.nextType[connectionTypes[hit.subHit].ordinal()]; sendDesc = true; + + onModeChange(ForgeDirection.getOrientation(side)); + + return true; + } + else if(hit.subHit == 6 && connectionTypes[side] == ConnectionType.NONE) + { + connectionTypes[side] = ConnectionType.NORMAL; + sendDesc = true; + + onModeChange(ForgeDirection.getOrientation(side)); + return true; } diff --git a/common/mekanism/common/multipart/PartTransmitter.java b/common/mekanism/common/multipart/PartTransmitter.java index 4ca286b2e..c4c497f12 100644 --- a/common/mekanism/common/multipart/PartTransmitter.java +++ b/common/mekanism/common/multipart/PartTransmitter.java @@ -238,6 +238,17 @@ public abstract class PartTransmitter> extends Pa super.preRemove(); } + @Override + public void onModeChange(ForgeDirection side) + { + refreshTransmitterNetwork(); + + if(!world().isRemote) + { + PacketHandler.sendPacket(Transmission.CLIENTS_DIM, new PacketTransmitterUpdate().setParams(PacketType.UPDATE, tile()), world().provider.dimensionId); + } + } + @Override public void onAdded() {