From 77d95dd8f9b67c05158e558125a75c78080a1ae6 Mon Sep 17 00:00:00 2001 From: IThundxr Date: Sun, 26 May 2024 19:12:05 -0400 Subject: [PATCH] Fix #72 in Brass Depositors --- changelog.md | 3 +-- .../BigStackSizeContainerSynchronizer.java} | 14 +++++++------- .../content/depositor/BrassDepositorMenu.java | 13 +++++++++++++ .../content/vendor/VendorMenu.java | 3 ++- .../registry/NumismaticsPackets.java | 6 +++--- ... => BigStackSizeContainerSetContentPacket.java} | 10 +++++----- ...ava => BigStackSizeContainerSetSlotPacket.java} | 10 +++++----- .../createnumismatics/util/PacketUtils.java | 4 ++-- 8 files changed, 38 insertions(+), 25 deletions(-) rename common/src/main/java/dev/ithundxr/createnumismatics/content/{vendor/VendorContainerSynchronizer.java => backend/BigStackSizeContainerSynchronizer.java} (66%) rename common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/{VendorContainerSetContentPacket.java => BigStackSizeContainerSetContentPacket.java} (82%) rename common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/{VendorContainerSetSlotPacket.java => BigStackSizeContainerSetSlotPacket.java} (80%) diff --git a/changelog.md b/changelog.md index 980034d2..ad541985 100644 --- a/changelog.md +++ b/changelog.md @@ -2,8 +2,7 @@ Numismatics 1.0.7 ------------------------------------------------------ Fixes -- example - +- Fix coins stacked above 127 visually disappearing on the client in Brass Depositors ------------------------------------------------------ Numismatics 1.0.6 ------------------------------------------------------ diff --git a/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorContainerSynchronizer.java b/common/src/main/java/dev/ithundxr/createnumismatics/content/backend/BigStackSizeContainerSynchronizer.java similarity index 66% rename from common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorContainerSynchronizer.java rename to common/src/main/java/dev/ithundxr/createnumismatics/content/backend/BigStackSizeContainerSynchronizer.java index 78464543..725fc58f 100644 --- a/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorContainerSynchronizer.java +++ b/common/src/main/java/dev/ithundxr/createnumismatics/content/backend/BigStackSizeContainerSynchronizer.java @@ -1,8 +1,8 @@ -package dev.ithundxr.createnumismatics.content.vendor; +package dev.ithundxr.createnumismatics.content.backend; import dev.ithundxr.createnumismatics.registry.NumismaticsPackets; -import dev.ithundxr.createnumismatics.registry.packets.VendorContainerSetContentPacket; -import dev.ithundxr.createnumismatics.registry.packets.VendorContainerSetSlotPacket; +import dev.ithundxr.createnumismatics.registry.packets.BigStackSizeContainerSetContentPacket; +import dev.ithundxr.createnumismatics.registry.packets.BigStackSizeContainerSetSlotPacket; import net.minecraft.core.NonNullList; import net.minecraft.network.protocol.game.ClientboundContainerSetDataPacket; import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; @@ -12,16 +12,16 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; -public class VendorContainerSynchronizer implements ContainerSynchronizer { +public class BigStackSizeContainerSynchronizer implements ContainerSynchronizer { private final ServerPlayer serverPlayer; - public VendorContainerSynchronizer(ServerPlayer serverPlayer) { + public BigStackSizeContainerSynchronizer(ServerPlayer serverPlayer) { this.serverPlayer = serverPlayer; } @Override public void sendInitialData(AbstractContainerMenu container, @NotNull NonNullList items, @NotNull ItemStack carriedItem, int[] initialData) { - NumismaticsPackets.PACKETS.sendTo(serverPlayer, new VendorContainerSetContentPacket(container.containerId, container.incrementStateId(), items, carriedItem)); + NumismaticsPackets.PACKETS.sendTo(serverPlayer, new BigStackSizeContainerSetContentPacket(container.containerId, container.incrementStateId(), items, carriedItem)); for (int i = 0; i < initialData.length; ++i) { sendDataChange(container, i, initialData[i]); @@ -30,7 +30,7 @@ public void sendInitialData(AbstractContainerMenu container, @NotNull NonNullLis @Override public void sendSlotChange(AbstractContainerMenu container, int slot, ItemStack itemStack) { - NumismaticsPackets.PACKETS.sendTo(serverPlayer, new VendorContainerSetSlotPacket(container.containerId, container.incrementStateId(), slot, itemStack)); + NumismaticsPackets.PACKETS.sendTo(serverPlayer, new BigStackSizeContainerSetSlotPacket(container.containerId, container.incrementStateId(), slot, itemStack)); } @Override diff --git a/common/src/main/java/dev/ithundxr/createnumismatics/content/depositor/BrassDepositorMenu.java b/common/src/main/java/dev/ithundxr/createnumismatics/content/depositor/BrassDepositorMenu.java index 8fa14d92..1b6894cd 100644 --- a/common/src/main/java/dev/ithundxr/createnumismatics/content/depositor/BrassDepositorMenu.java +++ b/common/src/main/java/dev/ithundxr/createnumismatics/content/depositor/BrassDepositorMenu.java @@ -1,6 +1,7 @@ package dev.ithundxr.createnumismatics.content.depositor; import com.simibubi.create.foundation.gui.menu.MenuBase; +import dev.ithundxr.createnumismatics.content.backend.BigStackSizeContainerSynchronizer; import dev.ithundxr.createnumismatics.content.backend.Coin; import dev.ithundxr.createnumismatics.content.bank.CardSlot; import dev.ithundxr.createnumismatics.content.coins.CoinDisplaySlot; @@ -10,9 +11,11 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerSynchronizer; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; @@ -130,4 +133,14 @@ public void clicked(int slotId, int button, @NotNull ClickType clickType, @NotNu } return ItemStack.EMPTY; } + + @Override + public void setSynchronizer(@NotNull ContainerSynchronizer synchronizer) { + if (player instanceof ServerPlayer serverPlayer) { + super.setSynchronizer(new BigStackSizeContainerSynchronizer(serverPlayer)); + return; + } + + super.setSynchronizer(synchronizer); + } } diff --git a/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorMenu.java b/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorMenu.java index 2b97c30e..bcf41263 100644 --- a/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorMenu.java +++ b/common/src/main/java/dev/ithundxr/createnumismatics/content/vendor/VendorMenu.java @@ -2,6 +2,7 @@ import com.simibubi.create.foundation.gui.menu.MenuBase; import dev.ithundxr.createnumismatics.content.backend.Coin; +import dev.ithundxr.createnumismatics.content.backend.BigStackSizeContainerSynchronizer; import dev.ithundxr.createnumismatics.content.bank.CardSlot; import dev.ithundxr.createnumismatics.content.coins.CoinDisplaySlot; import dev.ithundxr.createnumismatics.content.coins.CoinItem; @@ -164,7 +165,7 @@ public void clicked(int slotId, int button, @NotNull ClickType clickType, @NotNu @Override public void setSynchronizer(@NotNull ContainerSynchronizer synchronizer) { if (player instanceof ServerPlayer serverPlayer) { - super.setSynchronizer(new VendorContainerSynchronizer(serverPlayer)); + super.setSynchronizer(new BigStackSizeContainerSynchronizer(serverPlayer)); return; } diff --git a/common/src/main/java/dev/ithundxr/createnumismatics/registry/NumismaticsPackets.java b/common/src/main/java/dev/ithundxr/createnumismatics/registry/NumismaticsPackets.java index 0c6150fe..d9fb5de4 100644 --- a/common/src/main/java/dev/ithundxr/createnumismatics/registry/NumismaticsPackets.java +++ b/common/src/main/java/dev/ithundxr/createnumismatics/registry/NumismaticsPackets.java @@ -7,7 +7,7 @@ import dev.ithundxr.createnumismatics.registry.packets.*; public class NumismaticsPackets { - public static final PacketSet PACKETS = PacketSet.builder(Numismatics.MOD_ID, 2) // increment version on changes + public static final PacketSet PACKETS = PacketSet.builder(Numismatics.MOD_ID, 3) // increment version on changes .c2s(SliderStylePriceConfigurationPacket.class, SliderStylePriceConfigurationPacket::new) .c2s(BlazeBankerEditPacket.class, BlazeBankerEditPacket::new) @@ -18,8 +18,8 @@ public class NumismaticsPackets { .s2c(BankAccountLabelPacket.class, BankAccountLabelPacket::new) .s2c(VarIntContainerSetDataPacket.class, VarIntContainerSetDataPacket::new) - .s2c(VendorContainerSetSlotPacket.class, VendorContainerSetSlotPacket::new) - .s2c(VendorContainerSetContentPacket.class, VendorContainerSetContentPacket::new) + .s2c(BigStackSizeContainerSetSlotPacket.class, BigStackSizeContainerSetSlotPacket::new) + .s2c(BigStackSizeContainerSetContentPacket.class, BigStackSizeContainerSetContentPacket::new) .build(); } diff --git a/common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/VendorContainerSetContentPacket.java b/common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/BigStackSizeContainerSetContentPacket.java similarity index 82% rename from common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/VendorContainerSetContentPacket.java rename to common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/BigStackSizeContainerSetContentPacket.java index 4197f568..2c662583 100644 --- a/common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/VendorContainerSetContentPacket.java +++ b/common/src/main/java/dev/ithundxr/createnumismatics/registry/packets/BigStackSizeContainerSetContentPacket.java @@ -13,13 +13,13 @@ import java.util.List; -public class VendorContainerSetContentPacket implements S2CPacket { +public class BigStackSizeContainerSetContentPacket implements S2CPacket { private final int containerId; private final int stateId; private final List items; private final ItemStack carriedItem; - public VendorContainerSetContentPacket(int containerId, int stateId, List items, ItemStack carriedItem) { + public BigStackSizeContainerSetContentPacket(int containerId, int stateId, List items, ItemStack carriedItem) { this.containerId = containerId; this.stateId = stateId; this.items = NonNullList.withSize(items.size(), ItemStack.EMPTY); @@ -31,10 +31,10 @@ public VendorContainerSetContentPacket(int containerId, int stateId, List