From a44f31279be834eb3de5792cf77cd2f2e7bf9aa2 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 30 Oct 2023 21:13:35 +0100 Subject: [PATCH] wood burner GUI --- .../container/ContainerMachineWoodBurner.java | 103 ++++++++++++++++++ .../inventory/gui/GUIMachineWoodBurner.java | 79 ++++++++++++++ .../inventory/recipes/ArcWelderRecipes.java | 4 +- .../machine/TileEntityMachineWoodBurner.java | 40 ++++++- .../gui/generators/gui_wood_burner.png | Bin 3916 -> 6686 bytes .../gui/generators/gui_wood_burner_alt.png | Bin 0 -> 4612 bytes 6 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java create mode 100644 src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java new file mode 100644 index 000000000..9814bb422 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineWoodBurner.java @@ -0,0 +1,103 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; + +public class ContainerMachineWoodBurner extends Container { + + protected TileEntityMachineWoodBurner burner; + + public ContainerMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner burner) { + this.burner = burner; + this.burner.openInventory(); + + //Fuel + this.addSlotToContainer(new Slot(burner, 0, 26, 18)); + //Ashes + this.addSlotToContainer(new SlotTakeOnly(burner, 1, 26, 54)); + //Fluid ID + this.addSlotToContainer(new Slot(burner, 2, 98, 54)); + //Fluid Container + this.addSlotToContainer(new Slot(burner, 3, 98, 18)); + this.addSlotToContainer(new SlotTakeOnly(burner, 4, 98, 36)); + //Battery + this.addSlotToContainer(new Slot(burner, 5, 143, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(originalStack, 6, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else { + + if(stack.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(originalStack, 5, 6, false)) { + return null; + } + } else if(stack.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(originalStack, 2, 3, false)) { + return null; + } + } else if(TileEntityFurnace.isItemFuel(stack)) { + if(!this.mergeItemStack(originalStack, 2, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(originalStack, 3, 4, false)) { + return null; + } + } + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return burner.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.burner.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java new file mode 100644 index 000000000..8395bef67 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -0,0 +1,79 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineWoodBurner; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineWoodBurner extends GuiInfoContainer { + + private TileEntityMachineWoodBurner burner; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_wood_burner_alt.png"); + + public GUIMachineWoodBurner(InventoryPlayer invPlayer, TileEntityMachineWoodBurner tedf) { + super(new ContainerMachineWoodBurner(invPlayer, tedf)); + burner = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 18, 16, 34, burner.power, burner.maxPower); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 53 <= x && guiLeft + 53 + 16 > x && guiTop + 17 < y && guiTop + 17 + 15 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + + if(guiLeft + 46 <= x && guiLeft + 46 + 30 > x && guiTop + 37 < y && guiTop + 37 + 14 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("switch", false); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, burner.xCoord, burner.yCoord, burner.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.burner.hasCustomInventoryName() ? this.burner.getInventoryName() : I18n.format(this.burner.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(burner.liquidBurn) { + drawTexturedModalRect(guiLeft + 16, guiTop + 17, 176, 52, 60, 54); + drawTexturedModalRect(guiLeft + 79, guiTop + 17, 176, 106, 36, 54); + } + + if(burner.isOn) { + drawTexturedModalRect(guiLeft + 53, guiTop + 17, 196, 0, 16, 15); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 5a6152721..5aea7661e 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -30,9 +30,9 @@ public class ArcWelderRecipes extends SerializableRecipe { @Override public void registerDefaults() { - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 200L, + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 200L, new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor), 100, 400L, + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 250), diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 57c6bf6c1..3fb872181 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -1,8 +1,11 @@ package com.hbm.tileentity.machine; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.gui.GUIMachineWoodBurner; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; @@ -16,7 +19,7 @@ import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 100_000; @@ -80,19 +83,50 @@ public class TileEntityMachineWoodBurner extends TileEntityMachinePolluting impl } NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("burnTime", burnTime); + data.setInteger("maxBurnTime", maxBurnTime); + data.setBoolean("isOn", isOn); + data.setBoolean("liquidBurn", liquidBurn); this.networkPack(data, 25); } } + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.isOn = nbt.getBoolean("isOn"); + this.liquidBurn = nbt.getBoolean("liquidBurn"); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("toggle")) { + this.isOn = !this.isOn; + this.markChanged(); + } + if(data.hasKey("switch")) { + this.liquidBurn = !this.liquidBurn; + this.markChanged(); + } + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new ContainerMachineWoodBurner(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + return new GUIMachineWoodBurner(player.inventory, this); } @Override diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner.png index 9189989e73dd9c2c65d0373e2d531c2bce8a384a..08d2f02dd8a08663d42bf8afe3ed4277541d1675 100644 GIT binary patch literal 6686 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 DTb>Lc diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_wood_burner_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..51c355b507d9946206c2ee4404f4fbec2740838d GIT binary patch literal 4612 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 DTYPrE literal 0 HcmV?d00001