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

@ -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)

View file

@ -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;
}

View file

@ -238,6 +238,17 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> 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()
{