diff options
author | Christina Berchtold <kekzdealer@gmail.com> | 2019-11-09 18:13:35 +0100 |
---|---|---|
committer | Christina Berchtold <kekzdealer@gmail.com> | 2019-11-09 18:13:35 +0100 |
commit | 7461f6a5173fdc5b3a20dc413ea7ce658fb820f2 (patch) | |
tree | baedb5f7e2cfd610bb79c3557a7bfc494c78b348 /src/main/java | |
parent | a76478105d61d7be330c63fd247f7fbb66da9d9a (diff) | |
download | GT5-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')
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; |