diff --git a/src/main/java/mekanism/common/content/transporter/TransporterPathfinder.java b/src/main/java/mekanism/common/content/transporter/TransporterPathfinder.java index 652d6c723..72217b620 100644 --- a/src/main/java/mekanism/common/content/transporter/TransporterPathfinder.java +++ b/src/main/java/mekanism/common/content/transporter/TransporterPathfinder.java @@ -24,6 +24,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import com.mojang.realmsclient.util.Pair; + public final class TransporterPathfinder { public static class IdlePath @@ -541,7 +543,7 @@ public final class TransporterPathfinder } } - public static List getIdlePath(ILogisticalTransporter start, TransporterStack stack) + public static Pair, Path> getIdlePath(ILogisticalTransporter start, TransporterStack stack) { if(stack.homeLocation != null) { @@ -559,8 +561,7 @@ public final class TransporterPathfinder if(path.size() >= 2) { - stack.pathType = Path.HOME; - return path; + return Pair.of(path, Path.HOME); } else { stack.homeLocation = null; @@ -574,9 +575,7 @@ public final class TransporterPathfinder { return null; } - - stack.pathType = dest.pathType; - return dest.path; + return Pair.of(dest.path, dest.pathType); } } diff --git a/src/main/java/mekanism/common/content/transporter/TransporterStack.java b/src/main/java/mekanism/common/content/transporter/TransporterStack.java index 092f67df6..0a4c6ba14 100644 --- a/src/main/java/mekanism/common/content/transporter/TransporterStack.java +++ b/src/main/java/mekanism/common/content/transporter/TransporterStack.java @@ -18,6 +18,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; +import com.mojang.realmsclient.util.Pair; + public class TransporterStack { public ItemStack itemStack; @@ -150,11 +152,16 @@ public class TransporterStack return stack; } - public void setPath(List path) + public void setPath(List path, Path type) { - TransporterManager.remove(this); + //Make sure old path isn't null + if(pathType != Path.NONE) + { + TransporterManager.remove(this); + } pathToTarget = path; + pathType = type; if(pathType != Path.NONE) { @@ -181,9 +188,8 @@ public class TransporterStack return itemStack; } - pathType = Path.DEST; idleDir = ForgeDirection.UNKNOWN; - setPath(newPath.path); + setPath(newPath.path, Path.DEST); initiatedPath = true; return newPath.rejected; @@ -198,9 +204,8 @@ public class TransporterStack return itemStack; } - pathType = Path.DEST; idleDir = ForgeDirection.UNKNOWN; - setPath(newPath.path); + setPath(newPath.path, Path.DEST); initiatedPath = true; return newPath.rejected; @@ -208,19 +213,19 @@ public class TransporterStack public boolean calculateIdle(ILogisticalTransporter transporter) { - List newPath = TransporterPathfinder.getIdlePath(transporter, this); + Pair, Path> newPath = TransporterPathfinder.getIdlePath(transporter, this); if(newPath == null) { return false; } - if(pathType == Path.HOME) + if(newPath.second() == Path.HOME) { idleDir = ForgeDirection.UNKNOWN; } - setPath(newPath); + setPath(newPath.first(), newPath.second()); originalLocation = transporter.coord(); initiatedPath = true;