b8edb0e130
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 6b34da8f SPIGOT-7467: Add getAddress to RemoteConsoleCommandSender CraftBukkit Changes: db4ba2897 SPIGOT-7467: Add getAddress to RemoteConsoleCommandSender 4f7ff4dec PR-1246: Add missing AbstractTestingBase to tests which need them f70a7b68d SPIGOT-7465, MC-264979: Fresh installations print NoSuchFileException for server.properties 8ef7afef6 PR-1240: Call BlockGrowEvent for vines that are growing on additional sides of an existing vine block Spigot Changes: d2eba2c8 Rebuild patches
52 Zeilen
3.3 KiB
Diff
52 Zeilen
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Fri, 14 Jan 2022 10:20:40 -0800
|
|
Subject: [PATCH] Sync offhand slot in menus
|
|
|
|
Menus don't add slots for the offhand, so on sendAllDataToRemote calls the
|
|
offhand slot isn't sent. This is not correct because you *can* put stuff into the offhand
|
|
by pressing the offhand swap item
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index a114d53e3bdd5889882d72ea46f109a91ad5d65b..dc5fda83a66afbfeb7897fc20b4742899d8aca08 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -340,6 +340,13 @@ public class ServerPlayer extends Player {
|
|
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public void sendOffHandSlotChange() {
|
|
+ ServerPlayer.this.connection.send(new ClientboundContainerSetSlotPacket(ServerPlayer.this.inventoryMenu.containerId, ServerPlayer.this.inventoryMenu.incrementStateId(), net.minecraft.world.inventory.InventoryMenu.SHIELD_SLOT, ServerPlayer.this.inventoryMenu.getSlot(net.minecraft.world.inventory.InventoryMenu.SHIELD_SLOT).getItem().copy()));
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public void sendSlotChange(AbstractContainerMenu handler, int slot, ItemStack stack) {
|
|
ServerPlayer.this.connection.send(new ClientboundContainerSetSlotPacket(handler.containerId, handler.incrementStateId(), slot, stack));
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
index b9e8d8b91b307e37900d0d2e8c823e63faed7cea..706b354ac9a1a6a4a1e61b2a109180d1dd22bbbd 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
|
|
@@ -200,6 +200,7 @@ public abstract class AbstractContainerMenu {
|
|
|
|
if (this.synchronizer != null) {
|
|
this.synchronizer.sendInitialData(this, this.remoteSlots, this.remoteCarried, this.remoteDataSlots.toIntArray());
|
|
+ this.synchronizer.sendOffHandSlotChange(); // Paper - update player's offhand since the offhand slot is not added to the slots for menus but can be changed by swapping from a menu slot
|
|
}
|
|
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/ContainerSynchronizer.java b/src/main/java/net/minecraft/world/inventory/ContainerSynchronizer.java
|
|
index ff4fa86f9408e83e505f7e27692d3423f8570c48..db6c290dcbb8f5cb502f85e154b42ac89350a460 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/ContainerSynchronizer.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/ContainerSynchronizer.java
|
|
@@ -6,6 +6,7 @@ import net.minecraft.world.item.ItemStack;
|
|
public interface ContainerSynchronizer {
|
|
void sendInitialData(AbstractContainerMenu handler, NonNullList<ItemStack> stacks, ItemStack cursorStack, int[] properties);
|
|
|
|
+ default void sendOffHandSlotChange() {} // Paper
|
|
void sendSlotChange(AbstractContainerMenu handler, int slot, ItemStack stack);
|
|
|
|
void sendCarriedChange(AbstractContainerMenu handler, ItemStack stack);
|