Fixed redstone neighbor checks. Now works exactly as the Minecraft check does, simply without loading chunks.
This commit is contained in:
parent
d88f8a4606
commit
8344ed25f7
1 changed files with 30 additions and 16 deletions
|
@ -82,7 +82,6 @@ import net.minecraftforge.oredict.OreDictionary;
|
||||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||||
import buildcraft.api.tools.IToolWrench;
|
import buildcraft.api.tools.IToolWrench;
|
||||||
import cofh.api.item.IToolHammer;
|
import cofh.api.item.IToolHammer;
|
||||||
import cpw.mods.fml.common.ModAPIManager;
|
|
||||||
import cpw.mods.fml.common.ModContainer;
|
import cpw.mods.fml.common.ModContainer;
|
||||||
import cpw.mods.fml.common.registry.GameData;
|
import cpw.mods.fml.common.registry.GameData;
|
||||||
|
|
||||||
|
@ -658,24 +657,12 @@ public final class MekanismUtils
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A better "isBlockIndirectlyGettingPowered()" that doesn't load chunks.
|
* Better version of the World.isBlockIndirectlyGettingPowered() method that doesn't load chunks.
|
||||||
* @param world - the world to perform the check in
|
* @param world - the world to perform the check in
|
||||||
* @param coord - the coordinate of the block performing the check
|
* @param coord - the coordinate of the block performing the check
|
||||||
* @return if the block is indirectly getting powered by LOADED chunks
|
* @return if the block is indirectly getting powered by LOADED chunks
|
||||||
*/
|
*/
|
||||||
public static boolean isGettingPowered(World world, Coord4D coord)
|
public static boolean isGettingPowered(World world, Coord4D coord)
|
||||||
{
|
|
||||||
return isGettingPowered(world, coord, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extension of preceding isGettingPowered() method, used to define expansions of the check.
|
|
||||||
* @param world - the world to perform the check in
|
|
||||||
* @param coord - the coordinate of the block performing the check
|
|
||||||
* @param expand - whether or not the check should be recursively called on the surrounding coordinates
|
|
||||||
* @return if the block is indirectly getting powered by LOADED chunks
|
|
||||||
*/
|
|
||||||
public static boolean isGettingPowered(World world, Coord4D coord, boolean expand)
|
|
||||||
{
|
{
|
||||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||||
{
|
{
|
||||||
|
@ -683,11 +670,38 @@ public final class MekanismUtils
|
||||||
|
|
||||||
if(sideCoord.exists(world) && sideCoord.getFromSide(side).exists(world))
|
if(sideCoord.exists(world) && sideCoord.getFromSide(side).exists(world))
|
||||||
{
|
{
|
||||||
if(world.isBlockProvidingPowerTo(sideCoord.xCoord, sideCoord.yCoord, sideCoord.zCoord, side.getOpposite().ordinal()) > 0)
|
Block block = sideCoord.getBlock(world);
|
||||||
|
boolean weakPower = block.shouldCheckWeakPower(world, coord.xCoord, coord.yCoord, coord.zCoord, side.ordinal());
|
||||||
|
|
||||||
|
if(weakPower && isDirectlyGettingPowered(world, sideCoord))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(expand && isGettingPowered(world, sideCoord, false))
|
else if(!weakPower && block.isProvidingWeakPower(world, sideCoord.xCoord, sideCoord.yCoord, sideCoord.zCoord, side.ordinal()) > 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a block is directly getting powered by any of its neighbors without loading any chunks.
|
||||||
|
* @param world - the world to perform the check in
|
||||||
|
* @param coord - the Coord4D of the block to check
|
||||||
|
* @return if the block is directly getting powered
|
||||||
|
*/
|
||||||
|
public static boolean isDirectlyGettingPowered(World world, Coord4D coord)
|
||||||
|
{
|
||||||
|
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||||
|
{
|
||||||
|
Coord4D sideCoord = coord.getFromSide(side);
|
||||||
|
|
||||||
|
if(sideCoord.exists(world))
|
||||||
|
{
|
||||||
|
if(world.isBlockProvidingPowerTo(coord.xCoord, coord.yCoord, coord.zCoord, side.ordinal()) > 0)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue