From 3ae21285646b227a3c61fe2fef003682db2d9bd7 Mon Sep 17 00:00:00 2001 From: Skiftcha Date: Tue, 24 Nov 2020 08:21:52 +0300 Subject: [PATCH] sync with server --- .../team/chisel/client/gui/GuiChisel.java | 8 ---- .../team/chisel/client/gui/GuiScrollbar.java | 3 ++ .../inventory/InventoryChiselSelection.java | 5 ++- .../team/chisel/network/PacketHandler.java | 2 + .../network/message/MessageScrollUpdate.java | 42 +++++++++++++++++++ 5 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 src/main/java/team/chisel/network/message/MessageScrollUpdate.java diff --git a/src/main/java/team/chisel/client/gui/GuiChisel.java b/src/main/java/team/chisel/client/gui/GuiChisel.java index 017b755d..12b0c061 100644 --- a/src/main/java/team/chisel/client/gui/GuiChisel.java +++ b/src/main/java/team/chisel/client/gui/GuiChisel.java @@ -163,11 +163,7 @@ public class GuiChisel extends GuiContainer { @Override protected void mouseClicked(int xCoord, int yCoord, int btn) { if (scrollBar != null) { - int currentScroll = scrollBar.getCurrentScroll(); scrollBar.click(xCoord - guiLeft, yCoord - guiTop); - if (currentScroll != scrollBar.getCurrentScroll()) { - menu.updateItems(); - } } super.mouseClicked(xCoord, yCoord, btn); } @@ -178,11 +174,7 @@ public class GuiChisel extends GuiContainer { int i = Mouse.getEventDWheel(); if (i != 0 && scrollBar != null) { - int currentScroll = scrollBar.getCurrentScroll(); scrollBar.wheel(i); - if (currentScroll != scrollBar.getCurrentScroll()) { - menu.updateItems(); - } } } diff --git a/src/main/java/team/chisel/client/gui/GuiScrollbar.java b/src/main/java/team/chisel/client/gui/GuiScrollbar.java index 821b5030..87cb0a21 100644 --- a/src/main/java/team/chisel/client/gui/GuiScrollbar.java +++ b/src/main/java/team/chisel/client/gui/GuiScrollbar.java @@ -3,6 +3,8 @@ package team.chisel.client.gui; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import team.chisel.inventory.ContainerChisel; +import team.chisel.network.PacketHandler; +import team.chisel.network.message.MessageScrollUpdate; public class GuiScrollbar { public static final ResourceLocation TEXTURE_RESOURCE_LOCATION = new ResourceLocation("minecraft", "textures/gui/container/creative_inventory/tabs.png"); @@ -62,6 +64,7 @@ public class GuiScrollbar { private void setCurrentScroll(int scroll) { container.inventory.setCurrentScroll(scroll * rowSize); + PacketHandler.INSTANCE.sendToServer(new MessageScrollUpdate(scroll * rowSize)); } private int applyRange(int scroll) { diff --git a/src/main/java/team/chisel/inventory/InventoryChiselSelection.java b/src/main/java/team/chisel/inventory/InventoryChiselSelection.java index f205eaa3..80946745 100644 --- a/src/main/java/team/chisel/inventory/InventoryChiselSelection.java +++ b/src/main/java/team/chisel/inventory/InventoryChiselSelection.java @@ -31,7 +31,10 @@ public class InventoryChiselSelection implements IInventory { } public void setCurrentScroll(int currentScroll) { - this.currentScroll = currentScroll; + if (this.currentScroll != currentScroll) { + this.currentScroll = currentScroll; + updateItems(); + } } public int getCurrentScroll() { diff --git a/src/main/java/team/chisel/network/PacketHandler.java b/src/main/java/team/chisel/network/PacketHandler.java index b95ebe31..52e415ef 100644 --- a/src/main/java/team/chisel/network/PacketHandler.java +++ b/src/main/java/team/chisel/network/PacketHandler.java @@ -5,6 +5,7 @@ import team.chisel.network.message.MessageAutoChisel; import team.chisel.network.message.MessageChiselMode; import team.chisel.network.message.MessageChiselSound; import team.chisel.network.message.MessagePresentConnect; +import team.chisel.network.message.MessageScrollUpdate; import team.chisel.network.message.MessageSlotUpdate; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; @@ -21,5 +22,6 @@ public class PacketHandler { INSTANCE.registerMessage(MessageAutoChisel.Handler.class, MessageAutoChisel.class, id++, Side.CLIENT); INSTANCE.registerMessage(MessageChiselMode.Handler.class, MessageChiselMode.class, id++, Side.SERVER); INSTANCE.registerMessage(MessagePresentConnect.Handler.class, MessagePresentConnect.class, id++, Side.CLIENT); + INSTANCE.registerMessage(MessageScrollUpdate.Handler.class, MessageScrollUpdate.class, id++, Side.SERVER); } } \ No newline at end of file diff --git a/src/main/java/team/chisel/network/message/MessageScrollUpdate.java b/src/main/java/team/chisel/network/message/MessageScrollUpdate.java new file mode 100644 index 00000000..f565541a --- /dev/null +++ b/src/main/java/team/chisel/network/message/MessageScrollUpdate.java @@ -0,0 +1,42 @@ +package team.chisel.network.message; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.inventory.Container; +import team.chisel.inventory.ContainerChisel; + +public class MessageScrollUpdate implements IMessage { + + private int currentScroll; + + public MessageScrollUpdate() { + } + + public MessageScrollUpdate(int scroll) { + currentScroll = scroll; + } + + @Override + public void fromBytes(ByteBuf buf) { + currentScroll = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(currentScroll); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(MessageScrollUpdate message, MessageContext ctx) { + Container container = ctx.getServerHandler().playerEntity.openContainer; + if (container instanceof ContainerChisel) { + ((ContainerChisel) container).inventory.setCurrentScroll(message.currentScroll); + } + return null; + } + } +}