mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 13:07:06 +01:00
36 lines
2.1 KiB
Diff
36 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Bjarne Koll <lynxplay101@gmail.com>
|
|
Date: Sun, 11 Jun 2023 18:45:10 +0200
|
|
Subject: [PATCH] Fix sendSignChange0's usage of SignText
|
|
|
|
Minecraft 1.20 introduced the SignText class that holds onto the text of
|
|
a single side of a minecraft sign.
|
|
This type is immutable and any methods on it produce an updated, new
|
|
instance of the class rather than mutating the called upon instance.
|
|
|
|
Spigot does not respect this change as it does not re-assign the
|
|
constructed sign text to the instance nor does it feed back said
|
|
instance to the virtual sign block entity.
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index c8ceaf9ba8e167db0138bbad134100d8717a326e..03bb444705916ffe0b9eb4b7496524dc3459ebe0 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -1027,11 +1027,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
private void sendSignChange0(Component[] components, Location loc, DyeColor dyeColor, boolean hasGlowingText) {
|
|
SignBlockEntity sign = new SignBlockEntity(CraftLocation.toBlockPosition(loc), Blocks.OAK_SIGN.defaultBlockState());
|
|
SignText text = sign.getFrontText();
|
|
- text.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
|
|
- text.setHasGlowingText(hasGlowingText);
|
|
+ // Paper start - fix sign change using immutable SignText type
|
|
+ text = text.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
|
|
+ text = text.setHasGlowingText(hasGlowingText);
|
|
for (int i = 0; i < components.length; i++) {
|
|
- text.setMessage(i, components[i]);
|
|
+ text = text.setMessage(i, components[i]);
|
|
}
|
|
+ sign.setText(text, true);
|
|
+ // Paper end - fix sign change using immutable SignText type
|
|
|
|
getHandle().connection.send(sign.getUpdatePacket());
|
|
// Paper end
|