Hopefully fixed the transmitter network halt issue. Provide feedback!
This commit is contained in:
parent
dcf7d7772a
commit
0819c0ad5f
2 changed files with 34 additions and 9 deletions
|
@ -173,7 +173,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
{
|
||||
byte connections = 0x00;
|
||||
|
||||
if(redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z()))
|
||||
if(redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile())))
|
||||
{
|
||||
return connections;
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
{
|
||||
byte connections = 0x00;
|
||||
|
||||
if(redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z()))
|
||||
if(redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile())))
|
||||
{
|
||||
return connections;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
@Override
|
||||
public boolean canConnect(ForgeDirection side)
|
||||
{
|
||||
if(redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z()))
|
||||
if(redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -463,7 +463,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
|
||||
public void redstoneRefresh()
|
||||
{
|
||||
boolean nowPowered = redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z());
|
||||
boolean nowPowered = redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile()));
|
||||
|
||||
if(nowPowered != redstonePowered)
|
||||
{
|
||||
|
@ -479,7 +479,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
|
||||
if(possibleTransmitters != currentTransmitterConnections)
|
||||
{
|
||||
boolean nowPowered = redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z());
|
||||
boolean nowPowered = redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile()));
|
||||
|
||||
if(nowPowered != redstonePowered)
|
||||
{
|
||||
|
@ -489,8 +489,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
{
|
||||
onRedstoneSplit();
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
onRedstoneJoin();
|
||||
}
|
||||
|
||||
|
@ -520,7 +519,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
public void onAdded()
|
||||
{
|
||||
super.onAdded();
|
||||
redstonePowered = redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z());
|
||||
|
||||
redstonePowered = redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile()));
|
||||
refreshConnections();
|
||||
}
|
||||
|
||||
|
@ -528,7 +528,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
public void onChunkLoad()
|
||||
{
|
||||
super.onChunkLoad();
|
||||
redstonePowered = redstoneReactive && world().isBlockIndirectlyGettingPowered(x(), y(), z());
|
||||
|
||||
redstonePowered = redstoneReactive && MekanismUtils.isGettingPowered(world(), Coord4D.get(tile()));
|
||||
refreshConnections();
|
||||
}
|
||||
|
||||
|
|
|
@ -669,6 +669,30 @@ public final class MekanismUtils
|
|||
{
|
||||
return def * Math.pow(Mekanism.maxUpgradeMultiplier, mgmt.getEnergyMultiplier(itemStack)/8.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* A better "isBlockIndirectlyGettingPowered()" that doesn't load chunks
|
||||
* @param world - the world to perform the check in
|
||||
* @param coord - the coordinate of the block performing the check
|
||||
* @return if the block is indirectly getting powered by LOADED chunks
|
||||
*/
|
||||
public static boolean isGettingPowered(World world, Coord4D coord)
|
||||
{
|
||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
Coord4D sideCoord = coord.getFromSide(side);
|
||||
|
||||
if(sideCoord.exists(world))
|
||||
{
|
||||
if(world.getIndirectPowerLevelTo(sideCoord.xCoord, sideCoord.yCoord, sideCoord.zCoord, side.ordinal()) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Places a fake bounding block at the defined location.
|
||||
|
|
Loading…
Reference in a new issue