Might fix the NPE in FluidNetwork that @NitroxydeX was experiencing
This commit is contained in:
parent
468abefe17
commit
5b558065fc
1 changed files with 42 additions and 47 deletions
|
@ -63,27 +63,10 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
{
|
||||
worldObj = transmitter.world();
|
||||
}
|
||||
|
||||
Coord4D coord = transmitter.coord();
|
||||
|
||||
|
||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
A acceptor = transmitter.getAcceptor(side);
|
||||
|
||||
if(acceptor != null)
|
||||
{
|
||||
Coord4D acceptorCoord = coord.getFromSide(side);
|
||||
possibleAcceptors.put(acceptorCoord, acceptor);
|
||||
EnumSet<ForgeDirection> directions = acceptorDirections.get(acceptorCoord);
|
||||
|
||||
if(directions != null)
|
||||
{
|
||||
directions.add(side.getOpposite());
|
||||
}
|
||||
else {
|
||||
acceptorDirections.put(acceptorCoord, EnumSet.of(side.getOpposite()));
|
||||
}
|
||||
}
|
||||
updateTransmitterOnSide(transmitter, side);
|
||||
}
|
||||
|
||||
transmitter.setTransmitterNetwork((N)this);
|
||||
|
@ -107,34 +90,7 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
|
||||
for(ForgeDirection side : directionsChanged)
|
||||
{
|
||||
A acceptor = transmitter.getAcceptor(side);
|
||||
Coord4D acceptorCoord = transmitter.coord().getFromSide(side);
|
||||
EnumSet<ForgeDirection> directions = acceptorDirections.get(acceptorCoord);
|
||||
|
||||
if(acceptor != null)
|
||||
{
|
||||
possibleAcceptors.put(acceptorCoord, acceptor);
|
||||
|
||||
if(directions != null)
|
||||
{
|
||||
directions.add(side.getOpposite());
|
||||
}
|
||||
else {
|
||||
acceptorDirections.put(acceptorCoord, EnumSet.of(side.getOpposite()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(directions != null)
|
||||
{
|
||||
directions.remove(side.getOpposite());
|
||||
|
||||
if(directions.isEmpty())
|
||||
{
|
||||
possibleAcceptors.remove(acceptorCoord);
|
||||
acceptorDirections.remove(acceptorCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
updateTransmitterOnSide(transmitter, side);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,6 +98,45 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
|
|||
}
|
||||
}
|
||||
|
||||
public void updateTransmitterOnSide(IGridTransmitter<A, N> transmitter, ForgeDirection side)
|
||||
{
|
||||
A acceptor = transmitter.getAcceptor(side);
|
||||
Coord4D acceptorCoord = transmitter.coord().getFromSide(side);
|
||||
EnumSet<ForgeDirection> directions = acceptorDirections.get(acceptorCoord);
|
||||
|
||||
if(acceptor != null)
|
||||
{
|
||||
possibleAcceptors.put(acceptorCoord, acceptor);
|
||||
|
||||
if(directions != null)
|
||||
{
|
||||
directions.add(side.getOpposite());
|
||||
}
|
||||
else {
|
||||
acceptorDirections.put(acceptorCoord, EnumSet.of(side.getOpposite()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(directions != null)
|
||||
{
|
||||
directions.remove(side.getOpposite());
|
||||
|
||||
if(directions.isEmpty())
|
||||
{
|
||||
possibleAcceptors.remove(acceptorCoord);
|
||||
acceptorDirections.remove(acceptorCoord);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
possibleAcceptors.remove(acceptorCoord);
|
||||
acceptorDirections.remove(acceptorCoord);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public abstract void absorbBuffer(IGridTransmitter<A, N> transmitter);
|
||||
|
||||
public abstract void clampBuffer();
|
||||
|
|
Loading…
Add table
Reference in a new issue