aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
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
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')
-rw-r--r--src/main/java/blocks/Block_ItemDistributionNode.java15
-rw-r--r--src/main/java/container/Container_ItemDistributionNode.java68
-rw-r--r--src/main/java/container/Gui_ItemDistributionNode.java49
-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/TFFTFluidHandler.java7
-rw-r--r--src/main/java/tileentities/GTMTE_FluidMultiStorage.java2
-rw-r--r--src/main/java/tileentities/GTMTE_ModularNuclearReactor.java2
-rw-r--r--src/main/java/tileentities/GTMTE_SOFuelCellMK1.java2
-rw-r--r--src/main/java/tileentities/GTMTE_SOFuelCellMK2.java2
-rw-r--r--src/main/java/tileentities/TE_ItemDistributionCable.java20
-rw-r--r--src/main/java/tileentities/TE_ItemDistributionNode.java48
-rw-r--r--src/main/java/util/MultiBlockTooltipBuilder.java (renamed from src/main/java/kekztech/MultiBlockTooltipBuilder.java)2
15 files changed, 281 insertions, 131 deletions
diff --git a/src/main/java/blocks/Block_ItemDistributionNode.java b/src/main/java/blocks/Block_ItemDistributionNode.java
index 11d9e22b39..07fd988445 100644
--- a/src/main/java/blocks/Block_ItemDistributionNode.java
+++ b/src/main/java/blocks/Block_ItemDistributionNode.java
@@ -6,6 +6,7 @@ import kekztech.KekzCore;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import tileentities.TE_ItemDistributionNode;
@@ -33,6 +34,20 @@ public class Block_ItemDistributionNode extends BlockContainer {
}
@Override
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) {
+ if(world.isRemote) {
+ return true;
+ }
+
+ final TileEntity te = world.getTileEntity(x, y, z);
+ if(te != null && te instanceof TE_ItemDistributionNode) {
+ player.openGui(KekzCore.instance, 0, world, x, y, z);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public TileEntity createNewTileEntity(World world, int p_149915_2_) {
return new TE_ItemDistributionNode();
}
diff --git a/src/main/java/container/Container_ItemDistributionNode.java b/src/main/java/container/Container_ItemDistributionNode.java
new file mode 100644
index 0000000000..08096bc80f
--- /dev/null
+++ b/src/main/java/container/Container_ItemDistributionNode.java
@@ -0,0 +1,68 @@
+package container;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import tileentities.TE_ItemDistributionNode;
+
+public class Container_ItemDistributionNode extends Container {
+
+ private final TE_ItemDistributionNode te;
+
+ private int slotID = 0;
+
+ public Container_ItemDistributionNode(TE_ItemDistributionNode te, EntityPlayer player) {
+ this.te = te;
+
+ // Networked Storage
+ for(int i = 0; i < 4; i++) {
+ for(int j = 0; j < 4; j++) {
+ super.addSlotToContainer(new Slot(te, slotID++, 18 * j + 20, 19 * i + 20));
+ }
+ }
+
+ //Inventory
+ for (int i = 0; i < 3; i++) {
+ for (int j = 0; j < 9; j++) {
+ addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
+ }
+ }
+ // Hotbar
+ for (int i = 0; i < 9; i++) {
+ addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142));
+ }
+ }
+
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw) {
+ ItemStack stack = null;
+ final Slot slot = (Slot) inventorySlots.get(slotRaw);
+
+ if (slot != null && slot.getHasStack()) {
+ final ItemStack stackInSlot = slot.getStack();
+ stack = stackInSlot.copy();
+
+ if (slotRaw < 3 * 9) {
+ if (!mergeItemStack(stackInSlot, 3 * 9, inventorySlots.size(), true)) {
+ return null;
+ }
+ } else if (!mergeItemStack(stackInSlot, 0, 3 * 9, false)) {
+ return null;
+ }
+
+ if (stackInSlot.stackSize == 0) {
+ slot.putStack((ItemStack) null);
+ } else {
+ slot.onSlotChanged();
+ }
+ }
+ return stack;
+ }
+
+ @Override
+ public boolean canInteractWith(EntityPlayer player) {
+ return te.isUseableByPlayer(player);
+ }
+
+}
diff --git a/src/main/java/container/Gui_ItemDistributionNode.java b/src/main/java/container/Gui_ItemDistributionNode.java
new file mode 100644
index 0000000000..08f530fce8
--- /dev/null
+++ b/src/main/java/container/Gui_ItemDistributionNode.java
@@ -0,0 +1,49 @@
+package container;
+
+import org.lwjgl.opengl.GL11;
+
+import kekztech.KekzCore;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.util.ResourceLocation;
+import tileentities.TE_ItemDistributionNode;
+
+public class Gui_ItemDistributionNode extends GuiContainer {
+
+ private final ResourceLocation texture = new ResourceLocation(KekzCore.MODID, "textures/gui/ItemDistributionNode.png");
+
+ private final InventoryPlayer inventory;
+ private final TE_ItemDistributionNode te;
+
+ public Gui_ItemDistributionNode(TE_ItemDistributionNode te, EntityPlayer player) {
+ super(new Container_ItemDistributionNode(te, player));
+ inventory = player.inventory;
+ this.te = te;
+
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(texture);
+ GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
+
+ final int x = (super.width - super.xSize) / 2;
+ final int y = (super.height - super.ySize) / 2;
+
+ super.drawTexturedModalRect(x, y, 0, 0, super.xSize, super.ySize);
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int p1, int p2) {
+ super.fontRendererObj.drawString(
+ I18n.format(te.getInventoryName()),
+ (super.xSize / 2) - (fontRendererObj.getStringWidth(I18n.format(te.getInventoryName())) / 2),
+ 6, 4210752, false);
+ super.fontRendererObj.drawString(
+ I18n.format(inventory.getInventoryName()), 8, super.ySize - 96 + 2, 4210752);
+ }
+}
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/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 {
-
-
-
-}
diff --git a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java
index e4ab4e574e..61b8e558f5 100644
--- a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java
+++ b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java
@@ -21,7 +21,6 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.objects.GT_RenderedTexture;
-import kekztech.MultiBlockTooltipBuilder;
import kekztech.MultiFluidHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
@@ -32,6 +31,7 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import util.MultiBlockTooltipBuilder;
import util.Vector3i;
import util.Vector3ic;
diff --git a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java
index a6b91a60ca..14941e489d 100644
--- a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java
+++ b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java
@@ -15,11 +15,11 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.objects.GT_RenderedTexture;
-import kekztech.MultiBlockTooltipBuilder;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
+import util.MultiBlockTooltipBuilder;
public class GTMTE_ModularNuclearReactor extends GT_MetaTileEntity_MultiBlockBase {
diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java b/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java
index 549bc19f72..9aa0a5c01d 100644
--- a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java
+++ b/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java
@@ -19,13 +19,13 @@ import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import kekztech.MultiBlockTooltipBuilder;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import util.MultiBlockTooltipBuilder;
import util.Vector3i;
import util.Vector3ic;
diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java b/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java
index 8d1f996cb8..3ecba204ce 100644
--- a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java
+++ b/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java
@@ -19,13 +19,13 @@ import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
-import kekztech.MultiBlockTooltipBuilder;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import util.MultiBlockTooltipBuilder;
import util.Vector3i;
import util.Vector3ic;
diff --git a/src/main/java/tileentities/TE_ItemDistributionCable.java b/src/main/java/tileentities/TE_ItemDistributionCable.java
index 153ed139b5..325d04c211 100644
--- a/src/main/java/tileentities/TE_ItemDistributionCable.java
+++ b/src/main/java/tileentities/TE_ItemDistributionCable.java
@@ -1,7 +1,25 @@
package tileentities;
+import kekztech.IConduit;
+import kekztech.ItemDistributionNetworkController;
import net.minecraft.tileentity.TileEntity;
-public class TE_ItemDistributionCable extends TileEntity {
+public class TE_ItemDistributionCable extends TileEntity implements IConduit {
+
+ private ItemDistributionNetworkController network;
+
+ public TE_ItemDistributionCable() {
+ ItemDistributionNetworkController.placeConduit(this);
+ }
+
+ @Override
+ public void setNetwork(ItemDistributionNetworkController network) {
+ this.network = network;
+ }
+
+ @Override
+ public ItemDistributionNetworkController getNetwork() {
+ return network;
+ }
}
diff --git a/src/main/java/tileentities/TE_ItemDistributionNode.java b/src/main/java/tileentities/TE_ItemDistributionNode.java
index 4da94ea5f5..25d7b64680 100644
--- a/src/main/java/tileentities/TE_ItemDistributionNode.java
+++ b/src/main/java/tileentities/TE_ItemDistributionNode.java
@@ -5,7 +5,10 @@ import kekztech.ItemDistributionNetworkController;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.Constants;
public class TE_ItemDistributionNode extends TileEntity implements IConduit, IInventory {
@@ -31,38 +34,58 @@ private ItemDistributionNetworkController network;
@Override
public ItemStack getStackInSlot(int slot) {
- // TODO Auto-generated method stub
- return null;
+ return network.getStackInSlot(slot);
}
@Override
public ItemStack decrStackSize(int slot, int amount) {
- // TODO Auto-generated method stub
+
+ if(network.getStackInSlot(slot) != null) {
+ if(network.getStackInSlot(slot).stackSize == amount) {
+ final ItemStack itemStack = network.getStackInSlot(slot);
+ network.setStackInSlot(slot, null);
+ super.markDirty();
+ return itemStack;
+ } else {
+ final ItemStack itemStack = network.getStackInSlot(slot).splitStack(amount);
+ if(network.getStackInSlot(slot).stackSize == 0) {
+ network.setStackInSlot(slot, null);
+ }
+ super.markDirty();
+ return itemStack;
+ }
+ }
+
return null;
}
@Override
public ItemStack getStackInSlotOnClosing(int slot) {
- // TODO Auto-generated method stub
+ if(network.getStackInSlot(slot) != null) {
+ final ItemStack itemStack = network.getStackInSlot(slot);
+ network.setStackInSlot(slot, null);
+ return itemStack;
+ }
return null;
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack) {
- // TODO Auto-generated method stub
-
+ if(itemStack.stackSize > getInventoryStackLimit()) {
+ itemStack.stackSize = getInventoryStackLimit();
+ }
+ network.setStackInSlot(slot, itemStack);
+ super.markDirty();
}
@Override
public String getInventoryName() {
- // TODO Auto-generated method stub
- return null;
+ return network.getUUID().toString();
}
@Override
public boolean hasCustomInventoryName() {
- // TODO Auto-generated method stub
- return false;
+ return true;
}
@Override
@@ -88,9 +111,8 @@ private ItemDistributionNetworkController network;
}
@Override
- public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
- // TODO Auto-generated method stub
- return false;
+ public boolean isItemValidForSlot(int slot, ItemStack itemStack) {
+ return network.isInputSlot(slot) && network.getStackInSlot(slot).isItemEqual(itemStack);
}
}
diff --git a/src/main/java/kekztech/MultiBlockTooltipBuilder.java b/src/main/java/util/MultiBlockTooltipBuilder.java
index 6e2e7669a8..329220272a 100644
--- a/src/main/java/kekztech/MultiBlockTooltipBuilder.java
+++ b/src/main/java/util/MultiBlockTooltipBuilder.java
@@ -1,4 +1,4 @@
-package kekztech;
+package util;
import java.util.LinkedList;
import java.util.List;