aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kekztech
diff options
context:
space:
mode:
authorChristina Berchtold <kekzdealer@gmail.com>2019-11-09 18:13:35 +0100
committerChristina Berchtold <kekzdealer@gmail.com>2019-11-09 18:13:35 +0100
commit7461f6a5173fdc5b3a20dc413ea7ce658fb820f2 (patch)
treebaedb5f7e2cfd610bb79c3557a7bfc494c78b348 /src/main/java/kekztech
parenta76478105d61d7be330c63fd247f7fbb66da9d9a (diff)
downloadGT5-Unofficial-7461f6a5173fdc5b3a20dc413ea7ce658fb820f2.tar.gz
GT5-Unofficial-7461f6a5173fdc5b3a20dc413ea7ce658fb820f2.tar.bz2
GT5-Unofficial-7461f6a5173fdc5b3a20dc413ea7ce658fb820f2.zip
UI for Item Distribution Network Node
Diffstat (limited to 'src/main/java/kekztech')
-rw-r--r--src/main/java/kekztech/GTRecipe.java104
-rw-r--r--src/main/java/kekztech/GuiHandler.java35
-rw-r--r--src/main/java/kekztech/ItemDistributionNetworkController.java45
-rw-r--r--src/main/java/kekztech/KekzCore.java11
-rw-r--r--src/main/java/kekztech/MultiBlockTooltipBuilder.java160
-rw-r--r--src/main/java/kekztech/TFFTFluidHandler.java7
6 files changed, 90 insertions, 272 deletions
diff --git a/src/main/java/kekztech/GTRecipe.java b/src/main/java/kekztech/GTRecipe.java
deleted file mode 100644
index 1939afc8ff..0000000000
--- a/src/main/java/kekztech/GTRecipe.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package kekztech;
-
-import java.util.ArrayList;
-
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.FluidStack;
-import util.Util;
-
-public class GTRecipe {
-
- private int euPerTick = 0;
- private int duration = 0;
-
- private ArrayList<ItemStack> inputItems;
- private ArrayList<FluidStack> inputFluids;
- private ArrayList<ItemStack> outputItems;
- private ArrayList<FluidStack> outputFluids;
-
- public int getEuPerTick() {
- return euPerTick;
- }
- public int getDuration() {
- return duration;
- }
- public ItemStack[] getInputItems() {
- return Util.toItemStackArray(inputItems);
- }
- public FluidStack[] getInputFluids() {
- return Util.toFluidStackArray(inputFluids);
- }
- public ItemStack[] getOutputItems() {
- return Util.toItemStackArray(outputItems);
- }
- public FluidStack[] getOutputFluids() {
- return Util.toFluidStackArray(outputFluids);
- }
- public ItemStack getInputItem() {
- final ItemStack[] s = Util.toItemStackArray(inputItems);
- return s[0];
- }
- public FluidStack getInputFluid() {
- final FluidStack[] s = Util.toFluidStackArray(inputFluids);
- return s[0];
- }
- public ItemStack getOutputItem() {
- final ItemStack[] s = Util.toItemStackArray(outputItems);
- return s[0];
- }
- public FluidStack getOutputFluid() {
- final FluidStack[] s = Util.toFluidStackArray(outputFluids);
- return s[0];
- }
-
- public GTRecipe addInputItem(ItemStack inputItem) {
- if(inputItems == null) {
- inputItems = new ArrayList<ItemStack>();
- inputItems.add(inputItem);
- } else {
- inputItems.add(inputItem);
- }
- return this;
- }
-
- public GTRecipe addOutputItem(ItemStack outputItem) {
- if(outputItems == null) {
- outputItems = new ArrayList<ItemStack>();
- outputItems.add(outputItem);
- } else {
- outputItems.add(outputItem);
- }
- return this;
- }
-
- public GTRecipe addInputFluid(FluidStack inputFluid) {
- if(inputFluids == null) {
- inputFluids = new ArrayList<FluidStack>();
- inputFluids.add(inputFluid);
- } else {
- inputFluids.add(inputFluid);
- }
- return this;
- }
-
- public GTRecipe addOutputFluid(FluidStack outputFluid) {
- if(outputFluids == null) {
- outputFluids = new ArrayList<FluidStack>();
- outputFluids.add(outputFluid);
- } else {
- outputFluids.add(outputFluid);
- }
- return this;
- }
-
- public GTRecipe setEUPerTick(int euPerTick) {
- this.euPerTick = euPerTick;
- return this;
- }
-
- public GTRecipe setDuration(int duration) {
- this.duration = duration;
- return this;
- }
-
-}
diff --git a/src/main/java/kekztech/GuiHandler.java b/src/main/java/kekztech/GuiHandler.java
new file mode 100644
index 0000000000..21ad5c95ae
--- /dev/null
+++ b/src/main/java/kekztech/GuiHandler.java
@@ -0,0 +1,35 @@
+package kekztech;
+
+import container.Container_ItemDistributionNode;
+import container.Gui_ItemDistributionNode;
+import cpw.mods.fml.common.network.IGuiHandler;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import tileentities.TE_ItemDistributionNode;
+
+public class GuiHandler implements IGuiHandler {
+
+ @Override
+ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+ final TileEntity te = world.getTileEntity(x, y, z);
+ if(te != null) {
+ if(ID == 0) {
+ return new Container_ItemDistributionNode((TE_ItemDistributionNode) te, player);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+ final TileEntity te = world.getTileEntity(x, y, z);
+ if(te != null) {
+ if(ID == 0) {
+ return new Gui_ItemDistributionNode((TE_ItemDistributionNode) te, player);
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/kekztech/ItemDistributionNetworkController.java b/src/main/java/kekztech/ItemDistributionNetworkController.java
index e188cb0d26..bf976898e5 100644
--- a/src/main/java/kekztech/ItemDistributionNetworkController.java
+++ b/src/main/java/kekztech/ItemDistributionNetworkController.java
@@ -6,6 +6,7 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.UUID;
+import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
@@ -15,7 +16,9 @@ public class ItemDistributionNetworkController implements Comparable<ItemDistrib
private final UUID uuid = UUID.randomUUID();
private final LinkedList<IConduit> conduits = new LinkedList<>();
- private final HashMap<String, IConduit> sources = new HashMap<>(); // k = resource name, v = source conduit
+ private final boolean[] slotDirections = new boolean[15];
+ private final ItemStack[] networkedItemStacks = new ItemStack[15];
+ //private final HashMap<String, IConduit> sources = new HashMap<>(); // k = resource name, v = source conduit
public ItemDistributionNetworkController() {
@@ -126,6 +129,46 @@ public class ItemDistributionNetworkController implements Comparable<ItemDistrib
}
/**
+ * Find out if this slot is designated as input and can accept an item into the network.
+ *
+ * Slots are numbered left to right, then top to bottom and start at zero.
+ * For example, the second slot in the second row, would have a slot number of five.
+ *
+ * @param slot:
+ * Slot number.
+ * @return whether this slot can accept input or not.
+ */
+ public boolean isInputSlot(int slot) {
+ if(slot >= slotDirections.length) {
+ return false;
+ }
+ return slotDirections[slot];
+ }
+
+ /**
+ * Return the ItemStack that is contained in the given slot number.
+ *
+ * Slots are numbered left to right, then top to bottom and start at zero.
+ * For example, the second slot in the second row, would have a slot number of five.
+ *
+ * @param slot:
+ * Slot number.
+ * @return ItemStack at given slot number.
+ */
+ public ItemStack getStackInSlot(int slot) {
+ if(slot >= networkedItemStacks.length) {
+ return null;
+ }
+ return networkedItemStacks[slot];
+ }
+
+ public void setStackInSlot(int slot, ItemStack itemStack) {
+ if(slot < networkedItemStacks.length && isInputSlot(slot)) {
+ networkedItemStacks[slot] = itemStack;
+ }
+ }
+
+ /**
* Register a new conduit to this network.
*
* @param conduit
diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java
index 3b88a9074d..f93b5a9802 100644
--- a/src/main/java/kekztech/KekzCore.java
+++ b/src/main/java/kekztech/KekzCore.java
@@ -2,6 +2,8 @@ package kekztech;
import blocks.Block_ControlRod;
import blocks.Block_GDCUnit;
+import blocks.Block_ItemDistributionCable;
+import blocks.Block_ItemDistributionNode;
import blocks.Block_ReactorChamber_OFF;
import blocks.Block_ReactorChamber_ON;
import blocks.Block_TFFTCasing;
@@ -16,6 +18,7 @@ import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
@@ -33,6 +36,8 @@ import tileentities.GTMTE_FluidMultiStorage;
import tileentities.GTMTE_ModularNuclearReactor;
import tileentities.GTMTE_SOFuelCellMK1;
import tileentities.GTMTE_SOFuelCellMK2;
+import tileentities.TE_ItemDistributionCable;
+import tileentities.TE_ItemDistributionNode;
import tileentities.TE_TFFTMultiHatch;
import util.Util;
@@ -82,8 +87,14 @@ public class KekzCore {
Block_ReactorChamber_OFF.getInstance().registerBlock();
Block_ReactorChamber_ON.getInstance().registerBlock();
Block_ControlRod.getInstance().registerBlock();
+ Block_ItemDistributionCable.getInstance().registerBlock();
+ Block_ItemDistributionNode.getInstance().registerBlock();
// Register TileEntities
GameRegistry.registerTileEntity(TE_TFFTMultiHatch.class, "kekztech_tfftmultihatch_tile");
+ GameRegistry.registerTileEntity(TE_ItemDistributionCable.class, "kekztech_itemdistributioncable_tile");
+ GameRegistry.registerTileEntity(TE_ItemDistributionNode.class, "kekztech_itemdistributionnode_tile");
+ // Register a GUI?
+ NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
}
@Mod.EventHandler
diff --git a/src/main/java/kekztech/MultiBlockTooltipBuilder.java b/src/main/java/kekztech/MultiBlockTooltipBuilder.java
deleted file mode 100644
index 6e2e7669a8..0000000000
--- a/src/main/java/kekztech/MultiBlockTooltipBuilder.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package kekztech;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import net.minecraft.util.EnumChatFormatting;
-
-/**
- * Have you ever felt like your tooltips just aren't enterprise enough? Use this!
- *
- * @author kekzdealer
- *
- */
-public class MultiBlockTooltipBuilder {
-
- private static final String TAB = " ";
-
- private final List<String> iLines;
- private final List<String> sLines;
-
- private String[] iArray;
- private String[] sArray;
-
- public MultiBlockTooltipBuilder() {
- iLines = new LinkedList<>();
- sLines = new LinkedList<>();
- }
-
- /**
- * Add a basic line of information about this structure
- *
- * @param line
- * The line to be added.
- * @return Instance this method was called on.
- */
- public MultiBlockTooltipBuilder addInfo(String info) {
- iLines.add(info);
- return this;
- }
-
- /**
- * Add a separator line like this:<br>
- * -------------------------------
- *
- * @return Instance this method was called on.
- */
- public MultiBlockTooltipBuilder addSeparator() {
- iLines.add("-----------------------------------------");
- return this;
- }
-
- /**
- * Begin adding structural information by adding a line about the structure's dimensions
- * and then inserting a "Structure:" line.
- *
- * @param w
- * Structure width.
- * @param h
- * Structure height.
- * @param l
- * Structure depth/length.
- * @return Instance this method was called on.
- */
- public MultiBlockTooltipBuilder beginStructureBlock(int w, int h, int l) {
- sLines.add("Dimensions: " + w + "x" + h + "x" + l + " (WxHxL)");
- sLines.add("Structure:");
- return this;
- }
-
- public MultiBlockTooltipBuilder addController(String info) {
- sLines.add(TAB + "Controller: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addCasingInfo(String casingName, int minCount) {
- sLines.add(TAB + minCount +"x " + casingName + " (at least)");
- return this;
- }
-
- public MultiBlockTooltipBuilder addEnergyHatch(String info) {
- sLines.add(TAB + "Energy Hatch: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addDynamoHatch(String info) {
- sLines.add(TAB + "Dynamo Hatch: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addMaintenanceHatch(String info) {
- sLines.add(TAB + "Maintenance Hatch: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addIOHatches(String info) {
- sLines.add(TAB + "I/O Hatches: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addInputBus(String info) {
- sLines.add(TAB + "Input Bus/ses: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addInputHatch(String info) {
- sLines.add(TAB + "Input Hatch/es: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addOutputBus(String info) {
- sLines.add(TAB + "Output Bus/ses: " + info);
- return this;
- }
-
- public MultiBlockTooltipBuilder addOutputHatch(String info) {
- sLines.add(TAB + "Output Hatch/es: " + info);
- return this;
- }
-
- /**
- * Use this method to add a structural part that isn't covered by the builders capabilities.
- *
- * @param name
- * Name of the hatch or other component.
- * @param info
- * Positional information.
- * @return Instance this method was called on.
- */
- public MultiBlockTooltipBuilder addOtherStructurePart(String name, String info) {
- sLines.add(TAB + name + ": " + info);
- return this;
- }
-
- /**
- * Call at the very end.<br>
- * Adds a final line with the authors name and information on how to display the structure guidelines.<br>
- * Ends the building process.
- *
- * @param author
- * Name of the creator of this Machine
- *
- * @return The result of all build calls.
- */
- public void signAndFinalize(String author) {
- iLines.add("Hold " + EnumChatFormatting.BOLD + "[LSHIFT]" + EnumChatFormatting.RESET + EnumChatFormatting.GRAY + " to display structure guidelines");
- iLines.add("Created by " + author);
- iArray = new String[iLines.size()];
- sArray = new String[sLines.size()];
- iLines.toArray(iArray);
- sLines.toArray(sArray);
- }
-
- public String[] getInformation() {
- return iArray;
- }
-
- public String[] getStructureInformation() {
- return sArray;
- }
-}
diff --git a/src/main/java/kekztech/TFFTFluidHandler.java b/src/main/java/kekztech/TFFTFluidHandler.java
deleted file mode 100644
index 2ed5eac798..0000000000
--- a/src/main/java/kekztech/TFFTFluidHandler.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package kekztech;
-
-public class TFFTFluidHandler {
-
-
-
-}