diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index b6c9a89d1..e1c3db089 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,12 +1,10 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; -import com.google.common.collect.Sets; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import universalelectricity.api.vector.IVector3; -import java.util.*; +import java.util.Arrays; /** * @since 18/03/14 @@ -31,14 +29,14 @@ public class GridRailing extends NodeGrid public IItemRailing findNearestInventory(IItemRailingTransfer itemwrapper) { IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - Arrays.sort(arr, new RailingDistanceComparator.RailingInventoryDistanceComparator()); + Arrays.sort(arr, new RailingDistanceComparator.RailingInventoryDistanceComparator(itemwrapper.getRailing())); return arr[0]; } public IItemRailing findNearestColoredTarget(IItemRailingTransfer itemwrapper) { IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getColor())); + Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getRailing(), itemwrapper.getColor())); return arr[0]; } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index a4bfe601e..3015aa26e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -12,57 +12,25 @@ import java.util.ArrayList; import java.util.List; /** - * @since 18/03/14 * @author tgame14 + * @since 18/03/14 */ public class NodeRailing extends Node implements IVectorWorld { - public NodeRailing (PartRailing parent) - { - super(parent); - } + public NodeRailing(PartRailing parent) + { + super(parent); + } - @Override - protected GridRailing newGrid () - { - return new GridRailing(getClass()); - } + @Override + protected GridRailing newGrid() + { + return new GridRailing(getClass()); + } /** - * * @return possibly null, a IInventory to target */ - public IInventory[] getInventoriesNearby() - { - List invList = new ArrayList(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity te = parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()); - if (te != null && te instanceof IInventory) - { - invList.add((IInventory) te); - } - } - return (IInventory[]) invList.toArray(); - } - - public boolean isLeaf() - { - int connectionsCount = 0; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - if (parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()) instanceof IItemRailing) - { - connectionsCount++; - if (connectionsCount >= 2) - { - return false; - } - } - } - return true; - } - @Override public double z() diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index c13e41f41..6e86a8b1d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -15,6 +15,7 @@ import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; +import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; import universalelectricity.api.vector.IVectorWorld; @@ -22,6 +23,8 @@ import universalelectricity.api.vector.VectorWorld; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; /** * @since 16/03/14 @@ -107,13 +110,34 @@ public class PartRailing extends PartFramedConnection invList = new ArrayList(); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity te = this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()); + if (te != null && te instanceof IInventory) + { + invList.add((IInventory) te); + } + } + return (IInventory[]) invList.toArray(); } @Override public boolean isLeaf() { - return node.isLeaf(); + int connectionsCount = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + if (this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()) instanceof IItemRailing) + { + connectionsCount++; + if (connectionsCount >= 2) + { + return false; + } + } + } + return true; } @Override @@ -158,12 +182,18 @@ public class PartRailing extends PartFramedConnection +public abstract class RailingDistanceComparator implements Comparator { + private IItemRailing source; + + public RailingDistanceComparator(IItemRailing source) + { + this.source = source; + } @Override public int compare(IItemRailing o1, IItemRailing o2) { - return (int) o1.getWorldPos().floor().distance(o2.getWorldPos()); + return (int) (source.getWorldPos().floor().distance(o1.getWorldPos()) - source.getWorldPos().floor().distance(o2.getWorldPos())); } + public static class RailingInventoryDistanceComparator extends RailingDistanceComparator { + public RailingInventoryDistanceComparator(IItemRailing source) + { + super(source); + } + @Override public int compare(IItemRailing o1, IItemRailing o2) { @@ -41,12 +53,14 @@ public class RailingDistanceComparator implements Comparator } } + public static class RailingColoredDistanceComparator extends RailingDistanceComparator { private EnumColor color; - public RailingColoredDistanceComparator(EnumColor color) + public RailingColoredDistanceComparator(IItemRailing source, EnumColor color) { + super(source); this.color = color; }