From e77f1060662df1146a978ecab9a0845da1327d2c Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 31 Jul 2016 16:04:16 +0200 Subject: [PATCH] GUI fixes + add gui for network receiver --- .../refinedstorage/RefinedStorageGui.java | 1 + .../block/BlockNetworkReceiver.java | 16 ++++++++ .../container/ContainerNetworkReceiver.java | 11 ++++++ .../ContainerNetworkTransmitter.java | 29 ++++++++++++++ .../java/refinedstorage/gui/GuiHandler.java | 4 ++ .../gui/GuiNetworkReceiver.java | 37 ++++++++++++++++++ .../gui/GuiNetworkTransmitter.java | 2 + .../tile/TileNetworkReceiver.java | 3 +- .../tile/TileNetworkTransmitter.java | 10 ++++- .../assets/refinedstorage/lang/en_US.lang | 2 + .../assets/refinedstorage/lang/nl_NL.lang | 2 + .../textures/gui/network_receiver.png | Bin 0 -> 1789 bytes .../textures/gui/network_transmitter.png | Bin 0 -> 1951 bytes 13 files changed, 114 insertions(+), 3 deletions(-) create mode 100755 src/main/java/refinedstorage/container/ContainerNetworkReceiver.java create mode 100755 src/main/java/refinedstorage/gui/GuiNetworkReceiver.java create mode 100755 src/main/resources/assets/refinedstorage/textures/gui/network_receiver.png create mode 100755 src/main/resources/assets/refinedstorage/textures/gui/network_transmitter.png diff --git a/src/main/java/refinedstorage/RefinedStorageGui.java b/src/main/java/refinedstorage/RefinedStorageGui.java index 6fb65a6cc..dee62f6fa 100755 --- a/src/main/java/refinedstorage/RefinedStorageGui.java +++ b/src/main/java/refinedstorage/RefinedStorageGui.java @@ -20,4 +20,5 @@ public final class RefinedStorageGui { public static final int PROCESSING_PATTERN_ENCODER = 16; public static final int GRID_FILTER = 17; public static final int NETWORK_TRANSMITTER = 18; + public static final int NETWORK_RECEIVER = 19; } diff --git a/src/main/java/refinedstorage/block/BlockNetworkReceiver.java b/src/main/java/refinedstorage/block/BlockNetworkReceiver.java index 3a0208f8c..3f37bab2c 100755 --- a/src/main/java/refinedstorage/block/BlockNetworkReceiver.java +++ b/src/main/java/refinedstorage/block/BlockNetworkReceiver.java @@ -1,8 +1,15 @@ package refinedstorage.block; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import refinedstorage.RefinedStorage; +import refinedstorage.RefinedStorageGui; import refinedstorage.tile.TileNetworkReceiver; public class BlockNetworkReceiver extends BlockNode { @@ -10,6 +17,15 @@ public class BlockNetworkReceiver extends BlockNode { super("network_receiver"); } + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { + if (!world.isRemote) { + player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.NETWORK_RECEIVER, world, pos.getX(), pos.getY(), pos.getZ()); + } + + return true; + } + @Override public TileEntity createTileEntity(World world, IBlockState state) { return new TileNetworkReceiver(); diff --git a/src/main/java/refinedstorage/container/ContainerNetworkReceiver.java b/src/main/java/refinedstorage/container/ContainerNetworkReceiver.java new file mode 100755 index 000000000..3e94ad9eb --- /dev/null +++ b/src/main/java/refinedstorage/container/ContainerNetworkReceiver.java @@ -0,0 +1,11 @@ +package refinedstorage.container; + +import net.minecraft.entity.player.EntityPlayer; + +public class ContainerNetworkReceiver extends ContainerBase { + public ContainerNetworkReceiver(EntityPlayer player) { + super(player); + + addPlayerInventory(8, 50); + } +} diff --git a/src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java b/src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java index 576d78d56..f87d364b8 100755 --- a/src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java +++ b/src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java @@ -1,6 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import net.minecraftforge.items.SlotItemHandler; import refinedstorage.tile.TileNetworkTransmitter; @@ -12,4 +14,31 @@ public class ContainerNetworkTransmitter extends ContainerBase { addPlayerInventory(8, 55); } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + + Slot slot = getSlot(index); + + if (slot != null && slot.getHasStack()) { + stack = slot.getStack(); + + if (index == 0) { + if (!mergeItemStack(stack, 1, inventorySlots.size(), false)) { + return null; + } + } else if (!mergeItemStack(stack, 0, 1, false)) { + return null; + } + + if (stack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } } diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index be609c238..77803e66a 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -52,6 +52,8 @@ public class GuiHandler implements IGuiHandler { return new ContainerProcessingPatternEncoder(player, (TileProcessingPatternEncoder) tile); case RefinedStorageGui.NETWORK_TRANSMITTER: return new ContainerNetworkTransmitter(player, (TileNetworkTransmitter) tile); + case RefinedStorageGui.NETWORK_RECEIVER: + return new ContainerNetworkReceiver(player); default: return null; } @@ -111,6 +113,8 @@ public class GuiHandler implements IGuiHandler { return new GuiGridFilter(getGridFilterContainer(player, x)); case RefinedStorageGui.NETWORK_TRANSMITTER: return new GuiNetworkTransmitter((ContainerNetworkTransmitter) getContainer(ID, player, tile), (TileNetworkTransmitter) tile); + case RefinedStorageGui.NETWORK_RECEIVER: + return new GuiNetworkReceiver((ContainerNetworkReceiver) getContainer(ID, player, tile), (TileNetworkReceiver) tile); default: return null; } diff --git a/src/main/java/refinedstorage/gui/GuiNetworkReceiver.java b/src/main/java/refinedstorage/gui/GuiNetworkReceiver.java new file mode 100755 index 000000000..85425a2a2 --- /dev/null +++ b/src/main/java/refinedstorage/gui/GuiNetworkReceiver.java @@ -0,0 +1,37 @@ +package refinedstorage.gui; + +import refinedstorage.container.ContainerNetworkReceiver; +import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.tile.TileNetworkReceiver; + +public class GuiNetworkReceiver extends GuiBase { + private TileNetworkReceiver networkReceiver; + + public GuiNetworkReceiver(ContainerNetworkReceiver container, TileNetworkReceiver networkReceiver) { + super(container, 176, 131); + + this.networkReceiver = networkReceiver; + } + + @Override + public void init(int x, int y) { + addSideButton(new SideButtonRedstoneMode(networkReceiver)); + } + + @Override + public void update(int x, int y) { + } + + @Override + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/network_receiver.png"); + + drawTexture(x, y, 0, 0, width, height); + } + + @Override + public void drawForeground(int mouseX, int mouseY) { + drawString(7, 7, t("gui.refinedstorage:network_receiver")); + drawString(7, 39, t("container.inventory")); + } +} diff --git a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java index c2ea0f0be..d53fd3b8f 100755 --- a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java @@ -39,6 +39,8 @@ public class GuiNetworkTransmitter extends GuiBase { distance = t("gui.refinedstorage:network_transmitter.different_dimension"); } else if (networkTransmitter.getDistance() == -1) { distance = t("gui.refinedstorage:network_transmitter.missing_card"); + } else if (!networkTransmitter.isReceiverValid()) { + distance = t("gui.refinedstorage:network_transmitter.missing_receiver"); } else { distance = t("gui.refinedstorage:network_transmitter.distance", networkTransmitter.getDistance()); } diff --git a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java index 58a05c267..728c7abc1 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java @@ -2,6 +2,7 @@ package refinedstorage.tile; import net.minecraft.inventory.Container; import refinedstorage.RefinedStorage; +import refinedstorage.container.ContainerNetworkReceiver; public class TileNetworkReceiver extends TileNode { public TileNetworkReceiver() { @@ -19,6 +20,6 @@ public class TileNetworkReceiver extends TileNode { @Override public Class getContainer() { - return null; + return ContainerNetworkReceiver.class; } } diff --git a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java index 20d7fd925..1a731a7a9 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java @@ -39,6 +39,7 @@ public class TileNetworkTransmitter extends TileNode { // Used clientside private int distance; private boolean inSameDimension; + private boolean receiverValid; public TileNetworkTransmitter() { rebuildOnUpdateChange = true; @@ -52,8 +53,7 @@ public class TileNetworkTransmitter extends TileNode { return canUpdate() && receiver != null && isInSameDimension() - && worldObj.getTileEntity(receiver) instanceof TileNetworkReceiver - && ((TileNetworkReceiver) worldObj.getTileEntity(receiver)).canUpdate(); + && isReceiverValid(); } @Override @@ -78,6 +78,7 @@ public class TileNetworkTransmitter extends TileNode { buf.writeInt((receiver != null && isInSameDimension()) ? getDistance() : -1); buf.writeBoolean(isInSameDimension()); + buf.writeBoolean(isReceiverValid()); } @Override @@ -86,6 +87,7 @@ public class TileNetworkTransmitter extends TileNode { distance = buf.readInt(); inSameDimension = buf.readBoolean(); + receiverValid = buf.readBoolean(); } @Override @@ -121,4 +123,8 @@ public class TileNetworkTransmitter extends TileNode { public boolean isInSameDimension() { return worldObj.isRemote ? inSameDimension : worldObj.provider.getDimension() == receiverDimension; } + + public boolean isReceiverValid() { + return worldObj.isRemote ? receiverValid : (receiver != null && isInSameDimension() && worldObj.getTileEntity(receiver) instanceof TileNetworkReceiver && ((TileNetworkReceiver) worldObj.getTileEntity(receiver)).canUpdate()); + } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 1a480b5ea..d50ddd128 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -34,7 +34,9 @@ gui.refinedstorage:grid_filter=Grid Filter gui.refinedstorage:network_transmitter=Network Transmitter gui.refinedstorage:network_transmitter.distance=%d blocks gui.refinedstorage:network_transmitter.missing_card=Missing Network Card +gui.refinedstorage:network_transmitter.missing_receiver=Receiver not found gui.refinedstorage:network_transmitter.different_dimension=Different dimension +gui.refinedstorage:network_receiver=Network Receiver misc.refinedstorage:energy_stored=%d / %d RS misc.refinedstorage:energy_usage=Usage: %d RS/t diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index b96c9f100..7e06994ae 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -34,7 +34,9 @@ gui.refinedstorage:grid_filter=Rooster Filter gui.refinedstorage:network_transmitter=Netwerkzender gui.refinedstorage:network_transmitter.distance=%d blokken gui.refinedstorage:network_transmitter.missing_card=Geen Netwerkkaart +gui.refinedstorage:network_transmitter.missing_receiver=Ontvanger niet gevonden gui.refinedstorage:network_transmitter.different_dimension=Andere dimensie +gui.refinedstorage:network_receiver=Netwerkontvanger misc.refinedstorage:energy_stored=%d / %d RS misc.refinedstorage:energy_usage=Vebruik: %d RS/t diff --git a/src/main/resources/assets/refinedstorage/textures/gui/network_receiver.png b/src/main/resources/assets/refinedstorage/textures/gui/network_receiver.png new file mode 100755 index 0000000000000000000000000000000000000000..1f102b2c000fc4cd5cf3bcd13104b00a0dbbb0de GIT binary patch literal 1789 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?(9qEC?(Sp9j{X1tA1E>kMnhnPgh10{aTQRmDGBlm z1}6TI3>bpHv#SE5owL9rvY3H^?=T269?xHq0u+=iag8Vm&QB{TPb^AhC`ioAE78kK zEm1JhGte_MSj)wAfPsN2)YHW=q$2L^?TcBr9VA);ulC*lKk@FanNf=2$KLpFKJ$}< z=S}Mk85TyzzTbauEdTwh?|0$t<&2HV%kTgHwlVI3{(<9qv3jRjngnh3|1< zpmg};r8ElzL&KfwNDyzr@_YdxRrEd;RNy(x+XpPv7*6b+4lL6caBF1x@Vff?o167^ zGud|3z5aID52P9dc7ERkVF1Z>^ZzgSzjS_?5zmD8dg;yg%QmI!&-Gz`;#+O@!)Sjw z6I3D0G7#6`yK4H?lLij^cF*ChyM1!r-V!6;3FdEaJ~;j79w$^i%pV}`fjiUZgsLBA zsD}FJKf|ZDUvobE&inRe>Ez6YKU*u!ez3pYD-6}@@NTaTl*!PrbN$ZMer=53I2ao8 z8cuT@_*n7IY%Tkb&y&;NUod3+P{CdH^7AEa>53_pxKg{{R0Ebk8Ul z4FS4^!2D+krl5>c666;QOnxI7Fa&>RR|N(ER3EKyiIT^vIy;@;l6ohNK4;hK1v>8X!q zI@1(qFU8zR-|KfJ&dD*-xZ^UhJ|}y<>JhhM!?`sPAw9F&6u({$*k`h&)Si`N$vnIN zRiSYS%o|=Uy}4$G1KWkW)*L|lFBFS&11ScF^7jfL>U^vYkV;@K$lw3;nYLM&%7LQw zdy6ODKk>3(bT#{gy1#q&tC%{@zBe|G#)} z!*l&}e*W@X3jP#}GQ`>Lt}ptuqSN0#jPb$W+1=gh)Auo~{_^h6;p1U;^}G#k|D;!B zF_?rZ94Pv&EK$GpXIHN%#|3wwvm55^jsQ{&47;k?LFIJSyCe|B@Zz1U2*(2Xo|#cu z%eCS=*)FU;5c~StI*=3?z|?^`e|{?)t&QbmyHGuS<$-eRTPvH_xiG(2@|Mfy%<)*T zaUf-1?i^(TD+duB)sur?c^Nd^+wH@;@AgGM*%DPL2ld?W2Z?s?Kvf4AEO@Rb24gcg z+?hQmD7=aB7c>rD^Ecev>&Lq9{#A(P`?+PTbF@N)4hi=O_4$K{`T3Yn0xk@ zyqEJ5WcVra<
-eLu(_c1wSOEW~>X1H*Rt>Ky(! Z_A^F^F8jVcL&XymhMul|F6*2UngBSpgW&)G literal 0 HcmV?d00001