mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-03 21:44:40 +01:00
2d09115b3a
Uses the new ANSIComponentSerializer introduced in Adventure 4.14.0 to serialize components when logging them via the ComponentLogger, or when sending messages to the console. This replaces the old solution which uses legacy jank and custom color conversions, with a new library that handles the conversion and config
51 lines
3.3 KiB
Diff
51 lines
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 53d4b897e5b1616133d35fd0df2e4624b76990ad..5fad40fa88f697108e42461c41012d5964ed7d75 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);
|