Implemented Priority System for the item routing system. Lower numbers are looked at first.
This commit is contained in:
parent
2c49c49441
commit
7104138e2b
10 changed files with 97 additions and 10 deletions
|
@ -1,5 +1,6 @@
|
|||
package WayofTime.bloodmagic.tile.routing;
|
||||
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
@ -8,6 +9,7 @@ import net.minecraft.util.EnumFacing;
|
|||
public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedInventory
|
||||
{
|
||||
public int currentActiveSlot = 0;
|
||||
public int[] priorities = new int[6];
|
||||
|
||||
public TileFilteredRoutingNode(int size, String name)
|
||||
{
|
||||
|
@ -37,6 +39,11 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
|
|||
{
|
||||
super.readFromNBT(tag);
|
||||
currentActiveSlot = tag.getInteger("currentSlot");
|
||||
priorities = tag.getIntArray(Constants.NBT.ROUTING_PRIORITY);
|
||||
if (priorities.length != 6)
|
||||
{
|
||||
priorities = new int[6];
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -44,6 +51,7 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
|
|||
{
|
||||
super.writeToNBT(tag);
|
||||
tag.setInteger("currentSlot", currentActiveSlot);
|
||||
tag.setIntArray(Constants.NBT.ROUTING_PRIORITY, priorities);
|
||||
}
|
||||
|
||||
public void swapFilters(int requestedSlot)
|
||||
|
@ -72,4 +80,20 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority(EnumFacing side)
|
||||
{
|
||||
return priorities[side.getIndex()];
|
||||
}
|
||||
|
||||
public void incrementCurrentPriotiryToMaximum(int max)
|
||||
{
|
||||
priorities[currentActiveSlot] = Math.min(priorities[currentActiveSlot] + 1, max);
|
||||
}
|
||||
|
||||
public void decrementCurrentPriority()
|
||||
{
|
||||
priorities[currentActiveSlot] = Math.max(priorities[currentActiveSlot] - 1, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,6 +114,8 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti
|
|||
}
|
||||
}
|
||||
|
||||
int maxTransfer = 8;
|
||||
|
||||
for (Entry<Integer, List<IItemFilter>> outputEntry : outputMap.entrySet())
|
||||
{
|
||||
List<IItemFilter> outputList = outputEntry.getValue();
|
||||
|
@ -124,7 +126,11 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti
|
|||
List<IItemFilter> inputList = inputEntry.getValue();
|
||||
for (IItemFilter inputFilter : inputList)
|
||||
{
|
||||
inputFilter.transferThroughInputFilter(outputFilter, 8);
|
||||
maxTransfer -= inputFilter.transferThroughInputFilter(outputFilter, maxTransfer);
|
||||
if (maxTransfer <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue