geforkt von Mirrors/Paper
9147456fc9
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 CraftBukkit Changes: ab8ace685 SPIGOT-7236: Bone meal doesn't increase use statistic 7dcb59b8e Avoid switch on material in previous commit Spigot Changes: 19641c75 SPIGOT-7235: World.Spigot#strikeLightningEffect doesn't do anything
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 85570b5c362033075114ed86746f23c24251827d..7d6d3c8556033d289fdadc489e73fba478fce41a 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -290,6 +290,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 4e471b19f1053bf6fd0979d4446a1361edf25aa2..95ba37458e8154dbce6a8590508840d694fcbed1 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);
|