From 7461f6a5173fdc5b3a20dc413ea7ce658fb820f2 Mon Sep 17 00:00:00 2001 From: Christina Berchtold Date: Sat, 9 Nov 2019 18:13:35 +0100 Subject: UI for Item Distribution Network Node --- src/main/java/kekztech/GTRecipe.java | 104 -------------- src/main/java/kekztech/GuiHandler.java | 35 +++++ .../ItemDistributionNetworkController.java | 45 +++++- src/main/java/kekztech/KekzCore.java | 11 ++ .../java/kekztech/MultiBlockTooltipBuilder.java | 160 --------------------- src/main/java/kekztech/TFFTFluidHandler.java | 7 - 6 files changed, 90 insertions(+), 272 deletions(-) delete mode 100644 src/main/java/kekztech/GTRecipe.java create mode 100644 src/main/java/kekztech/GuiHandler.java delete mode 100644 src/main/java/kekztech/MultiBlockTooltipBuilder.java delete mode 100644 src/main/java/kekztech/TFFTFluidHandler.java (limited to 'src/main/java/kekztech') 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 inputItems; - private ArrayList inputFluids; - private ArrayList outputItems; - private ArrayList 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(); - inputItems.add(inputItem); - } else { - inputItems.add(inputItem); - } - return this; - } - - public GTRecipe addOutputItem(ItemStack outputItem) { - if(outputItems == null) { - outputItems = new ArrayList(); - outputItems.add(outputItem); - } else { - outputItems.add(outputItem); - } - return this; - } - - public GTRecipe addInputFluid(FluidStack inputFluid) { - if(inputFluids == null) { - inputFluids = new ArrayList(); - inputFluids.add(inputFluid); - } else { - inputFluids.add(inputFluid); - } - return this; - } - - public GTRecipe addOutputFluid(FluidStack outputFluid) { - if(outputFluids == null) { - outputFluids = new ArrayList(); - 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 conduits = new LinkedList<>(); - private final HashMap 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 sources = new HashMap<>(); // k = resource name, v = source conduit public ItemDistributionNetworkController() { @@ -125,6 +128,46 @@ public class ItemDistributionNetworkController implements Comparable= 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. * 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 iLines; - private final List 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:
- * ------------------------------- - * - * @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.
- * Adds a final line with the authors name and information on how to display the structure guidelines.
- * 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 { - - - -} -- cgit