Fix a few crashes, begin actual side-based implementation

This commit is contained in:
Aidan Brady 2013-12-18 16:09:30 -05:00
parent 4d6a2a31b1
commit c5269cc1ab
3 changed files with 34 additions and 6 deletions

View file

@ -375,7 +375,7 @@ public class RenderPartTransmitter implements IIconRegister
public void renderGasSide(ForgeDirection side, PartPressurizedTube tube) public void renderGasSide(ForgeDirection side, PartPressurizedTube tube)
{ {
boolean connected = PartTransmitter.connectionMapContainsSide(tube.getAllCurrentConnections(), side); 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) public void renderPart(Icon icon, CCModel cc, double x, double y, double z)

View file

@ -173,7 +173,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) 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()); 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) public ConnectionType getConnectionType(ForgeDirection side)
{ {
if(!connectionMapContainsSide(getAllCurrentConnections(), side)) if(!connectionMapContainsSide(getAllCurrentConnections(), side))
{
return ConnectionType.NONE; return ConnectionType.NONE;
if(connectionMapContainsSide(currentTransmitterConnections, side)) }
else if(connectionMapContainsSide(currentTransmitterConnections, side))
{
return ConnectionType.NORMAL; return ConnectionType.NORMAL;
}
return connectionTypes[side.ordinal()]; return connectionTypes[side.ordinal()];
} }
@ -425,13 +429,14 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
{ {
return RenderPartTransmitter.large_models.get(name); return RenderPartTransmitter.large_models.get(name);
} }
else else {
{
return RenderPartTransmitter.small_models.get(name); return RenderPartTransmitter.small_models.get(name);
} }
} }
} }
public abstract void onModeChange(ForgeDirection side);
@Override @Override
public boolean onSneakRightClick(EntityPlayer player, int side) 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()]; connectionTypes[hit.subHit] = ConnectionType.nextType[connectionTypes[hit.subHit].ordinal()];
sendDesc = true; 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; return true;
} }

View file

@ -238,6 +238,17 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
super.preRemove(); 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 @Override
public void onAdded() public void onAdded()
{ {