From 8dab80ff200998cdee40144c9855443cd17f366d Mon Sep 17 00:00:00 2001 From: kekzdealer Date: Sat, 12 Oct 2019 00:51:41 +0200 Subject: Made working UI base for nuclear reactor --- src/main/java/config/ConfigIO.java | 49 ++++++++++++++ .../container/Container_ModularNuclearReactor.java | 77 +++++++++++++--------- .../GUIContainer_ModularNuclearReactor.java | 70 +++++++++----------- src/main/java/kekztech/KekzCore.java | 9 +-- .../tileentities/GTMTE_ModularNuclearReactor.java | 9 ++- 5 files changed, 135 insertions(+), 79 deletions(-) create mode 100644 src/main/java/config/ConfigIO.java (limited to 'src/main/java') diff --git a/src/main/java/config/ConfigIO.java b/src/main/java/config/ConfigIO.java new file mode 100644 index 0000000000..4898c9b58d --- /dev/null +++ b/src/main/java/config/ConfigIO.java @@ -0,0 +1,49 @@ +package config; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; + +public class ConfigIO { + + private static final String CONFIG_PATH = "main/java/config/config.properties"; + private static final int CONFIG_SIZE = 0; + + private static Properties config; + + private ConfigIO() { + + } + + public static void load() { + config = new Properties(); + try { + config.load(new FileInputStream(CONFIG_PATH)); + } catch (IOException e) { + throw new IllegalStateException("Failed to load KekzTech config!"); + } + if(config.size() != CONFIG_SIZE) { + throw new IllegalStateException("KekzTech config is not expected size!"); + } + } + + @SuppressWarnings("unchecked") + public T get(String key, T valueType) { + if(config.size() != CONFIG_SIZE) { + throw new IllegalStateException("Tried to access config without loading it first"); + } + return (T) config.get((Object) key); + } + + public static void saveConfig() { + try { + config = (config == null) ? new Properties() : config; + config.setProperty("key", "value"); + config.store(new FileOutputStream(CONFIG_PATH), "Welcome to KekzTech's config file :)"); + } catch (IOException e) { + System.err.println("Failed to save changes to KekzTech config. Settings may be lost."); + } + } + +} diff --git a/src/main/java/container/Container_ModularNuclearReactor.java b/src/main/java/container/Container_ModularNuclearReactor.java index a8fdd5f25a..ec6270d705 100644 --- a/src/main/java/container/Container_ModularNuclearReactor.java +++ b/src/main/java/container/Container_ModularNuclearReactor.java @@ -1,19 +1,14 @@ package container; -import gregtech.api.gui.GT_Container_MultiMachine; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import reactor.ButtonSlot; -import tileentities.GTMTE_ModularNuclearReactor; -public class Container_ModularNuclearReactor extends GT_Container_MultiMachine { +public class Container_ModularNuclearReactor extends Container { - private final GTMTE_ModularNuclearReactor REACTOR_TILE; - private final IInventory PLAYER_INVENTORY; - private int nextSlotID = 0; private final Slot[] REACTOR_SLOTS = new Slot[54]; private final Slot SLOT_CONFIGURATION; @@ -24,28 +19,23 @@ public class Container_ModularNuclearReactor extends GT_Container_MultiMachine { private final Slot BUTTON_RESET; - public Container_ModularNuclearReactor(InventoryPlayer inventoryPlayer, IGregTechTileEntity reactorTile) { - - super(inventoryPlayer, reactorTile); - - this.REACTOR_TILE = (GTMTE_ModularNuclearReactor) reactorTile; - this.PLAYER_INVENTORY = inventoryPlayer; - + public Container_ModularNuclearReactor(IGregTechTileEntity te, EntityPlayer player) { + // Add the reactor chamber for(int x = 0; x < 9; x++) { for(int y = 0; y < 6; y++){ - REACTOR_SLOTS[nextSlotID] = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), (16 + 67 * x), (16 + 67 * y))); + REACTOR_SLOTS[nextSlotID] = super.addSlotToContainer(new Slot(te, getNextSlotID(), (16 + 67 * x), (16 + 67 * y))); } } // Add the configuration slot - SLOT_CONFIGURATION = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + SLOT_CONFIGURATION = super.addSlotToContainer(new Slot(te, getNextSlotID(), 0, 0)); // Add buttons (they're also slots) - BUTTON_EU_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_FLUID_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_CONDITION = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_CONFIGURE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_RESET = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + BUTTON_EU_MODE = super.addSlotToContainer(new ButtonSlot(te, getNextSlotID(), 0, 0)); + BUTTON_FLUID_MODE = super.addSlotToContainer(new ButtonSlot(te, getNextSlotID(), 0, 0)); + BUTTON_CONDITION = super.addSlotToContainer(new ButtonSlot(te, getNextSlotID(), 0, 0)); + BUTTON_CONFIGURE = super.addSlotToContainer(new ButtonSlot(te, getNextSlotID(), 0, 0)); + BUTTON_RESET = super.addSlotToContainer(new ButtonSlot(te, getNextSlotID(), 0, 0)); } @@ -54,17 +44,44 @@ public class Container_ModularNuclearReactor extends GT_Container_MultiMachine { return nextSlotID - 1; } + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw) + { + ItemStack stack = null; + Slot slot = (Slot)inventorySlots.get(slotRaw); + + if (slot != null && slot.getHasStack()) + { + 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 p_75145_1_) { return true; } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - if (REACTOR_TILE.getBaseMetaTileEntity().isServerSide() == false) { - return; - } - } } diff --git a/src/main/java/container/GUIContainer_ModularNuclearReactor.java b/src/main/java/container/GUIContainer_ModularNuclearReactor.java index 9bea52badc..1333799a78 100644 --- a/src/main/java/container/GUIContainer_ModularNuclearReactor.java +++ b/src/main/java/container/GUIContainer_ModularNuclearReactor.java @@ -2,52 +2,42 @@ package container; import org.lwjgl.opengl.GL11; -import gregtech.api.gui.GT_GUIContainerMetaTile_Machine; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import kekztech.KekzCore; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; -public class GUIContainer_ModularNuclearReactor extends GT_GUIContainerMetaTile_Machine { +public class GUIContainer_ModularNuclearReactor extends GuiContainer { - private final String resourceName; - private final ResourceLocation texture; - - public GUIContainer_ModularNuclearReactor(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, - String aName, String aTextureFile) { - - super(new Container_ModularNuclearReactor(aInventoryPlayer, aTileEntity), aTextureFile); - - this.resourceName = aTextureFile; - this.texture = new ResourceLocation(KekzCore.MODID, "textures/gui/" + resourceName); - } - - @SuppressWarnings("unchecked") - @Override - public void initGui() { - super.initGui(); - - // The parameters of GuiButton are (id, x, y, width, height, text) - super.buttonList.add(new GuiButton(1, 100, 200, 100, 20, "Hello")); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { - - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - final int x = (super.width - super.xSize); - final int y = (super.height - super.ySize); - - super.drawTexturedModalRect(x, y, 0, 0, super.xSize, super.ySize); - } - - @Override - protected void drawGuiContainerForegroundLayer(int par1, int par2) { - - } + private ResourceLocation texture = new ResourceLocation(KekzCore.MODID, "textures/gui/ReaktorGUI_background.png"); + + private InventoryPlayer inventory; + private IGregTechTileEntity te; + + public GUIContainer_ModularNuclearReactor(IGregTechTileEntity te, EntityPlayer player) + { + super(new Container_ModularNuclearReactor(te, player)); + inventory = player.inventory; + this.te = te; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) + { + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + drawTexturedModalRect(100, 100, 0, 0, 300, 200); + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) + { + + } } diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index 94aea7adc2..113f1a77c8 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -39,8 +39,9 @@ import util.Util; * */ @Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION, - dependencies = "required-after:IC2; " - + "required-after:gregtech" + dependencies = + "required-after:IC2; " + + "required-after:gregtech;" ) public class KekzCore { @@ -71,8 +72,8 @@ public class KekzCore { Block_TFFTStorageFieldBlockT2.getInstance().registerBlock(); Block_TFFTStorageFieldBlockT3.getInstance().registerBlock(); Block_TFFTStorageFieldBlockT4.getInstance().registerBlock(); - Block_TFFTMultiHatch.getInstance().registerBlock(); + // Register TileEntities GameRegistry.registerTileEntity(TE_TFFTMultiHatch.class, "kekztech_tfftmultihatch_tile"); } @@ -217,7 +218,7 @@ public class KekzCore { GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.StainlessSteel, 25), GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.RoseGold, 64), GT_OreDictUnificator.get(OrePrefixes.spring, Materials.Thorium, 12), - ItemList.Field_Generator_HV.get(1L, (Object[]) null), + ItemList.Field_Generator_HV.get(1L, (Object[]) null) }; GT_Values.RA.addAssemblerRecipe( tfftmultihatch, diff --git a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java index 6e19ab8ae3..e247e2fb56 100644 --- a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java +++ b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java @@ -1,8 +1,8 @@ package tileentities; +import container.GUIContainer_ModularNuclearReactor; import gregtech.api.GregTech_API; import gregtech.api.enums.Textures; -import gregtech.api.gui.GT_GUIContainer_MultiMachine; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -65,11 +65,10 @@ public class GTMTE_ModularNuclearReactor extends GT_MetaTileEntity_MultiBlockBas // TODO: Opening UI crashes server. Controller isn't craftable right now. public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), - "MultiblockDisplay.png"); - // In case someone ignores the warning... - /*return new GUIContainer_ModularNuclearReactor(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), + /*return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), "MultiblockDisplay.png");*/ + // In case someone ignores the warning... + return new GUIContainer_ModularNuclearReactor(aBaseMetaTileEntity, aPlayerInventory.player); } @Override -- cgit