diff options
author | Sphyix <masifede2@gmail.com> | 2021-11-21 12:59:39 +0100 |
---|---|---|
committer | Sphyix <masifede2@gmail.com> | 2021-11-21 12:59:39 +0100 |
commit | 2901426a3fbaee614e245bc3d7f68dce9b1fd4a6 (patch) | |
tree | 5b7717983e0f53f94c1c67cb6d2186f452bb7e69 /src/main/java/gregtech/common/gui | |
parent | 8b9f24202072698748cad0b5f6d0b6c9f9ce2a42 (diff) | |
parent | abeecd2da02c7d38cb1c5b6e2fd5517c6f8a994b (diff) | |
download | GT5-Unofficial-2901426a3fbaee614e245bc3d7f68dce9b1fd4a6.tar.gz GT5-Unofficial-2901426a3fbaee614e245bc3d7f68dce9b1fd4a6.tar.bz2 GT5-Unofficial-2901426a3fbaee614e245bc3d7f68dce9b1fd4a6.zip |
Merge branch 'experimental' of https://github.com/Sphyix/GT5-Unofficial into experimental
Diffstat (limited to 'src/main/java/gregtech/common/gui')
5 files changed, 172 insertions, 10 deletions
diff --git a/src/main/java/gregtech/common/gui/GT_Container_MicrowaveEnergyTransmitter.java b/src/main/java/gregtech/common/gui/GT_Container_MicrowaveEnergyTransmitter.java index 0e5cc35e02..96e918e27b 100644 --- a/src/main/java/gregtech/common/gui/GT_Container_MicrowaveEnergyTransmitter.java +++ b/src/main/java/gregtech/common/gui/GT_Container_MicrowaveEnergyTransmitter.java @@ -138,25 +138,25 @@ public class GT_Container_MicrowaveEnergyTransmitter extends GT_ContainerMetaTil super.updateProgressBar(par1, par2); switch (par1) { case 100: - this.mTargetX = (this.mTargetX & 0xFFFF0000 | par2); + this.mTargetX = (this.mTargetX & 0xFFFF0000 | par2 & 0xFFFF); break; case 101: this.mTargetX = (this.mTargetX & 0xFFFF | par2 << 16); break; case 102: - this.mTargetY = (this.mTargetY & 0xFFFF0000 | par2); + this.mTargetY = (this.mTargetY & 0xFFFF0000 | par2 & 0xFFFF); break; case 103: this.mTargetY = (this.mTargetY & 0xFFFF | par2 << 16); break; case 104: - this.mTargetZ = (this.mTargetZ & 0xFFFF0000 | par2); + this.mTargetZ = (this.mTargetZ & 0xFFFF0000 | par2 & 0xFFFF); break; case 105: this.mTargetZ = (this.mTargetZ & 0xFFFF | par2 << 16); break; case 106: - this.mTargetD = (this.mTargetD & 0xFFFF0000 | par2); + this.mTargetD = (this.mTargetD & 0xFFFF0000 | par2 & 0xFFFF); break; case 107: this.mTargetD = (this.mTargetD & 0xFFFF | par2 << 16); diff --git a/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java b/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java new file mode 100644 index 0000000000..2e217f6b1e --- /dev/null +++ b/src/main/java/gregtech/common/gui/GT_Container_OutputHatch.java @@ -0,0 +1,123 @@ +package gregtech.common.gui; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.gui.GT_Container_BasicTank; +import gregtech.api.gui.GT_Slot_Output; +import gregtech.api.gui.GT_Slot_Render; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +import java.nio.ByteBuffer; + +public class GT_Container_OutputHatch extends GT_Container_BasicTank { + + private ByteBuffer buffer; + private String fluidName = ""; + private byte mMode; + + public GT_Container_OutputHatch(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { + super(aInventoryPlayer, aTileEntity); + } + + @Override + public void addSlots(InventoryPlayer aInventoryPlayer) { + addSlotToContainer(new Slot(mTileEntity, 0, 80, 17)); + addSlotToContainer(new GT_Slot_Output(mTileEntity, 1, 80, 53)); + addSlotToContainer(new GT_Slot_Render(mTileEntity, 2, 59, 42)); + addSlotToContainer(new GT_Slot_Render(mTileEntity, 3, 150, 42)); + } + + @Override + public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) { + if (aSlotIndex == 3 && aMouseclick < 2) { + GT_MetaTileEntity_Hatch_Output tHatch = (GT_MetaTileEntity_Hatch_Output) mTileEntity.getMetaTileEntity(); + FluidStack tReadyLockFluid = GT_Utility.getFluidForFilledItem(aPlayer.inventory.getItemStack(), true); + byte tMode = tHatch.getMode(); + // If player click the locker slot with empty or the same fluid cell, clear the lock fluid + if (tReadyLockFluid == null || (tMode >= 8 && tReadyLockFluid.getUnlocalizedName().equals(tHatch.getLockedFluidName()))) { + tHatch.setLockedFluidName(null); + GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Fluid Lock Cleared.")); + tHatch.mMode = 0; + fluidName = ""; + } + else { + tHatch.setLockedFluidName(tReadyLockFluid.getUnlocalizedName()); + GT_Utility.sendChatToPlayer(aPlayer, String.format(trans("151.4", "Sucessfully locked Fluid to %s"), tReadyLockFluid.getLocalizedName())); + tHatch.mMode = 9; + fluidName = tReadyLockFluid.getUnlocalizedName(); + } + } + return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer); + } + + @Override + public void addCraftingToCrafters(ICrafting clientHandle) { + buffer.putInt(0, fluidName.length()); + buffer.put(Integer.BYTES, mMode); + for (int i = 0; i < fluidName.length(); i++) { + buffer.putChar(Integer.BYTES + Character.BYTES * i + 1, fluidName.charAt(i)); + } + sendStateUpdate(clientHandle); + super.addCraftingToCrafters(clientHandle); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + if (buffer == null) { + buffer = ByteBuffer.allocate(256); + } + if(mTileEntity.isServerSide()) { + GT_MetaTileEntity_Hatch_Output tile = (GT_MetaTileEntity_Hatch_Output) mTileEntity.getMetaTileEntity(); + if (tile == null) return; + fluidName = tile.getLockedFluidName() == null ? "" : tile.getLockedFluidName(); + mMode = tile.getMode(); + buffer.putInt(0, fluidName.length()); + buffer.put(Integer.BYTES, mMode); + for (int i = 0; i < fluidName.length(); i++) { + buffer.putChar(Integer.BYTES + Character.BYTES * i + 1, fluidName.charAt(i)); + } + for (Object clientHandle : this.crafters) { + sendStateUpdate((ICrafting) clientHandle); + } + } + } + + private void sendStateUpdate(ICrafting clientHandle) { + final int bytes = Character.BYTES * fluidName.length() + Integer.BYTES + 1; + for (int i = 0; i < bytes; i++) { + clientHandle.sendProgressBarUpdate(this, i + 110, buffer.get(i)); + } + } + + @SideOnly(Side.CLIENT) + public void updateProgressBar(int index, int value) { + super.updateProgressBar(index, value); + index = index - 110; + if(index >= 0 && index < buffer.capacity()) { + buffer.put(index, (byte) value); + } + } + + @SideOnly(Side.CLIENT) + public String getFluidName() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < buffer.getInt(0); ++i) { + sb.append(buffer.getChar(i * Character.BYTES + Integer.BYTES + 1)); + } + byte mode = buffer.get(Integer.BYTES); + FluidStack tFluid = FluidRegistry.getFluidStack(sb.toString().replace("fluid.", "") + .replace("tile.", "").replace(".name", "").replace("ic2.fluid", "ic2").toLowerCase(), 1); + if (tFluid == null || mode < 8) return "Empty"; + else return tFluid.getLocalizedName().replace("fluid.", ""); + } +}
\ No newline at end of file diff --git a/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java b/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java index c50bb5ce52..22098a0350 100644 --- a/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java +++ b/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java @@ -53,10 +53,10 @@ public class GT_Container_QuantumChest extends GT_ContainerMetaTile_Machine { super.updateProgressBar(par1, par2); switch (par1) { case 100: - mContent = mContent & -65536 | par2; + mContent = mContent & 0xffff0000 | par2 & 0x0000ffff; break; case 101: - mContent = mContent & 65535 | par2 << 16; + mContent = mContent & 0x0000ffff | par2 << 16; break; } } diff --git a/src/main/java/gregtech/common/gui/GT_Container_Teleporter.java b/src/main/java/gregtech/common/gui/GT_Container_Teleporter.java index 2337a21c12..2b1bc3b584 100644 --- a/src/main/java/gregtech/common/gui/GT_Container_Teleporter.java +++ b/src/main/java/gregtech/common/gui/GT_Container_Teleporter.java @@ -141,25 +141,25 @@ public class GT_Container_Teleporter extends GT_ContainerMetaTile_Machine { super.updateProgressBar(par1, par2); switch (par1) { case 100: - this.mTargetX = (this.mTargetX & 0xFFFF0000 | par2); + this.mTargetX = (this.mTargetX & 0xFFFF0000 | par2 & 0xFFFF); break; case 101: this.mTargetX = (this.mTargetX & 0xFFFF | par2 << 16); break; case 102: - this.mTargetY = (this.mTargetY & 0xFFFF0000 | par2); + this.mTargetY = (this.mTargetY & 0xFFFF0000 | par2 & 0xFFFF); break; case 103: this.mTargetY = (this.mTargetY & 0xFFFF | par2 << 16); break; case 104: - this.mTargetZ = (this.mTargetZ & 0xFFFF0000 | par2); + this.mTargetZ = (this.mTargetZ & 0xFFFF0000 | par2 & 0xFFFF); break; case 105: this.mTargetZ = (this.mTargetZ & 0xFFFF | par2 << 16); break; case 106: - this.mTargetD = (this.mTargetD & 0xFFFF0000 | par2); + this.mTargetD = (this.mTargetD & 0xFFFF0000 | par2 & 0xFFFF); break; case 107: this.mTargetD = (this.mTargetD & 0xFFFF | par2 << 16); diff --git a/src/main/java/gregtech/common/gui/GT_GUIContainer_OutputHatch.java b/src/main/java/gregtech/common/gui/GT_GUIContainer_OutputHatch.java new file mode 100644 index 0000000000..1adf66c1b7 --- /dev/null +++ b/src/main/java/gregtech/common/gui/GT_GUIContainer_OutputHatch.java @@ -0,0 +1,39 @@ +package gregtech.common.gui; + +import gregtech.api.gui.GT_GUIContainerMetaTile_Machine; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.StatCollector; + +import static gregtech.api.enums.GT_Values.RES_PATH_GUI; + +public class GT_GUIContainer_OutputHatch extends GT_GUIContainerMetaTile_Machine { + + private final String mName; + + public GT_GUIContainer_OutputHatch(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName) { + super(new GT_Container_OutputHatch(aInventoryPlayer, aTileEntity), RES_PATH_GUI + "OutputHatch.png"); + mName = aName; + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) { + fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 4210752); + fontRendererObj.drawString(mName, 8, 6, 4210752); + if (mContainer != null) { + fontRendererObj.drawString("Liquid Amount", 10, 20, 16448255); + fontRendererObj.drawString(GT_Utility.parseNumberToString(((GT_Container_OutputHatch) mContainer).mContent), 10, 30, 16448255); + fontRendererObj.drawString("Locked Fluid", 101, 20, 16448255); + fontRendererObj.drawString(((GT_Container_OutputHatch) mContainer).getFluidName(), 101, 30, 16448255); + } + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { + super.drawGuiContainerBackgroundLayer(par1, par2, par3); + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + } +}
\ No newline at end of file |