Updated Upstream (Bukkit/CraftBukkit)

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:
69fa4695 Add some missing deprecation annotations
f850da2e Update Maven plugins/versions
8d8400db Use regular compiler seeing as ECJ doesn't support Java 21 JRE
c29e1688 Revert "BUILDTOOLS-676: Downgrade Maven compiler version"
07bce714 SPIGOT-7355: More field renames and fixes
6a8ea764 Fix bad merge in penultimate commit
50a7920c Fix imports in previous commit
83640dd1 PR-995: Add required feature to MinecraftExperimental for easy lookups
fc1f96cf BUILDTOOLS-676: Downgrade Maven compiler version

CraftBukkit Changes:
90f1059ba Fix item placement
661afb43c SPIGOT-7633: Clearer error message for missing particle data
807b465b3 SPIGOT-7634: Armadillo updates infrequently
590cf09a8 Fix unit tests always seeing Mojang server as unavailable
7c7ac5eb2 SPIGOT-7636: Fix clearing ItemMeta
4a72905cf SPIGOT-7635: Fix Player#transfer and cookie methods
ebb50e136 Fix incorrect Vault implementation
b33fed8b7 Update Maven plugins/versions
6f00f0608 SPIGOT-7632: Control middle clicking chest does not copy contents
db821f405 Use regular compiler seeing as ECJ doesn't support Java 21 JRE
8a2976737 Revert "BUILDTOOLS-676: Downgrade Maven compiler version"
0297f87bb SPIGOT-7355: More field renames and fixes
2d03bdf6a SPIGOT-7629: Fix loading banner patterns
e77951fac Fix equality of deserialized display names
c66f3e4fd SPIGOT-7631: Fix deserialisation of BlockStateMeta
9c2c7be8d SPIGOT-7630: Fix crash saving unticked leashed entities
8c1e7c841 PR-1384: Disable certain PlayerProfile tests, if Mojang's services or internet are not available
ced93d572 SPIGOT-7626: sendSignChange() has no effect
c77362cae SPIGOT-7625: ItemStack with lore cannot be serialized in 1.20.5
ff2004387 SPIGOT-7620: Fix server crash when hoppers transfer items to double chests
8b4abeb03 BUILDTOOLS-676: Downgrade Maven compiler version
This commit is contained in:
Nassim Jahnke 2024-04-25 23:21:18 +02:00
parent ed790385ed
commit 2641c02193
No known key found for this signature in database
GPG key ID: EF6771C01F6EF02F
247 changed files with 947 additions and 970 deletions

View file

@ -2714,10 +2714,10 @@ index 5631621f16fdda723cb3e1de7d3a6646d768a863..4277f7c477efe01d4ef917515178b260
this.chatVisibility = clientOptions.chatVisibility();
this.canChatColor = clientOptions.chatColors();
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d08e78617 100644
index 6f17aeae2941c43205fa6db5950d65f510774104..26b8a69a528db8a836b138a2a223c385508ce2c4 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -55,7 +55,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -66,7 +66,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private static final Component TIMEOUT_DISCONNECTION_MESSAGE = Component.translatable("disconnect.timeout");
static final Component DISCONNECT_UNEXPECTED_QUERY = Component.translatable("multiplayer.disconnect.unexpected_query_response");
protected final MinecraftServer server;
@ -2726,7 +2726,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
private final boolean transferred;
private long keepAliveTime;
private boolean keepAlivePending;
@@ -64,6 +64,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -75,6 +75,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private boolean closed = false;
private int latency;
private volatile boolean suspendFlushingOnServerThread = false;
@ -2734,7 +2734,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit
this.server = minecraftserver;
@@ -177,6 +178,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -188,6 +189,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
ServerCommonPacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack {} rejection", this.playerProfile().getName(), packet.id());
this.disconnect(Component.translatable("multiplayer.requiredTexturePrompt.disconnect"));
}
@ -2753,7 +2753,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packet.id(), PlayerResourcePackStatusEvent.Status.values()[packet.action().ordinal()])); // CraftBukkit
}
@@ -265,12 +278,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -276,12 +289,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
// CraftBukkit start
@Deprecated
@ -2775,7 +2775,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
// CraftBukkit start - fire PlayerKickEvent
if (this.processedDisconnect) {
return;
@@ -279,7 +298,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -290,7 +309,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
Waitable waitable = new Waitable() {
@Override
protected Object evaluate() {
@ -2784,7 +2784,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
return null;
}
};
@@ -296,9 +315,9 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -307,9 +326,9 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
return;
}
@ -2796,7 +2796,7 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
if (this.cserver.getServer().isRunning()) {
this.cserver.getPluginManager().callEvent(event);
@@ -310,7 +329,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -321,7 +340,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
this.player.kickLeaveMessage = event.getLeaveMessage(); // CraftBukkit - SPIGOT-3034: Forward leave message to PlayerQuitEvent
// Send the possibly modified leave message
@ -2806,10 +2806,10 @@ index 864fbf941d3aecea9e4637199784a0abf7ab4ba9..70a22e140050273ae420e8dc414eab6d
this.connection.send(new ClientboundDisconnectPacket(ichatbasecomponent), PacketSendListener.thenRun(() -> {
diff --git a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
index 5d3825781ee19ae2a746e98ff66f6392c35dd2ce..d13c57d5aa908e4c6ec835c78e6506a98033fb6d 100644
index bd7107279ca004f35c932e5d6e82f8302ec781ae..970d1ddf0a014b47b0ac97440489706137324991 100644
--- a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java
@@ -106,6 +106,7 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis
@@ -100,6 +100,7 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis
@Override
public void handleClientInformation(ServerboundClientInformationPacket packet) {
this.clientInformation = packet.information();
@ -2818,18 +2818,18 @@ index 5d3825781ee19ae2a746e98ff66f6392c35dd2ce..d13c57d5aa908e4c6ec835c78e6506a9
@Override
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f407235e92 100644
index d17358e391060c674d0b83b1619e0de8190c6791..86d0207a36df67bf0554193bf050e035aeecc5c9 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -45,6 +45,7 @@ import net.minecraft.nbt.CompoundTag;
@@ -44,6 +44,7 @@ import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
import net.minecraft.network.ConnectionProtocol;
import net.minecraft.network.TickablePacketListener;
+import net.minecraft.network.chat.ChatDecorator;
import net.minecraft.network.chat.ChatType;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.LastSeenMessages;
@@ -196,6 +197,8 @@ import net.minecraft.world.phys.shapes.VoxelShape;
@@ -195,6 +196,8 @@ import net.minecraft.world.phys.shapes.VoxelShape;
import org.slf4j.Logger;
// CraftBukkit start
@ -2838,7 +2838,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
import com.mojang.datafixers.util.Pair;
import java.util.Arrays;
import java.util.concurrent.ExecutionException;
@@ -1717,9 +1720,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1711,9 +1714,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
*/
this.player.disconnect();
@ -2853,7 +2853,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
}
// CraftBukkit end
this.player.getTextFilter().leave();
@@ -1780,10 +1785,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1774,10 +1779,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
CompletableFuture<FilteredText> completablefuture = this.filterTextPacket(playerchatmessage.signedContent()).thenApplyAsync(Function.identity(), this.server.chatExecutor); // CraftBukkit - async chat
@ -2867,7 +2867,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
this.broadcastChatMessage(playerchatmessage1);
});
@@ -2003,7 +2008,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1997,7 +2002,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.handleCommand(s);
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) {
// Do nothing, this is coming from a plugin
@ -2884,7 +2884,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
Player player = this.getCraftPlayer();
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(this.server));
String originalFormat = event.getFormat(), originalMessage = event.getMessage();
@@ -2306,7 +2319,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2300,7 +2313,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void sendPlayerChatMessage(PlayerChatMessage message, ChatType.Bound params) {
// CraftBukkit start - SPIGOT-7262: if hidden we have to send as disguised message. Query whether we should send at all (but changing this may not be expected).
@ -2897,7 +2897,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
this.sendDisguisedChatMessage(message.decoratedContent(), params);
return;
}
@@ -3000,6 +3017,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2994,6 +3011,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleClientInformation(ServerboundClientInformationPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
this.player.updateOptions(packet.information());
@ -2906,7 +2906,7 @@ index c72c5d0fa96e92539a0e7175a161ed2b8d99d629..ad965076a31b947afc65fdf3a03972f4
@Override
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index a9e275f80150eab7d048154429d21d0e92510532..eb69b213a75df72dd7b37f41d86564f7fc692e32 100644
index 47a1c62dd6f927cb01f679a597d1526bbca9e433..7beda9a16addb2dbcd4bdc45e58b343e91323af5 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -331,7 +331,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
@ -3201,7 +3201,7 @@ index ed54c81a3269360acce674aa4e1d54ccb2461841..c9c849534c3998cfcab7ddcb12a71ccb
}
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 2535cbf50087a4631c4d1027a61b173121d729bc..04d8cfd0ef3cb9c60e93136376ae90144f3cb7ce 100644
index 2b8b220bf1e132b230abe14770da53de84db9818..7ca60db3a639e68456933f8e5af900dc4aade575 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -164,7 +164,16 @@ public final class ItemStack implements DataComponentHolder {
@ -3465,7 +3465,7 @@ index 9b299f74336ad0efecd05a4b771ac58549d5fb6a..9e34d3f009184981e4f4cd34b0c0c75b
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index a1b34778332472c09f3191bc72f9eb3df5e54ba4..c793bae3d7c6da5014862c98b08fc3fa2374866d 100644
index 6ce2b09c4bb7153c960a7eed865296a9c93dd1cb..5bbbb9ee266879291e4ff56ad2ee39aa6151bfff 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -162,6 +162,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@ -3519,7 +3519,7 @@ index a1b34778332472c09f3191bc72f9eb3df5e54ba4..c793bae3d7c6da5014862c98b08fc3fa
private static Map<String, GameRules.Key<?>> gamerules;
public static synchronized Map<String, GameRules.Key<?>> getGameRulesNMS() {
@@ -2129,5 +2166,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2125,5 +2162,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public void setSendViewDistance(final int viewDistance) {
throw new UnsupportedOperationException("Not implemented yet");
}
@ -4059,10 +4059,10 @@ index 55945b83a5426b352bad9507cc9e94afb1278032..9ea1537408ff2d790747b6e5a681d917
public boolean isOp() {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b39e51559 100644
index 13c3ac65f26e6cfc55ee3538b6308ef93f9936aa..aa9049ed3d39ab862978e311ec0bb0dceb648a8a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -385,14 +385,40 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -386,14 +386,40 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getDisplayName() {
@ -4103,7 +4103,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
@Override
public String getPlayerListName() {
return this.getHandle().listName == null ? this.getName() : CraftChatMessage.fromComponent(this.getHandle().listName);
@@ -404,6 +430,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -405,6 +431,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
name = this.getName();
}
this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name);
@ -4111,7 +4111,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) {
player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle()));
@@ -411,42 +438,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -412,42 +439,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@ -4163,7 +4163,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
this.getHandle().connection.send(packet);
}
@@ -478,6 +505,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -479,6 +506,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.disconnect(message == null ? "" : message);
}
@ -4187,7 +4187,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
@Override
public void setCompassTarget(Location loc) {
Preconditions.checkArgument(loc != null, "Location cannot be null");
@@ -774,6 +818,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -775,6 +819,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
@ -4212,7 +4212,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
@Override
public void sendSignChange(Location loc, String[] lines) {
this.sendSignChange(loc, lines, DyeColor.BLACK);
@@ -797,6 +859,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -798,6 +860,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
Component[] components = CraftSign.sanitizeLines(lines);
@ -4221,19 +4221,10 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
+ }
+
+ private void sendSignChange0(Component[] components, Location loc, DyeColor dyeColor, boolean hasGlowingText) {
SignBlockEntity sign = new SignBlockEntity(CraftLocation.toBlockPosition(loc), Blocks.OAK_SIGN.defaultBlockState());
sign.setLevel(this.getHandle().level());
SignText text = sign.getFrontText();
@@ -807,7 +874,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
sign.setText(text, true);
- this.getHandle().connection.send(sign.getUpdatePacket());
+ getHandle().connection.send(sign.getUpdatePacket());
+ // Paper end
}
@Override
SignBlockEntity sign = new SignBlockEntity(CraftLocation.toBlockPosition(loc), Blocks.OAK_SIGN.defaultBlockState());
SignText text = sign.getFrontText();
text = text.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData()));
@@ -1805,7 +1873,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
@ -4312,7 +4303,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
@Override
public void removeResourcePack(UUID id) {
Preconditions.checkArgument(id != null, "Resource pack id cannot be null");
@@ -2272,6 +2393,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2268,6 +2389,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return (this.getHandle().requestedViewDistance() == 0) ? Bukkit.getViewDistance() : this.getHandle().requestedViewDistance();
}
@ -4325,7 +4316,7 @@ index 9d2af8b74e33888df33425627b286d32c95753d6..2b885e00840171777c08b5f0ffe2488b
@Override
public int getPing() {
return this.getHandle().connection.latency();
@@ -2322,6 +2449,249 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2318,6 +2445,249 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().allowsListing();
}
@ -4976,7 +4967,7 @@ index 61ad00c38cfef8a1de61b4597ec1042428feccf4..4c308de19e26b228151dc05606dd6339
if (this.pages != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java
index 6691950f6ffb8b6bf70d5aaf011ec9b476974d19..31054e7e1d69bfeeb2ddee5bfeb8ee500d9c2efc 100644
index 9c57b883783145ad4483481a2c2e7f0f188cd174..3795207a024ddf2e93baa09bcce56a1253eec8ed 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java
@@ -2,7 +2,7 @@ package org.bukkit.craftbukkit.inventory;
@ -4988,7 +4979,7 @@ index 6691950f6ffb8b6bf70d5aaf011ec9b476974d19..31054e7e1d69bfeeb2ddee5bfeb8ee50
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -342,7 +342,7 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta {
@@ -346,7 +346,7 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta {
}
@Override
@ -4997,7 +4988,7 @@ index 6691950f6ffb8b6bf70d5aaf011ec9b476974d19..31054e7e1d69bfeeb2ddee5bfeb8ee50
super.serialize(builder);
if (this.hasTitle()) {
@@ -455,4 +455,25 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta {
@@ -459,4 +459,25 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta {
return this.spigot;
}
// Spigot end
@ -5024,7 +5015,7 @@ index 6691950f6ffb8b6bf70d5aaf011ec9b476974d19..31054e7e1d69bfeeb2ddee5bfeb8ee50
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
index 625035216d1ce4ab965b5eef15f1201fc5df576b..18efbab29f20436848894c66541aa6c7d3481aae 100644
index 2a0803ed63be1adafec3e6e1cf57a84c867d0b57..6b63fec6bc646b6faf2151a786ef47c87848520e 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
@@ -843,6 +843,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta {
@ -5417,7 +5408,7 @@ index 4d586e1375ed8782939c9d480479e0dd981f8cbc..7900adb0b158bc17dd792dd082c33854
+
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java
index 9fc85104dd934425ea2ba379cac1c3e61388f7d8..f07234e19dc9f84ff4f4b5e5e811e2813184978b 100644
index b963d471b33cacaeec385dba6b2bf369e3d4426f..51094fe6e37d3c0fad2682353f8de3d1b9c9aef5 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java
@@ -299,6 +299,7 @@ public final class CraftChatMessage {