diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 2f9f04cb3..b1ec24c6b 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -36,8 +36,8 @@ import mekanism.common.EnergyNetwork.EnergyTransferEvent; import mekanism.common.FluidNetwork.FluidTransferEvent; import mekanism.common.Tier.EnergyCubeTier; import mekanism.common.Tier.FactoryTier; -import mekanism.common.base.IModule; import mekanism.common.base.IFactory.RecipeType; +import mekanism.common.base.IModule; import mekanism.common.entity.EntityBabySkeleton; import mekanism.common.entity.EntityBalloon; import mekanism.common.entity.EntityFlame; @@ -63,6 +63,7 @@ import mekanism.common.tile.TileEntityEnergizedSmelter; import mekanism.common.tile.TileEntityEntangledBlock; import mekanism.common.tile.TileEntitySalinationBlock; import mekanism.common.tile.TileEntitySalinationValve; +import mekanism.common.transporter.PathfinderCache; import mekanism.common.transporter.TransporterManager; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -983,6 +984,7 @@ public class Mekanism //Reset consistent managers MultiblockManager.reset(); TransporterManager.reset(); + PathfinderCache.reset(); } @EventHandler diff --git a/src/main/java/mekanism/common/multipart/PlasticMicroMaterial.java b/src/main/java/mekanism/common/multipart/PlasticMicroMaterial.java index 3f0f4cf6e..70bf96d20 100644 --- a/src/main/java/mekanism/common/multipart/PlasticMicroMaterial.java +++ b/src/main/java/mekanism/common/multipart/PlasticMicroMaterial.java @@ -1,7 +1,6 @@ package mekanism.common.multipart; import net.minecraft.block.Block; - import codechicken.microblock.BlockMicroMaterial; public class PlasticMicroMaterial extends BlockMicroMaterial @@ -11,8 +10,9 @@ public class PlasticMicroMaterial extends BlockMicroMaterial super(block, meta); } + @Override public int getColour(int pass) { - return block().getRenderColor(meta())<<8|0xFF; + return block().getRenderColor(meta()) << 8 | 0xFF; } } diff --git a/src/main/java/mekanism/common/transporter/PathfinderCache.java b/src/main/java/mekanism/common/transporter/PathfinderCache.java new file mode 100644 index 000000000..d8485198d --- /dev/null +++ b/src/main/java/mekanism/common/transporter/PathfinderCache.java @@ -0,0 +1,77 @@ +package mekanism.common.transporter; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import mekanism.api.Coord4D; +import net.minecraftforge.common.util.ForgeDirection; + +public class PathfinderCache +{ + public static Map> cachedPaths = new HashMap>(); + + public static void onChanged(Coord4D location) + { + Set toKill = new HashSet(); + + for(Map.Entry> entry : cachedPaths.entrySet()) + { + if(entry.getValue().contains(entry)) + { + toKill.add(entry.getKey()); + } + } + + for(PathData path : toKill) + { + cachedPaths.remove(path); + } + } + + public static void reset() + { + cachedPaths.clear(); + } + + public static class PathData + { + public Coord4D start; + public ForgeDirection startSide; + + public Coord4D end; + public ForgeDirection endSide; + + public PathData(Coord4D s, ForgeDirection ss, Coord4D e, ForgeDirection es) + { + start = s; + startSide = ss; + + end = e; + endSide = es; + } + + @Override + public boolean equals(Object obj) + { + return obj instanceof PathData && + ((PathData)obj).start.equals(start) && + ((PathData)obj).startSide.equals(startSide) && + ((PathData)obj).end.equals(end) && + ((PathData)obj).endSide.equals(endSide); + } + + @Override + public int hashCode() + { + int code = 1; + code = 31 * code + start.hashCode(); + code = 31 * code + startSide.hashCode(); + code = 31 * code + end.hashCode(); + code = 31 * code + endSide.hashCode(); + return code; + } + } +} \ No newline at end of file