From 469a257947fbf1ccf1f232aa5bdfadb9ded98309 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Fri, 11 Jun 2021 12:23:46 -0700 Subject: [PATCH] fix adventure patch --- patches/{api-unmapped => api}/Adventure.patch | 0 .../Adventure.patch | 552 ++++++++---------- 2 files changed, 239 insertions(+), 313 deletions(-) rename patches/{api-unmapped => api}/Adventure.patch (100%) rename patches/{server-remapped => server}/Adventure.patch (87%) diff --git a/patches/api-unmapped/Adventure.patch b/patches/api/Adventure.patch similarity index 100% rename from patches/api-unmapped/Adventure.patch rename to patches/api/Adventure.patch diff --git a/patches/server-remapped/Adventure.patch b/patches/server/Adventure.patch similarity index 87% rename from patches/server-remapped/Adventure.patch rename to patches/server/Adventure.patch index bb41dd723..eed04271b 100644 --- a/patches/server-remapped/Adventure.patch +++ b/patches/server/Adventure.patch @@ -519,7 +519,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private static final Pattern LOCALIZATION_PATTERN = Pattern.compile("%(?:(\\d+)\\$)?s"); + public static final ComponentFlattener FLATTENER = ComponentFlattener.basic().toBuilder() + .complexMapper(TranslatableComponent.class, (translatable, consumer) -> { -+ final @NonNull String translated = LocaleLanguage.a().a(translatable.key()); ++ final @NonNull String translated = net.minecraft.locale.Language.getInstance().getOrDefault(translatable.key()); + + final Matcher matcher = LOCALIZATION_PATTERN.matcher(translated); + final List args = translatable.args(); @@ -938,7 +938,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/ChatFormatting.java +++ b/src/main/java/net/minecraft/ChatFormatting.java @@ -0,0 +0,0 @@ public enum ChatFormatting { - return !this.isFormat && this != ChatFormatting.RESET; + return !this.isFormat && this != RESET; } + @Nullable public Integer getHexValue() { return this.getColor(); } // Paper - OBFHELPER @@ -946,7 +946,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Integer getColor() { return this.color; @@ -0,0 +0,0 @@ public enum ChatFormatting { - return name == null ? null : (ChatFormatting) ChatFormatting.FORMATTING_BY_NAME.get(cleanName(name)); + return name == null ? null : FORMATTING_BY_NAME.get(cleanName(name)); } + // Paper start @@ -964,6 +964,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable public static ChatFormatting getById(int colorIndex) { if (colorIndex < 0) { +diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/nbt/CompoundTag.java ++++ b/src/main/java/net/minecraft/nbt/CompoundTag.java +@@ -0,0 +0,0 @@ public class CompoundTag implements Tag { + /** + * You must use {@link #hasUUID(String)} before or else it will throw an NPE. + */ +- public UUID getUUID(String prefix) { return getUUID(prefix); } // Paper - OBFHELPER + public UUID getUUID(String key) { + return NbtUtils.loadUUID(this.get(key)); + } diff --git a/src/main/java/net/minecraft/nbt/StringTag.java b/src/main/java/net/minecraft/nbt/StringTag.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/nbt/StringTag.java @@ -974,28 +986,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public static StringTag create(final String value) { return valueOf(value); } // Paper - OBFHELPER public static StringTag valueOf(String value) { - return value.isEmpty() ? StringTag.EMPTY : new StringTag(value); + return value.isEmpty() ? EMPTY : new StringTag(value); } diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -@@ -0,0 +0,0 @@ import io.netty.buffer.ByteBufOutputStream; - import io.netty.handler.codec.DecoderException; - import io.netty.handler.codec.EncoderException; +@@ -0,0 +0,0 @@ import io.netty.handler.codec.EncoderException; import io.netty.util.ByteProcessor; + import it.unimi.dsi.fastutil.ints.IntArrayList; + import it.unimi.dsi.fastutil.ints.IntList; +import io.papermc.paper.adventure.PaperAdventure; // Paper import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -@@ -0,0 +0,0 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; // CraftBukkit - public class FriendlyByteBuf extends ByteBuf { - +@@ -0,0 +0,0 @@ public class FriendlyByteBuf extends ByteBuf { + private static final int MAX_VARLONG_SIZE = 10; + private static final int DEFAULT_NBT_QUOTA = 2097152; private final ByteBuf source; + public java.util.Locale adventure$locale; // Paper + public static final short MAX_STRING_LENGTH = 32767; + public static final int MAX_COMPONENT_STRING_LENGTH = 262144; - public FriendlyByteBuf(ByteBuf bytebuf) { - this.source = bytebuf; @@ -0,0 +0,0 @@ public class FriendlyByteBuf extends ByteBuf { return Component.Serializer.fromJson(this.readUtf(262144)); } @@ -1012,15 +1024,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return this.writeUtf(PaperAdventure.asJsonString(text, this.adventure$locale), 262144); // Paper } - public > T readEnum(Class oclass) { -@@ -0,0 +0,0 @@ public class FriendlyByteBuf extends ByteBuf { - return this.writeUtf(s, 32767); - } - -+ public FriendlyByteBuf writeUtf(final String string, final int maxLength) { return this.writeUtf(string, maxLength); } // Paper - OBFHELPER - public FriendlyByteBuf writeUtf(String s, int i) { - byte[] abyte = s.getBytes(StandardCharsets.UTF_8); - + public > T readEnum(Class enumClass) { diff --git a/src/main/java/net/minecraft/network/PacketEncoder.java b/src/main/java/net/minecraft/network/PacketEncoder.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/network/PacketEncoder.java @@ -1034,13 +1038,22 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketFlow; @@ -0,0 +0,0 @@ public class PacketEncoder extends MessageToByteEncoder> { - throw new IOException("Can't serialize unregistered packet"); } else { - FriendlyByteBuf packetdataserializer = new FriendlyByteBuf(bytebuf); -+ packetdataserializer.adventure$locale = channelhandlercontext.channel().attr(PaperAdventure.LOCALE_ATTRIBUTE).get(); // Paper - - packetdataserializer.writeVarInt(integer); + FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(byteBuf); + friendlyByteBuf.writeVarInt(integer); ++ friendlyByteBuf.adventure$locale = channelHandlerContext.channel().attr(PaperAdventure.LOCALE_ATTRIBUTE).get(); // Paper + try { + int i = friendlyByteBuf.writerIndex(); +@@ -0,0 +0,0 @@ public class PacketEncoder extends MessageToByteEncoder> { + } + } catch (Throwable var9) { + LOGGER.error(var9); +- throwable.printStackTrace(); // Paper - WHAT WAS IT? WHO DID THIS TO YOU? WHAT DID YOU SEE? ++ var9.printStackTrace(); // Paper - WHAT WAS IT? WHO DID THIS TO YOU? WHAT DID YOU SEE? + if (packet.isSkippable()) { + throw new SkipPacketException(var9); + } else { diff --git a/src/main/java/net/minecraft/network/chat/Component.java b/src/main/java/net/minecraft/network/chat/Component.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/network/chat/Component.java @@ -1048,6 +1061,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ package net.minecraft.network.chat; + import com.google.common.collect.Lists; +import io.papermc.paper.adventure.AdventureComponent; // Paper import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -1069,18 +1083,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!ichatbasecomponent.getStyle().isEmpty()) { @@ -0,0 +0,0 @@ public interface Component extends Message, FormattedText, Iterable { - return jsonobject; + }); } + public static String componentToJson(final Component component) { return toJson(component); } // Paper - OBFHELPER public static String toJson(Component text) { return Component.Serializer.GSON.toJson(text); } - -+ public static JsonElement toJsonTree(final Component component) { return toJsonTree(component); } // Paper - OBFHELPER - public static JsonElement toJsonTree(Component text) { - return Component.Serializer.GSON.toJsonTree(text); - } @@ -0,0 +0,0 @@ public interface Component extends Message, FormattedText, Iterable { return (MutableComponent) GsonHelper.fromJson(Component.Serializer.GSON, json, MutableComponent.class, false); } @@ -1096,66 +1105,42 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ import net.minecraft.network.protocol.Packet; public class ClientboundChatPacket implements Packet { - private Component message; + private final Component message; + public net.kyori.adventure.text.Component adventure$message; // Paper public net.md_5.bungee.api.chat.BaseComponent[] components; // Spigot - private ChatType type; - private UUID sender; + private final ChatType type; + private final UUID sender; @@ -0,0 +0,0 @@ public class ClientboundChatPacket implements Packet { @Override - public void write(FriendlyByteBuf buf) throws IOException { + public void write(FriendlyByteBuf buf) { + // Paper start + if (this.adventure$message != null) { + buf.writeComponent(this.adventure$message); + } else + // Paper end // Spigot start - if (components != null) { - buf.writeByteArray(net.md_5.bungee.chat.ComponentSerializer.toString(components)); -diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitlesPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitlesPacket.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitlesPacket.java -+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitlesPacket.java -@@ -0,0 +0,0 @@ public class ClientboundSetTitlesPacket implements Packet { + public final Component header; + public final Component footer; + // Paper start + public net.kyori.adventure.text.Component adventure$header; + public net.kyori.adventure.text.Component adventure$footer; + // Paper end - public ClientboundTabListPacket() {} - + public ClientboundTabListPacket(Component header, Component footer) { + this.header = header; @@ -0,0 +0,0 @@ public class ClientboundTabListPacket implements Packet { + this.connection.send((Packet) (new ClientboundPlayerCombatKillPacket(this.getCombatTracker(), ichatbasecomponent)), (future) -> { if (!future.isSuccess()) { -@@ -0,0 +0,0 @@ public class ServerPlayer extends Player implements ContainerListener { - this.sendMessage(message, ChatType.SYSTEM, senderUuid); - } - -+ public void sendMessage(final Component message, final ChatType type, final UUID sender) { this.sendMessage(message, type, sender); } // Paper - OBFHELPER - public void sendMessage(Component message, ChatType type, UUID senderUuid) { - this.connection.send((Packet) (new ClientboundChatPacket(message, type, senderUuid)), (future) -> { - if (!future.isSuccess() && (type == ChatType.GAME_INFO || type == ChatType.SYSTEM)) { -@@ -0,0 +0,0 @@ public class ServerPlayer extends Player implements ContainerListener { +@@ -0,0 +0,0 @@ public class ServerPlayer extends Player { } public String locale = "en_us"; // CraftBukkit - add, lowercase @@ -1238,7 +1215,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void updateOptions(ServerboundClientInformationPacket packet) { // CraftBukkit start if (getMainArm() != packet.getMainHand()) { -@@ -0,0 +0,0 @@ public class ServerPlayer extends Player implements ContainerListener { +@@ -0,0 +0,0 @@ public class ServerPlayer extends Player { this.server.server.getPluginManager().callEvent(event); } this.locale = packet.language; @@ -1260,16 +1237,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +import io.papermc.paper.adventure.ChatProcessor; // Paper +import io.papermc.paper.adventure.PaperAdventure; // Paper import java.util.concurrent.ExecutionException; - import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; - import org.bukkit.Location; -@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { + import java.util.concurrent.atomic.AtomicInteger; + import net.minecraft.world.inventory.AbstractContainerMenu; +@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser return this.server.isSingleplayerOwner(this.player.getGameProfile()); } - // CraftBukkit start - @Deprecated - public void disconnect(Component reason) { -- disconnect(CraftChatMessage.fromComponent(reason)); +- this.disconnect(CraftChatMessage.fromComponent(reason)); + public void disconnect(String s) { + // Paper start + this.disconnect(PaperAdventure.LEGACY_SECTION_UXRC.deserialize(s)); @@ -1290,12 +1267,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - String leaveMessage = ChatFormatting.YELLOW + this.player.getScoreboardName() + " left the game."; + net.kyori.adventure.text.Component leaveMessage = net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, this.player.getBukkitEntity().displayName()); // Paper - Adventure -- PlayerKickEvent event = new PlayerKickEvent(this.craftServer.getPlayer(this.player), s, leaveMessage); -+ PlayerKickEvent event = new PlayerKickEvent(this.craftServer.getPlayer(this.player), reason, leaveMessage); // Paper - Adventure +- PlayerKickEvent event = new PlayerKickEvent(this.cserver.getPlayer(this.player), s, leaveMessage); ++ PlayerKickEvent event = new PlayerKickEvent(this.player.getBukkitEntity(), reason, leaveMessage); // Paper - Adventure - if (this.craftServer.getServer().isRunning()) { - this.craftServer.getPluginManager().callEvent(event); -@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { + if (this.cserver.getServer().isRunning()) { + this.cserver.getPluginManager().callEvent(event); +@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser return; } // Send the possibly modified leave message @@ -1305,7 +1282,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit end this.connection.send(new ClientboundDisconnectPacket(ichatbasecomponent), (future) -> { -@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { +@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser */ this.player.disconnect(); @@ -1315,56 +1292,62 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper start - Adventure + net.kyori.adventure.text.Component quitMessage = this.server.getPlayerList().disconnect(this.player); + if ((quitMessage != null) && !quitMessage.equals(net.kyori.adventure.text.Component.empty())) { -+ this.server.getPlayerList().sendMessage(PaperAdventure.asVanilla(quitMessage)); ++ this.server.getPlayerList().broadcastMessage(PaperAdventure.asVanilla(quitMessage), ChatType.SYSTEM, Util.NIL_UUID); + // Paper end } // CraftBukkit end - TextFilter itextfilter = this.player.getTextFilter(); -@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { + this.player.getTextFilter().leave(); +@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.handleCommand(s); } else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) { // Do nothing, this is coming from a plugin - } else { -- Player player = this.getPlayer(); + // Paper start + } else if (true) { + final ChatProcessor cp = new ChatProcessor(this.server, this.player, s, async); + cp.process(); -+ // Paper end ++ // Paper end + } else if (false) { // Paper -+ Player player = this.getPlayer(); // Paper - AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(server)); - this.craftServer.getPluginManager().callEvent(event); - -@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { + Player player = this.getCraftPlayer(); + AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(async, player, s, new LazyPlayerSet(this.server)); + this.cserver.getPluginManager().callEvent(event); +@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser return; } - // CraftBukkit start -- Player player = this.craftServer.getPlayer(this.player); -- int x = packetplayinupdatesign.getPos().getX(); -- int y = packetplayinupdatesign.getPos().getY(); -- int z = packetplayinupdatesign.getPos().getZ(); -- String[] lines = new String[4]; + // CraftBukkit start // Paper start - Adventure + Player player = this.cserver.getPlayer(this.player); + int x = packetplayinupdatesign.getPos().getX(); + int y = packetplayinupdatesign.getPos().getY(); + int z = packetplayinupdatesign.getPos().getZ(); +- String[] lines = new String[4]; + List lines = new java.util.ArrayList<>(); for (int i = 0; i < list.size(); ++i) { -- lines[i] = ChatFormatting.stripFormatting(new TextComponent(ChatFormatting.stripFormatting((String) list.get(i))).getString()); -+ lines.add(net.kyori.adventure.text.Component.text(list.get(i))); +- TextFilter.FilteredText itextfilter_a = (TextFilter.FilteredText) list.get(i); +- + if (this.player.isTextFilteringEnabled()) { +- lines[i] = ChatFormatting.stripFormatting(new TextComponent(ChatFormatting.stripFormatting(itextfilter_a.getFiltered())).getString()); ++ lines.add(net.kyori.adventure.text.Component.text(list.get(i).getFiltered())); + } else { +- lines[i] = ChatFormatting.stripFormatting(new TextComponent(ChatFormatting.stripFormatting(itextfilter_a.getRaw())).getString()); ++ lines.add(net.kyori.adventure.text.Component.text(list.get(i).getRaw())); + } } -- SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.craftServer.getPlayer(this.player), lines); -+ SignChangeEvent event = new SignChangeEvent(org.bukkit.craftbukkit.block.CraftBlock.at(worldserver, blockposition), this.getPlayer(), lines); - this.craftServer.getPluginManager().callEvent(event); + SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.cserver.getPlayer(this.player), lines); + this.cserver.getPluginManager().callEvent(event); if (!event.isCancelled()) { -- System.arraycopy(org.bukkit.craftbukkit.block.CraftSign.sanitizeLines(event.getLines()), 0, tileentitysign.messages, 0, 4); +- Component[] components = org.bukkit.craftbukkit.block.CraftSign.sanitizeLines(event.getLines()); +- for (int i = 0; i < components.length; i++) { +- tileentitysign.setMessage(i, components[i]); + for (int i = 0; i < 4; i++) { + tileentitysign.setMessage(i, PaperAdventure.asVanilla(event.line(i))); -+ } + } + // Paper end tileentitysign.isEditable = false; - } + } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -1391,14 +1374,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ServerLoginPacketListenerImpl.this.server.processQueue.add(waitable); if (waitable.get() != PlayerPreLoginEvent.Result.ALLOWED) { -- disconnect(event.getKickMessage()); -+ disconnect(PaperAdventure.asVanilla(event.kickMessage())); // Paper - Adventure +- ServerLoginPacketListenerImpl.this.disconnect(event.getKickMessage()); ++ ServerLoginPacketListenerImpl.this.disconnect(PaperAdventure.asVanilla(event.kickMessage())); // Paper - Adventure return; } } else { if (asyncEvent.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { -- disconnect(asyncEvent.getKickMessage()); -+ disconnect(PaperAdventure.asVanilla(asyncEvent.kickMessage())); // Paper - Adventure +- ServerLoginPacketListenerImpl.this.disconnect(asyncEvent.getKickMessage()); ++ ServerLoginPacketListenerImpl.this.disconnect(PaperAdventure.asVanilla(asyncEvent.kickMessage())); // Paper - Adventure return; } } @@ -1410,8 +1393,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 CraftIconCache icon = server.server.getServerIcon(); ServerListPingEvent() { -- super(((InetSocketAddress) connection.getRemoteAddress()).getAddress(), server.getMotd(), server.getPlayerList().getMaxPlayers()); -+ super(((InetSocketAddress) connection.getRemoteAddress()).getAddress(), server.server.motd(), server.getPlayerList().getMaxPlayers()); // Paper - Adventure +- super(((InetSocketAddress) ServerStatusPacketListenerImpl.this.connection.getRemoteAddress()).getAddress(), ServerStatusPacketListenerImpl.this.server.getMotd(), ServerStatusPacketListenerImpl.this.server.getPlayerList().getMaxPlayers()); ++ super(((InetSocketAddress) ServerStatusPacketListenerImpl.this.connection.getRemoteAddress()).getAddress(), ServerStatusPacketListenerImpl.this.server.server.getMotd(), ServerStatusPacketListenerImpl.this.server.getPlayerList().getMaxPlayers()); // Paper - Adventure } @Override @@ -1433,7 +1416,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start +import io.papermc.paper.adventure.PaperAdventure; // Paper import com.google.common.base.Predicate; - import com.google.common.collect.Iterables; + import java.util.stream.Collectors; import net.minecraft.server.dedicated.DedicatedServer; @@ -0,0 +0,0 @@ public abstract class PlayerList { } @@ -1442,15 +1425,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - String joinMessage = CraftChatMessage.fromComponent(chatmessage); + Component joinMessage = chatmessage; // Paper - Adventure - playerconnection.teleport(player.getX(), player.getY(), player.getZ(), player.yRot, player.xRot); + playerconnection.teleport(player.getX(), player.getY(), player.getZ(), player.getYRot(), player.getXRot()); this.players.add(player); @@ -0,0 +0,0 @@ public abstract class PlayerList { // this.sendAll(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, new EntityPlayer[]{entityplayer})); // CraftBukkit - replaced with loop below // CraftBukkit start -- PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(cserver.getPlayer(player), joinMessage); -+ PlayerJoinEvent playerJoinEvent = new org.bukkit.event.player.PlayerJoinEvent(cserver.getPlayer(player), PaperAdventure.asAdventure(chatmessage)); // Paper - Adventure - cserver.getPluginManager().callEvent(playerJoinEvent); +- PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(this.cserver.getPlayer(player), joinMessage); ++ PlayerJoinEvent playerJoinEvent = new org.bukkit.event.player.PlayerJoinEvent(this.cserver.getPlayer(player), PaperAdventure.asAdventure(chatmessage)); // Paper - Adventure + this.cserver.getPluginManager().callEvent(playerJoinEvent); if (!player.connection.connection.isConnected()) { return; @@ -1461,11 +1444,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - if (joinMessage != null && joinMessage.length() > 0) { - for (Component line : org.bukkit.craftbukkit.util.CraftChatMessage.fromString(joinMessage)) { -- server.getPlayerList().broadcastAll(new ClientboundChatPacket(line, ChatType.SYSTEM, Util.NIL_UUID)); +- this.server.getPlayerList().broadcastAll(new ClientboundChatPacket(line, ChatType.SYSTEM, Util.NIL_UUID)); - } + if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure + joinMessage = PaperAdventure.asVanilla(jm); // Paper - Adventure -+ server.getPlayerList().broadcastAll(new ClientboundChatPacket(joinMessage, ChatType.SYSTEM, Util.NIL_UUID)); // Paper - Adventure ++ this.server.getPlayerList().broadcastAll(new ClientboundChatPacket(joinMessage, ChatType.SYSTEM, Util.NIL_UUID)); // Paper - Adventure } // CraftBukkit end @@ -1482,13 +1465,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entityplayer.closeContainer(); } -- PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getScoreboardName() + " left the game"); -+ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, com.destroystokyo.paper.PaperConfig.useDisplayNameInQuit ? entityplayer.getBukkitEntity().displayName() : net.kyori.adventure.text.Component.text(entityplayer.getScoreboardName()))); - cserver.getPluginManager().callEvent(playerQuitEvent); +- PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getScoreboardName() + " left the game"); ++ PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(this.cserver.getPlayer(entityplayer), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, com.destroystokyo.paper.PaperConfig.useDisplayNameInQuit ? entityplayer.getBukkitEntity().displayName() : net.kyori.adventure.text.Component.text(entityplayer.getScoreboardName()))); + this.cserver.getPluginManager().callEvent(playerQuitEvent); entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage()); @@ -0,0 +0,0 @@ public abstract class PlayerList { - cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity()); + this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity()); // CraftBukkit end - return playerQuitEvent.getQuitMessage(); // CraftBukkit @@ -1506,7 +1489,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 chatmessage = new TranslatableComponent("multiplayer.disconnect.not_whitelisted"); - event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, org.spigotmc.SpigotConfig.whitelistMessage); // Spigot + event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, PaperAdventure.LEGACY_SECTION_UXRC.deserialize(org.spigotmc.SpigotConfig.whitelistMessage)); // Spigot // Paper - Adventure - } else if (getIpBans().isBanned(socketaddress) && !getIpBans().get(socketaddress).hasExpired()) { + } else if (this.getIpBans().isBanned(socketaddress) && !this.getIpBans().get(socketaddress).hasExpired()) { IpBanListEntry ipbanentry = this.ipBans.get(socketaddress); @@ -0,0 +0,0 @@ public abstract class PlayerList { @@ -1516,14 +1499,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - event.disallow(PlayerLoginEvent.Result.KICK_BANNED, CraftChatMessage.fromComponent(chatmessage)); + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(chatmessage)); // Paper - Adventure } else { - // return this.players.size() >= this.maxPlayers && !this.f(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full") : null; + // return this.players.size() >= this.maxPlayers && !this.d(gameprofile) ? new ChatMessage("multiplayer.disconnect.server_full") : null; if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) { - event.disallow(PlayerLoginEvent.Result.KICK_FULL, org.spigotmc.SpigotConfig.serverFullMessage); // Spigot + event.disallow(PlayerLoginEvent.Result.KICK_FULL, PaperAdventure.LEGACY_SECTION_UXRC.deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } - cserver.getPluginManager().callEvent(event); + this.cserver.getPluginManager().callEvent(event); if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) { - loginlistener.disconnect(event.getKickMessage()); + loginlistener.disconnect(PaperAdventure.asVanilla(event.kickMessage())); // Paper - Adventure @@ -1580,8 +1563,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public final Component getTranslationComponentForLevel(int level) { return this.getFullname(level); } // Paper - OBFHELPER public Component getFullname(int level) { - TranslatableComponent chatmessage = new TranslatableComponent(this.getDescriptionId()); - + MutableComponent mutableComponent = new TranslatableComponent(this.getDescriptionId()); + if (this.isCurse()) { diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java @@ -1593,16 +1576,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +import io.papermc.paper.adventure.PaperAdventure; // Paper import java.util.UUID; - import org.bukkit.craftbukkit.CraftServer; + import org.bukkit.Bukkit; @@ -0,0 +0,0 @@ public class MapItemSavedData extends SavedData { - for ( org.bukkit.map.MapCursor cursor : render.cursors) { - if (cursor.isVisible()) { -- icons.add(new MapDecoration(MapDecoration.Type.byIcon(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection(), CraftChatMessage.fromStringOrNull(cursor.getCaption()))); -+ icons.add(new MapDecoration(MapDecoration.Type.byIcon(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection(), PaperAdventure.asVanilla(cursor.caption()))); // Paper - Adventure + for (org.bukkit.map.MapCursor cursor : render.cursors) { + if (cursor.isVisible()) { +- icons.add(new MapDecoration(MapDecoration.Type.byIcon(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection(), CraftChatMessage.fromStringOrNull(cursor.getCaption()))); ++ icons.add(new MapDecoration(MapDecoration.Type.byIcon(cursor.getRawType()), cursor.getX(), cursor.getY(), cursor.getDirection(), PaperAdventure.asVanilla(cursor.caption()))); // Paper - Adventure + } } - } - + collection = icons; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1613,14 +1596,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override + @Deprecated // Paper start public int broadcastMessage(String message) { -- return broadcast(message, BROADCAST_CHANNEL_USERS); -+ return this.broadcast(message, BROADCAST_CHANNEL_USERS); + return this.broadcast(message, BROADCAST_CHANNEL_USERS); + // Paper end } public Player getPlayer(final ServerPlayer entity) { @@ -0,0 +0,0 @@ public final class CraftServer implements Server { - return configuration.getInt("settings.spawn-radius", -1); + return this.configuration.getInt("settings.spawn-radius", -1); } + // Paper start @@ -1633,7 +1615,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override + @Deprecated // Paper public String getShutdownMessage() { - return configuration.getString("settings.shutdown-message"); + return this.configuration.getString("settings.shutdown-message"); } @@ -0,0 +0,0 @@ public final class CraftServer implements Server { } @@ -1654,7 +1636,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public int broadcast(net.kyori.adventure.text.Component message, String permission) { + // Paper end Set recipients = new HashSet<>(); - for (Permissible permissible : getPluginManager().getPermissionSubscriptions(permission)) { + for (Permissible permissible : this.getPluginManager().getPermissionSubscriptions(permission)) { if (permissible instanceof CommandSender && permissible.hasPermission(permission)) { @@ -0,0 +0,0 @@ public final class CraftServer implements Server { } @@ -1662,7 +1644,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - BroadcastMessageEvent broadcastMessageEvent = new BroadcastMessageEvent(!Bukkit.isPrimaryThread(), message, recipients); + BroadcastMessageEvent broadcastMessageEvent = new BroadcastMessageEvent(!Bukkit.isPrimaryThread(), message, recipients); // Paper - Adventure - getPluginManager().callEvent(broadcastMessageEvent); + this.getPluginManager().callEvent(broadcastMessageEvent); if (broadcastMessageEvent.isCancelled()) { return 0; @@ -1718,7 +1700,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return new CraftMerchantCustom(title == null ? InventoryType.MERCHANT.getDefaultTitle() : title); } @@ -0,0 +0,0 @@ public final class CraftServer implements Server { - return Thread.currentThread().equals(console.serverThread) || console.hasStopped() || !org.spigotmc.AsyncCatcher.enabled; // All bets are off if we have shut down (e.g. due to watchdog) + return Thread.currentThread().equals(console.serverThread) || this.console.hasStopped() || !org.spigotmc.AsyncCatcher.enabled; // All bets are off if we have shut down (e.g. due to watchdog) } + // Paper start @@ -1729,7 +1711,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public String getMotd() { - return console.getMotd(); + return this.console.getMotd(); @@ -0,0 +0,0 @@ public final class CraftServer implements Server { return null; } @@ -1859,18 +1841,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper start @Override - public String[] getLines() { -- if (lines == null) { +- if (this.lines == null) { - // Lazy initialization: - SignBlockEntity sign = this.getSnapshot(); -- lines = new String[sign.messages.length]; -- System.arraycopy(revertComponents(sign.messages), 0, lines, 0, lines.length); -- originalLines = new String[lines.length]; +- this.lines = new String[sign.messages.length]; +- System.arraycopy(CraftSign.revertComponents(sign.messages), 0, lines, 0, lines.length); +- this.originalLines = new String[lines.length]; - System.arraycopy(lines, 0, originalLines, 0, originalLines.length); +- } + public java.util.List lines() { + this.loadLines(); -+ return this.lines; -+ } -+ + return this.lines; + } + + @Override + public net.kyori.adventure.text.Component line(int index) { + this.loadLines(); @@ -1886,9 +1869,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private void loadLines() { + if (lines != null) { + return; - } -- return lines; -+ ++ } + // Lazy initialization: + SignBlockEntity sign = this.getSnapshot(); + lines = io.papermc.paper.adventure.PaperAdventure.asAdventure(com.google.common.collect.Lists.newArrayList(sign.messages)); @@ -1899,18 +1880,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public String[] getLines() { + this.loadLines(); + return this.lines.stream().map(io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC::serialize).toArray(String[]::new); // Paper - } - ++ } ++ @Override public String getLine(int index) throws IndexOutOfBoundsException { -- return getLines()[index]; +- return this.getLines()[index]; + this.loadLines(); + return io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(this.lines.get(index)); // Paper } @Override public void setLine(int index, String line) throws IndexOutOfBoundsException { -- getLines()[index] = line; +- this.getLines()[index] = line; + this.loadLines(); + this.lines.set(index, line != null ? io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(line) : net.kyori.adventure.text.Component.empty()); // Paper } @@ -1919,10 +1900,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState implements super.applyTo(sign); - if (lines != null) { + if (this.lines != null) { - for (int i = 0; i < lines.length; i++) { -- String line = (lines[i] == null) ? "" : lines[i]; -- if (line.equals(originalLines[i])) { +- String line = (this.lines[i] == null) ? "" : this.lines[i]; +- if (line.equals(this.originalLines[i])) { + // Paper start + for (int i = 0; i < this.lines.size(); ++i) { + net.kyori.adventure.text.Component component = this.lines.get(i); @@ -1930,7 +1911,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (component.equals(origComp)) { continue; // The line contents are still the same, skip. } -- sign.messages[i] = CraftChatMessage.fromString(line)[0]; +- sign.setMessage(i, CraftChatMessage.fromString(line)[0]); + sign.messages[i] = io.papermc.paper.adventure.PaperAdventure.asVanilla(component); } + // Paper end @@ -1959,7 +1940,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java @@ -0,0 +0,0 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co public boolean isConversing() { - return conversationTracker.isConversing(); + return this.conversationTracker.isConversing(); } + + // Paper start @@ -1975,7 +1956,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -0,0 +0,0 @@ public class CraftEnchantment extends Enchantment { CraftEnchantment ench = (CraftEnchantment) other; - return !target.isCompatibleWith(ench.target); + return !this.target.isCompatibleWith(ench.target); } + // Paper start + @Override @@ -1985,13 +1966,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end public net.minecraft.world.item.enchantment.Enchantment getHandle() { - return target; + return this.target; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -0,0 +0,0 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - return getHandle().getVehicle().getBukkitEntity(); + return this.getHandle().getVehicle().getBukkitEntity(); } + // Paper start @@ -2026,8 +2007,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, CraftChatMessage.fromString(title)[0])); + //player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0])); // Paper // Paper - comment + player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper - getHandle().containerMenu = container; - getHandle().containerMenu.addSlotListener(player); + player.containerMenu = container; + player.initMenu(container); } @@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @@ -2042,7 +2023,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + //player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0])); // Paper - comment + player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper player.containerMenu = container; - player.containerMenu.addSlotListener(player); + player.initMenu(container); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -2053,13 +2034,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override public String getDisplayName() { + if(true) return io.papermc.paper.adventure.DisplayNames.getLegacy(this); // Paper - return getHandle().displayName; + return this.getHandle().displayName; } @Override public void setDisplayName(final String name) { + this.getHandle().adventure$displayName = name != null ? io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(name) : net.kyori.adventure.text.Component.text(this.getName()); // Paper - getHandle().displayName = name == null ? getName() : name; + this.getHandle().displayName = name == null ? getName() : name; } + // Paper start @@ -2087,7 +2068,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public String getPlayerListName() { - return getHandle().listName == null ? getName() : CraftChatMessage.fromComponent(getHandle().listName); + return this.getHandle().listName == null ? getName() : CraftChatMessage.fromComponent(this.getHandle().listName); @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } } @@ -2099,28 +2080,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override public String getPlayerListHeader() { -- return (playerListHeader == null) ? null : CraftChatMessage.fromComponent(playerListHeader); -+ return (playerListHeader == null) ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(playerListHeader); // Paper - Adventure +- return (this.playerListHeader == null) ? null : CraftChatMessage.fromComponent(playerListHeader); ++ return (this.playerListHeader == null) ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(playerListHeader); } @Override public String getPlayerListFooter() { -- return (playerListFooter == null) ? null : CraftChatMessage.fromComponent(playerListFooter); -+ return (playerListFooter == null) ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(playerListFooter); // Paper - Adventure +- return (this.playerListFooter == null) ? null : CraftChatMessage.fromComponent(playerListFooter); ++ return (this.playerListFooter == null) ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(playerListFooter); // Paper - Adventure } @Override public void setPlayerListHeader(String header) { - this.playerListHeader = CraftChatMessage.fromStringOrNull(header, true); + this.playerListHeader = header == null ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(header); // Paper - Adventure - updatePlayerListHeaderFooter(); + this.updatePlayerListHeaderFooter(); } @Override public void setPlayerListFooter(String footer) { - this.playerListFooter = CraftChatMessage.fromStringOrNull(footer, true); + this.playerListFooter = footer == null ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(footer); // Paper - Adventure - updatePlayerListHeaderFooter(); + this.updatePlayerListHeaderFooter(); } @Override @@ -2129,22 +2110,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - this.playerListFooter = CraftChatMessage.fromStringOrNull(footer, true); + this.playerListHeader = header == null ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(header); // Paper - Adventure + this.playerListFooter = footer == null ? null : io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(footer); // Paper - Adventure - updatePlayerListHeaderFooter(); + this.updatePlayerListHeaderFooter(); + } + + private void updatePlayerListHeaderFooter() { + if (this.getHandle().connection == null) return; + +- ClientboundTabListPacket packet = new ClientboundTabListPacket((this.playerListHeader == null) ? new TextComponent("") : this.playerListHeader, (this.playerListFooter == null) ? new TextComponent("") : this.playerListFooter); ++ ClientboundTabListPacket packet = new ClientboundTabListPacket((this.playerListHeader == null) ? new TextComponent("") : io.papermc.paper.adventure.PaperAdventure.asVanilla(this.playerListHeader), (this.playerListFooter == null) ? new TextComponent("") : io.papermc.paper.adventure.PaperAdventure.asVanilla(this.playerListFooter)); + this.getHandle().connection.send(packet); } @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - if (getHandle().connection == null) return; - - ClientboundTabListPacket packet = new ClientboundTabListPacket(); -- packet.header = (this.playerListHeader == null) ? new TextComponent("") : this.playerListHeader; -- packet.footer = (this.playerListFooter == null) ? new TextComponent("") : this.playerListFooter; -+ packet.header = (this.playerListHeader == null) ? new TextComponent("") : io.papermc.paper.adventure.PaperAdventure.asVanilla(this.playerListHeader); // Paper - Adventure -+ packet.footer = (this.playerListFooter == null) ? new TextComponent("") : io.papermc.paper.adventure.PaperAdventure.asVanilla(this.playerListFooter); // Paper - Adventure - getHandle().connection.send(packet); - } - -@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - getHandle().connection.disconnect(message == null ? "" : message); + this.getHandle().connection.disconnect(message == null ? "" : message); } + // Paper start @@ -2160,9 +2138,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public void setCompassTarget(Location loc) { - if (getHandle().connection == null) return; + if (this.getHandle().connection == null) return; @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - getHandle().connection.send(packet); + this.getHandle().connection.send(packet); } + // Paper start @@ -2188,8 +2166,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + private void sendSignChange0(Component[] components, Location loc, DyeColor dyeColor) { -+ SignBlockEntity sign = new SignBlockEntity(); -+ sign.setPosition(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); ++ SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState()); + sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData())); + System.arraycopy(components, 0, sign.messages, 0, sign.messages.length); + @@ -2198,28 +2175,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public void sendSignChange(Location loc, String[] lines) { - sendSignChange(loc, lines, DyeColor.BLACK); + this.sendSignChange(loc, lines, DyeColor.BLACK); @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } Component[] components = CraftSign.sanitizeLines(lines); -- SignBlockEntity sign = new SignBlockEntity(); -- sign.setPosition(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); +- SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState()); - sign.setColor(net.minecraft.world.item.DyeColor.byId(dyeColor.getWoolData())); -- System.arraycopy(components, 0, sign.messages, 0, sign.messages.length); -+ /*TileEntitySign sign = new TileEntitySign(); // Paper -+ sign.setPosition(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); +- for (int i = 0; i < components.length; i++) { +- sign.setMessage(i, components[i]); +- } ++ /*SignBlockEntity sign = new SignBlockEntity(new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), Blocks.OAK_SIGN.defaultBlockState()); + sign.setColor(EnumColor.fromColorIndex(dyeColor.getWoolData())); + System.arraycopy(components, 0, sign.lines, 0, sign.lines.length); -- getHandle().connection.send(sign.getUpdatePacket()); -+ getHandle().playerConnection.sendPacket(sign.getUpdatePacket());*/ // Paper +- this.getHandle().connection.send(sign.getUpdatePacket()); ++ this.getHandle().connection.send(sign.getUpdatePacket());*/ // Paper + this.sendSignChange0(components, loc, dyeColor); // Paper } @Override @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - return (getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : getHandle().clientViewDistance; + return (this.getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : this.getHandle().clientViewDistance; } + // Paper start @@ -2230,7 +2207,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public int getPing() { - return getHandle().latency; + return this.getHandle().latency; @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { getInventory().setItemInMainHand(hand); } @@ -2256,8 +2233,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + @Override + public void sendActionBar(final net.kyori.adventure.text.Component message) { -+ final ClientboundSetTitlesPacket packet = new ClientboundSetTitlesPacket(ClientboundSetTitlesPacket.Type.ACTIONBAR, null); -+ packet.adventure$text = message; ++ final net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket packet = new net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket(io.papermc.paper.adventure.PaperAdventure.asVanilla(message)); ++ // packet.adventure$text = message; // TODO: kashike add fields to packet + this.getHandle().connection.send(packet); + } + @@ -2283,9 +2260,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private void adventure$sendPlayerListHeaderAndFooter() { + final ServerGamePacketListenerImpl connection = this.getHandle().connection; + if (connection == null) return; -+ final ClientboundTabListPacket packet = new ClientboundTabListPacket(); -+ packet.adventure$header = (this.playerListHeader == null) ? net.kyori.adventure.text.Component.empty() : this.playerListHeader; -+ packet.adventure$footer = (this.playerListFooter == null) ? net.kyori.adventure.text.Component.empty() : this.playerListFooter; ++ final ClientboundTabListPacket packet = new net.minecraft.network.protocol.game.ClientboundTabListPacket(io.papermc.paper.adventure.PaperAdventure.asVanilla((this.playerListHeader == null) ? net.kyori.adventure.text.Component.empty() : this.playerListHeader), io.papermc.paper.adventure.PaperAdventure.asVanilla((this.playerListFooter == null) ? net.kyori.adventure.text.Component.empty() : this.playerListFooter)); ++ // packet.adventure$header = (this.playerListHeader == null) ? net.kyori.adventure.text.Component.empty() : this.playerListHeader; // TODO: kashike add fields to packet ++ // packet.adventure$footer = (this.playerListFooter == null) ? net.kyori.adventure.text.Component.empty() : this.playerListFooter; + connection.send(packet); + } + @@ -2294,13 +2271,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + final ServerGamePacketListenerImpl connection = this.getHandle().connection; + final net.kyori.adventure.title.Title.Times times = title.times(); + if (times != null) { -+ connection.send(new ClientboundSetTitlesPacket(ticks(times.fadeIn()), ticks(times.stay()), ticks(times.fadeOut()))); ++ connection.send(new ClientboundSetTitlesAnimationPacket(ticks(times.fadeIn()), ticks(times.stay()), ticks(times.fadeOut()))); + } -+ final ClientboundSetTitlesPacket sp = new ClientboundSetTitlesPacket(ClientboundSetTitlesPacket.Type.SUBTITLE, null); -+ sp.adventure$text = title.subtitle(); ++ final ClientboundSetSubtitleTextPacket sp = new ClientboundSetSubtitleTextPacket(io.papermc.paper.adventure.PaperAdventure.asVanilla(title.subtitle())); ++ // sp.adventure$text = title.subtitle(); // TODO: kashike add fields to packet + connection.send(sp); -+ final ClientboundSetTitlesPacket tp = new ClientboundSetTitlesPacket(ClientboundSetTitlesPacket.Type.TITLE, null); -+ tp.adventure$text = title.title(); ++ final ClientboundSetTitleTextPacket tp = new ClientboundSetTitleTextPacket(io.papermc.paper.adventure.PaperAdventure.asVanilla(title.title())); ++ // tp.adventure$text = title.title(); + connection.send(tp); + } + @@ -2313,7 +2290,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + @Override + public void clearTitle() { -+ this.getHandle().connection.send(new ClientboundSetTitlesPacket(ClientboundSetTitlesPacket.Type.CLEAR, null)); ++ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundClearTitlesPacket(false)); + } + + // resetTitle implemented above @@ -2359,7 +2336,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + final net.minecraft.world.item.ItemStack item = io.papermc.paper.adventure.PaperAdventure.asItemStack(book, locale); + final ServerPlayer player = this.getHandle(); + final ServerGamePacketListenerImpl connection = player.connection; -+ final net.minecraft.world.entity.player.Inventory inventory = player.inventory; ++ final net.minecraft.world.entity.player.Inventory inventory = player.getInventory(); + final int slot = inventory.items.size() + inventory.selected; + connection.send(new net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket(0, slot, item)); + connection.send(new net.minecraft.network.protocol.game.ClientboundOpenBookPacket(net.minecraft.world.InteractionHand.MAIN_HAND)); @@ -2399,32 +2376,6 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -0,0 +0,0 @@ - package org.bukkit.craftbukkit.inventory; - --import net.minecraft.network.chat.TextComponent; - import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket; - import net.minecraft.world.Container; - import net.minecraft.world.entity.player.Player; -@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { - - private final InventoryView view; - private InventoryType cachedType; -+ private net.kyori.adventure.text.Component adventure$title; // Paper - private String cachedTitle; - private AbstractContainerMenu delegate; - private final int cachedSize; -@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { - Container top = ((CraftInventory) view.getTopInventory()).getInventory(); - net.minecraft.world.entity.player.Inventory bottom = (net.minecraft.world.entity.player.Inventory) ((CraftInventory) view.getBottomInventory()).getInventory(); - cachedType = view.getType(); -- cachedTitle = view.getTitle(); -+ this.adventure$title = view.title(); // Paper -+ if (this.adventure$title == null) this.adventure$title = io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(view.getTitle()); // Paper -+ //cachedTitle = view.getTitle(); // Paper - comment - cachedSize = getSize(); - setupSlots(top, bottom, player); - } @@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { return inventory.getType(); } @@ -2439,37 +2390,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override public String getTitle() { return inventory instanceof CraftInventoryCustom ? ((CraftInventoryCustom.MinecraftInventory) ((CraftInventory) inventory).getInventory()).getTitle() : inventory.getType().getDefaultTitle(); -@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { - - @Override - public boolean isSynched(Player player) { -- if (cachedType == view.getType() && cachedSize == getSize() && cachedTitle.equals(view.getTitle())) { -+ if (cachedType == view.getType() && cachedSize == getSize() && this.adventure$title.equals(view.title())) { // Paper -+ //if (cachedType == view.getType() && cachedSize == getSize() && cachedTitle.equals(view.getTitle())) { // Paper - comment - return true; - } - // If the window type has changed for some reason, update the player -@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { - // as good a place as any to put something like this. - boolean typeChanged = (cachedType != view.getType()); - cachedType = view.getType(); -- cachedTitle = view.getTitle(); -+ this.adventure$title = view.title(); // Paper -+ if (this.adventure$title == null) this.adventure$title = io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(view.getTitle()); // Paper -+ //cachedTitle = view.getTitle(); // Paper - comment - if (view.getPlayer() instanceof CraftPlayer) { - CraftPlayer player1 = (CraftPlayer) view.getPlayer(); - MenuType type = getNotchInventoryType(view.getTopInventory()); -@@ -0,0 +0,0 @@ public class CraftContainer extends AbstractContainerMenu { - setupSlots(top, bottom, player1.getHandle()); - } - int size = getSize(); -- player1.getHandle().connection.send(new ClientboundOpenScreenPacket(this.containerId, type, new TextComponent(cachedTitle))); -+ player1.getHandle().connection.send(new ClientboundOpenScreenPacket(this.containerId, type, io.papermc.paper.adventure.PaperAdventure.asVanilla(this.adventure$title))); // Paper -+ //player.getHandle().playerConnection.sendPacket(new PacketPlayOutOpenWindow(this.windowId, type, new ChatComponentText(cachedTitle))); // Paper - comment - player1.updateInventory(); - } - return true; +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.javaED5zI7 b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.javaED5zI7 +new file mode 100644 +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java @@ -2520,7 +2443,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.type = type; @@ -0,0 +0,0 @@ public class CraftInventoryCustom extends CraftInventory { Validate.notNull(title, "Title cannot be null"); - this.items = NonNullList.a(size, ItemStack.EMPTY); + this.items = NonNullList.withSize(size, ItemStack.EMPTY); this.title = title; + this.adventure$title = io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(title); this.viewers = new ArrayList(); @@ -2542,7 +2465,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public int getContainerSize() { - return items.size(); + return this.items.size(); @@ -0,0 +0,0 @@ public class CraftInventoryCustom extends CraftInventory { return null; } @@ -2554,14 +2477,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + public String getTitle() { - return title; + return this.title; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java @@ -0,0 +0,0 @@ public class CraftInventoryView extends InventoryView { - return CraftItemStack.asCraftMirror(container.getSlot(slot).getItem()); + return CraftItemStack.asCraftMirror(this.container.getSlot(slot).getItem()); } + // Paper start @@ -2573,7 +2496,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public String getTitle() { - return CraftChatMessage.fromComponent(container.getTitle()); + return CraftChatMessage.fromComponent(this.container.getTitle()); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -2607,7 +2530,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Deprecated // Paper - Adventure public CraftMerchantCustom(String title) { super(new MinecraftMerchant(title)); - getMerchant().craftMerchant = this; + this.getMerchant().craftMerchant = this; } + // Paper start + public CraftMerchantCustom(net.kyori.adventure.text.Component title) { @@ -2805,7 +2728,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public String getPage(final int page) { - Validate.isTrue(isValidPage(page), "Invalid page number"); + Validate.isTrue(this.isValidPage(page), "Invalid page number"); @@ -0,0 +0,0 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta { } @@ -2814,7 +2737,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + ImmutableMap.Builder serialize(ImmutableMap.Builder builder) { super.serialize(builder); - if (hasTitle()) { + if (this.hasTitle()) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java @@ -2841,7 +2764,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - return !(hasDisplayName() || hasLocalizedName() || hasEnchants() || (lore != null) || hasCustomModelData() || hasBlockData() || hasRepairCost() || !unhandledTags.isEmpty() || !persistentDataContainer.isEmpty() || hideFlag != 0 || isUnbreakable() || hasDamage() || hasAttributeModifiers()); + return !(this.hasDisplayName() || this.hasLocalizedName() || this.hasEnchants() || (this.lore != null) || this.hasCustomModelData() || this.hasBlockData() || this.hasRepairCost() || !this.unhandledTags.isEmpty() || !this.persistentDataContainer.isEmpty() || this.hideFlag != 0 || this.isUnbreakable() || this.hasDamage() || this.hasAttributeModifiers()); } + // Paper start @@ -2877,7 +2800,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public boolean hasRepairCost() { - return repairCost > 0; + return this.repairCost > 0; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftCustomInventoryConverter.java b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftCustomInventoryConverter.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftCustomInventoryConverter.java @@ -2914,7 +2837,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java @@ -0,0 +0,0 @@ public final class CraftInventoryCreator { - return converterMap.get(type).createInventory(holder, type); + return this.converterMap.get(type).createInventory(holder, type); } + // Paper start @@ -2929,10 +2852,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + public Inventory createInventory(InventoryHolder holder, InventoryType type, String title) { - return converterMap.get(type).createInventory(holder, type, title); + return this.converterMap.get(type).createInventory(holder, type, title); } @@ -0,0 +0,0 @@ public final class CraftInventoryCreator { - return DEFAULT_CONVERTER.createInventory(holder, size); + return this.DEFAULT_CONVERTER.createInventory(holder, size); } + // Paper start @@ -2942,7 +2865,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + public Inventory createInventory(InventoryHolder holder, int size, String title) { - return DEFAULT_CONVERTER.createInventory(holder, size, title); + return this.DEFAULT_CONVERTER.createInventory(holder, size, title); } @@ -0,0 +0,0 @@ public final class CraftInventoryCreator { @@ -2960,7 +2883,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java @@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat - return getInventory(getTileEntity()); + return this.getInventory(this.getTileEntity()); } + // Paper start @@ -2977,7 +2900,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public Inventory createInventory(InventoryHolder holder, InventoryType type, String title) { - Container te = getTileEntity(); + Container te = this.getTileEntity(); @@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat return furnace; } @@ -2993,9 +2916,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public Inventory createInventory(InventoryHolder owner, InventoryType type, String title) { - Container tileEntity = getTileEntity(); + Container tileEntity = this.getTileEntity(); @@ -0,0 +0,0 @@ public abstract class CraftTileInventoryConverter implements CraftInventoryCreat - return new BrewingStandBlockEntity(); + return new BrewingStandBlockEntity(BlockPos.ZERO, Blocks.BREWING_STAND.defaultBlockState()); } + // Paper start @@ -3018,7 +2941,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java @@ -0,0 +0,0 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective - return objective.getName(); + return this.objective.getName(); } + // Paper start @@ -3038,14 +2961,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end @Override public String getDisplayName() throws IllegalStateException { - CraftScoreboard scoreboard = checkState(); + CraftScoreboard scoreboard = this.checkState(); diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java @@ -0,0 +0,0 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard { public CraftObjective registerNewObjective(String name, String criteria) throws IllegalArgumentException { - return registerNewObjective(name, criteria, name); + return this.registerNewObjective(name, criteria, name); } + // Paper start + @Override @@ -3064,7 +2987,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + Validate.isTrue(name.length() <= 16, "The name '" + name + "' is longer than the limit of 16 characters"); + Validate.isTrue(board.getObjective(name) == null, "An objective of name '" + name + "' already exists"); + CraftCriteria craftCriteria = CraftCriteria.getFromBukkit(criteria); -+ net.minecraft.world.scores.Objective objective = board.registerObjective(name, craftCriteria.criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); ++ net.minecraft.world.scores.Objective objective = board.addObjective(name, craftCriteria.criteria, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); + return new CraftObjective(this, objective); + } + // Paper end @@ -3081,11 +3004,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Validate.notNull(displayName, "Display name cannot be null"); Validate.notNull(renderType, "RenderType cannot be null"); @@ -0,0 +0,0 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard { - Validate.isTrue(board.getObjective(name) == null, "An objective of name '" + name + "' already exists"); CraftCriteria craftCriteria = CraftCriteria.getFromBukkit(criteria); -- net.minecraft.world.scores.Objective objective = board.registerObjective(name, craftCriteria.criteria, CraftChatMessage.fromStringOrNull(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); + net.minecraft.world.scores.Objective objective = this.board.addObjective(name, craftCriteria.criteria, CraftChatMessage.fromStringOrNull(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); - return new CraftObjective(this, objective); ++ ++ CraftCriteria craftCriteria = CraftCriteria.getFromBukkit(criteria); + ScoreboardObjective objective = board.registerObjective(name, craftCriteria.criteria, CraftChatMessage.fromStringOrNull(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); + return new CraftObjective(this, objective);*/ // Paper + return registerNewObjective(name, criteria, io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(displayName), renderType); // Paper @@ -3098,7 +3022,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java @@ -0,0 +0,0 @@ final class CraftTeam extends CraftScoreboardComponent implements Team { - return team.getName(); + return this.team.getName(); } + // Paper start + @Override @@ -3200,21 +3124,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + public static BlockState getBlock(MaterialData material) { - return getBlock(material.getItemType(), material.getData()); + return CraftMagicNumbers.getBlock(material.getItemType(), material.getData()); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java b/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java +++ b/src/main/java/org/bukkit/craftbukkit/util/LazyHashSet.java @@ -0,0 +0,0 @@ public abstract class LazyHashSet implements Set { - return this.reference = makeReference(); + return this.reference = this.makeReference(); } - abstract Set makeReference(); + protected abstract Set makeReference(); // Paper - protected public boolean isLazy() { - return reference == null; + return this.reference == null; diff --git a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java @@ -3228,11 +3152,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (reference != null) { throw new IllegalStateException("Reference already created!"); } + List players = this.server.getPlayerList().players; + // Paper start + return makePlayerSet(this.server); + } + public static HashSet makePlayerSet(final MinecraftServer server) { + // Paper end - List players = server.getPlayerList().players; ++ List players = server.getPlayerList().players; HashSet reference = new HashSet(players.size()); for (ServerPlayer player : players) { + reference.add(player.getBukkitEntity());