From a76478105d61d7be330c63fd247f7fbb66da9d9a Mon Sep 17 00:00:00 2001 From: Christina Berchtold Date: Fri, 8 Nov 2019 21:27:05 +0100 Subject: Gave Multi Hatch a shaped crafting recipe after many failed attempts with assembling machines. Began adding Item Distribution Network code. --- .../java/kekztech/ConduitNetworkController.java | 152 --------------------- src/main/java/kekztech/IConduit.java | 19 +-- .../ItemDistributionNetworkController.java | 152 +++++++++++++++++++++ src/main/java/kekztech/KekzCore.java | 19 ++- src/main/java/kekztech/TFFTFluidHandler.java | 7 + 5 files changed, 169 insertions(+), 180 deletions(-) delete mode 100644 src/main/java/kekztech/ConduitNetworkController.java create mode 100644 src/main/java/kekztech/ItemDistributionNetworkController.java create mode 100644 src/main/java/kekztech/TFFTFluidHandler.java (limited to 'src/main/java/kekztech') diff --git a/src/main/java/kekztech/ConduitNetworkController.java b/src/main/java/kekztech/ConduitNetworkController.java deleted file mode 100644 index 83f43cd54b..0000000000 --- a/src/main/java/kekztech/ConduitNetworkController.java +++ /dev/null @@ -1,152 +0,0 @@ -package kekztech; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.UUID; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class ConduitNetworkController implements Comparable { - - private static final HashSet instances = new HashSet<>(); - - private final UUID uuid = UUID.randomUUID(); - private final LinkedList conduits = new LinkedList<>(); - private final HashMap sources = new HashMap<>(); // k = resource name, v = source conduit - - public ConduitNetworkController() { - - } - - /** - * Places a new conduit as it's own network. Merges with adjacent networks automatically. - * - * @param conduit - * The conduit to be placed - */ - public static void placeConduit(IConduit conduit) { - - conduit.setNetwork(new ConduitNetworkController()); - conduit.getNetwork().addConduit(conduit); - - final TileEntity te = (TileEntity) conduit; - final int x = te.xCoord; - final int y = te.yCoord; - final int z = te.zCoord; - - // Search for adjacent Networks on all six sides - final HashSet networks = new HashSet<>(); - final World world = te.getWorldObj(); - final TileEntity te1x = world.getTileEntity(x + 1, y, z); - final TileEntity te0x = world.getTileEntity(x - 1, y, z); - final TileEntity te1y = world.getTileEntity(x, y + 1, z); - final TileEntity te0y = world.getTileEntity(x, y - 1, z); - final TileEntity te1z = world.getTileEntity(x, y, z + 1); - final TileEntity te0z = world.getTileEntity(x, y, z - 1); - if(te1x != null && te1x instanceof IConduit) { - final IConduit c = (IConduit) te1x; - networks.add(c.getNetwork()); - } - if(te0x != null && te0x instanceof IConduit) { - final IConduit c = (IConduit) te0x; - networks.add(c.getNetwork()); - } - if(te1y != null && te1y instanceof IConduit) { - final IConduit c = (IConduit) te1y; - networks.add(c.getNetwork()); - } - if(te0y != null && te0y instanceof IConduit) { - final IConduit c = (IConduit) te0y; - networks.add(c.getNetwork()); - } - if(te1z != null && te1z instanceof IConduit) { - final IConduit c = (IConduit) te1z; - networks.add(c.getNetwork()); - } - if(te0z != null && te0z instanceof IConduit) { - final IConduit c = (IConduit) te0z; - networks.add(c.getNetwork()); - } - // Return prematurely if no adjacent network was found - if(networks.size() == 0) { - return; - } - // Sort networks by descending size - final LinkedList networkList = new LinkedList<>(); - networkList.addAll(networks); - Collections.sort(networkList, Collections.reverseOrder()); - // Larger networks consume smaller networks to reduce copying around data - while(networkList.size() > 1) { - final ConduitNetworkController l = networkList.get(networkList.size() - 2); - final ConduitNetworkController r = networkList.getLast(); - l.appendNetwork(r); - networkList.removeLast(); - } - - } - - /** - * Deletes this conduit and breaks up adjacent networks into separate networks. - * - * @param conduit - * Conduit to be removed. - */ - public static void destroyConduit(IConduit conduit) { - - } - - public void run() { - - } - - @Override - public boolean equals(Object o) { - if(o instanceof ConduitNetworkController) { - final ConduitNetworkController network = (ConduitNetworkController) o; - return uuid.equals(network.getUUID()); - } else { - return false; - } - } - - @Override - public int compareTo(ConduitNetworkController o) { - return (int) Math.signum(o.getSize() - this.getSize()); - } - - public UUID getUUID() { - return uuid; - } - - public int getSize() { - return conduits.size(); - } - - /** - * Register a new conduit to this network. - * - * @param conduit - * New conduit. - */ - private void addConduit(IConduit conduit) { - conduits.add(conduit); - } - - /** - * Merge another network with this one if they have been connected by a new conduit. - * - * @param network - * Network to merge with this one. - */ - private void appendNetwork(ConduitNetworkController network) { - - } - - private void updateSource() { - - } - -} diff --git a/src/main/java/kekztech/IConduit.java b/src/main/java/kekztech/IConduit.java index d36c590a63..ce726a2207 100644 --- a/src/main/java/kekztech/IConduit.java +++ b/src/main/java/kekztech/IConduit.java @@ -2,22 +2,7 @@ package kekztech; public interface IConduit { - public void setNetwork(ConduitNetworkController network); - public ConduitNetworkController getNetwork(); + public void setNetwork(ItemDistributionNetworkController network); + public ItemDistributionNetworkController getNetwork(); - /** - * Returns the conduit's throughput capacity. - * - * @return - * The conduit's throughput capacity. - */ - public Number getCapacity(); - - /** - * Call when the throughput capacity was exceeded while traversing this conduit. - */ - public void onOverload(); - - public boolean testForInputFilter(Object o); - public boolean testForOutputFilter(Object o); } diff --git a/src/main/java/kekztech/ItemDistributionNetworkController.java b/src/main/java/kekztech/ItemDistributionNetworkController.java new file mode 100644 index 0000000000..e188cb0d26 --- /dev/null +++ b/src/main/java/kekztech/ItemDistributionNetworkController.java @@ -0,0 +1,152 @@ +package kekztech; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.UUID; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ItemDistributionNetworkController implements Comparable { + + private static final HashSet instances = new HashSet<>(); + + private final UUID uuid = UUID.randomUUID(); + private final LinkedList conduits = new LinkedList<>(); + private final HashMap sources = new HashMap<>(); // k = resource name, v = source conduit + + public ItemDistributionNetworkController() { + + } + + /** + * Places a new conduit as it's own network. Merges with adjacent networks automatically. + * + * @param conduit + * The conduit to be placed + */ + public static void placeConduit(IConduit conduit) { + + conduit.setNetwork(new ItemDistributionNetworkController()); + conduit.getNetwork().addConduit(conduit); + + final TileEntity te = (TileEntity) conduit; + final int x = te.xCoord; + final int y = te.yCoord; + final int z = te.zCoord; + + // Search for adjacent Networks on all six sides + final HashSet networks = new HashSet<>(); + final World world = te.getWorldObj(); + final TileEntity te1x = world.getTileEntity(x + 1, y, z); + final TileEntity te0x = world.getTileEntity(x - 1, y, z); + final TileEntity te1y = world.getTileEntity(x, y + 1, z); + final TileEntity te0y = world.getTileEntity(x, y - 1, z); + final TileEntity te1z = world.getTileEntity(x, y, z + 1); + final TileEntity te0z = world.getTileEntity(x, y, z - 1); + if(te1x != null && te1x instanceof IConduit) { + final IConduit c = (IConduit) te1x; + networks.add(c.getNetwork()); + } + if(te0x != null && te0x instanceof IConduit) { + final IConduit c = (IConduit) te0x; + networks.add(c.getNetwork()); + } + if(te1y != null && te1y instanceof IConduit) { + final IConduit c = (IConduit) te1y; + networks.add(c.getNetwork()); + } + if(te0y != null && te0y instanceof IConduit) { + final IConduit c = (IConduit) te0y; + networks.add(c.getNetwork()); + } + if(te1z != null && te1z instanceof IConduit) { + final IConduit c = (IConduit) te1z; + networks.add(c.getNetwork()); + } + if(te0z != null && te0z instanceof IConduit) { + final IConduit c = (IConduit) te0z; + networks.add(c.getNetwork()); + } + // Return prematurely if no adjacent network was found + if(networks.size() == 0) { + return; + } + // Sort networks by descending size + final LinkedList networkList = new LinkedList<>(); + networkList.addAll(networks); + Collections.sort(networkList, Collections.reverseOrder()); + // Larger networks consume smaller networks to reduce copying around data + while(networkList.size() > 1) { + final ItemDistributionNetworkController l = networkList.get(networkList.size() - 2); + final ItemDistributionNetworkController r = networkList.getLast(); + l.appendNetwork(r); + networkList.removeLast(); + } + + } + + /** + * Deletes this conduit and breaks up adjacent networks into separate networks. + * + * @param conduit + * Conduit to be removed. + */ + public static void destroyConduit(IConduit conduit) { + + } + + public void run() { + + } + + @Override + public boolean equals(Object o) { + if(o instanceof ItemDistributionNetworkController) { + final ItemDistributionNetworkController network = (ItemDistributionNetworkController) o; + return uuid.equals(network.getUUID()); + } else { + return false; + } + } + + @Override + public int compareTo(ItemDistributionNetworkController o) { + return (int) Math.signum(o.getSize() - this.getSize()); + } + + public UUID getUUID() { + return uuid; + } + + public int getSize() { + return conduits.size(); + } + + /** + * Register a new conduit to this network. + * + * @param conduit + * New conduit. + */ + private void addConduit(IConduit conduit) { + conduits.add(conduit); + } + + /** + * Merge another network with this one if they have been connected by a new conduit. + * + * @param network + * Network to merge with this one. + */ + private void appendNetwork(ItemDistributionNetworkController network) { + + } + + private void updateSource() { + + } + +} diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index a832faa484..3b88a9074d 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -221,17 +221,14 @@ public class KekzCore { FluidRegistry.getFluidStack("molten.epoxid", 1152), new ItemStack(Block_TFFTStorageFieldBlockT4.getInstance(), 1), 400, 4098); - final ItemStack[] tfftmultihatch = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Master, 2), - GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Titanium, 25), - ItemList.Field_Generator_HV.get(1L) - }; - GT_Values.RA.addAssemblerRecipe( - tfftmultihatch, - FluidRegistry.getFluidStack("molten.epoxid", 576), - new ItemStack(Block_TFFTMultiHatch.getInstance(), 1), - 6000, 480); + final Object[] multi_hatch = { + "PRP", "UFU", "PRP", + 'P', GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.NiobiumTitanium, 1), + 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1), + 'U', ItemList.Electric_Pump_IV.get(1L), + 'F', ItemList.Field_Generator_HV.get(1L) + }; + GT_ModHandler.addCraftingRecipe(new ItemStack(Block_TFFTMultiHatch.getInstance()), multi_hatch); // Reactor structure blocks final ItemStack[] controlrod = { diff --git a/src/main/java/kekztech/TFFTFluidHandler.java b/src/main/java/kekztech/TFFTFluidHandler.java new file mode 100644 index 0000000000..2ed5eac798 --- /dev/null +++ b/src/main/java/kekztech/TFFTFluidHandler.java @@ -0,0 +1,7 @@ +package kekztech; + +public class TFFTFluidHandler { + + + +} -- cgit