From 0da27515a4d1e041c6aae5c23d7435597daa3431 Mon Sep 17 00:00:00 2001 From: TrainmasterHD Date: Sat, 16 Dec 2023 15:47:22 +0100 Subject: [PATCH] Finish 1.20.4 update (#2683) * update PacketTypes * add new enum values for EnumWrappers and add ScoreboardAction to known invalids as it was removed * make MinecraftKey optional in AutoWrapperTest * update adventure dependencies to 4.14.0 * fix typo in maximum minecraft version * add chat component for disconnect packet when running clone test * adjust chat components to new component structure --- build.gradle | 6 +- .../com/comphenix/protocol/PacketType.java | 200 ++++++++++-------- .../comphenix/protocol/ProtocolLibrary.java | 2 +- .../protocol/wrappers/EnumWrappers.java | 11 +- .../protocol/events/PacketContainerTest.java | 4 +- .../protocol/wrappers/AutoWrapperTest.java | 17 +- .../protocol/wrappers/EnumWrappersTest.java | 2 +- 7 files changed, 134 insertions(+), 108 deletions(-) diff --git a/build.gradle b/build.gradle index 5d41a830..06127ff6 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,7 @@ dependencies { compileOnly 'org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT' compileOnly 'org.spigotmc:spigot:1.20.4-R0.1-SNAPSHOT' compileOnly 'io.netty:netty-all:4.0.23.Final' - compileOnly 'net.kyori:adventure-text-serializer-gson:4.13.0' + compileOnly 'net.kyori:adventure-text-serializer-gson:4.14.0' compileOnly 'com.googlecode.json-simple:json-simple:1.1.1' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.0' @@ -47,8 +47,8 @@ dependencies { testImplementation 'io.netty:netty-common:4.1.97.Final' testImplementation 'io.netty:netty-transport:4.1.97.Final' testImplementation 'org.spigotmc:spigot:1.20.4-R0.1-SNAPSHOT' - testImplementation 'net.kyori:adventure-text-serializer-gson:4.13.0' - testImplementation 'net.kyori:adventure-text-serializer-plain:4.13.1' + testImplementation 'net.kyori:adventure-text-serializer-gson:4.14.0' + testImplementation 'net.kyori:adventure-text-serializer-plain:4.14.0' } java { diff --git a/src/main/java/com/comphenix/protocol/PacketType.java b/src/main/java/com/comphenix/protocol/PacketType.java index 4ecaefd2..0b9cd1eb 100644 --- a/src/main/java/com/comphenix/protocol/PacketType.java +++ b/src/main/java/com/comphenix/protocol/PacketType.java @@ -29,7 +29,7 @@ import org.bukkit.Bukkit; public class PacketType implements Serializable, Cloneable, Comparable { // Increment whenever the type changes private static final long serialVersionUID = 1L; - + /** * Represents an unknown packet ID. */ @@ -167,53 +167,57 @@ public class PacketType implements Serializable, Cloneable, Comparable(); for (String classname : names) { if (isMcpPacketName(classname)) { // Minecraft MCP packets diff --git a/src/main/java/com/comphenix/protocol/ProtocolLibrary.java b/src/main/java/com/comphenix/protocol/ProtocolLibrary.java index 79123135..515fad43 100644 --- a/src/main/java/com/comphenix/protocol/ProtocolLibrary.java +++ b/src/main/java/com/comphenix/protocol/ProtocolLibrary.java @@ -37,7 +37,7 @@ public class ProtocolLibrary { /** * The maximum version ProtocolLib has been tested with. */ - public static final String MAXIMUM_MINECRAFT_VERSION = "1.20.24"; + public static final String MAXIMUM_MINECRAFT_VERSION = "1.20.4"; /** * The date (with ISO 8601 or YYYY-MM-DD) when the most recent version (1.20.4) was released. diff --git a/src/main/java/com/comphenix/protocol/wrappers/EnumWrappers.java b/src/main/java/com/comphenix/protocol/wrappers/EnumWrappers.java index 5e8d1879..3f3d9a94 100644 --- a/src/main/java/com/comphenix/protocol/wrappers/EnumWrappers.java +++ b/src/main/java/com/comphenix/protocol/wrappers/EnumWrappers.java @@ -121,7 +121,11 @@ public abstract class EnumWrappers { SUCCESSFULLY_LOADED, DECLINED, FAILED_DOWNLOAD, - ACCEPTED + ACCEPTED, + DOWNLOADED, + INVALID_URL, + FAILED_RELOAD, + DISCARDED; } public enum PlayerInfoAction { @@ -404,7 +408,10 @@ public abstract class EnumWrappers { ROARING, SNIFFING, EMERGING, - DIGGING; + DIGGING, + SLIDING, + SHOOTING, + INHALING; private final static EquivalentConverter POSE_CONVERTER = EnumWrappers.getEntityPoseConverter(); diff --git a/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java b/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java index be9e6435..99dd0c18 100644 --- a/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java +++ b/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java @@ -363,7 +363,7 @@ public class PacketContainerTest { chatPacket.getChatComponents().write(0, WrappedChatComponent.fromChatMessage("You shall not " + ChatColor.ITALIC + "pass!")[0]); - assertEquals("{\"extra\":[{\"text\":\"You shall not \"},{\"italic\":true,\"text\":\"pass!\"}],\"text\":\"\"}", + assertEquals("{\"text\":\"\",\"extra\":[\"You shall not \",{\"text\":\"pass!\",\"italic\":true}]}", chatPacket.getChatComponents().read(0).getJson()); } @@ -901,7 +901,7 @@ public class PacketContainerTest { new WrappedDataValue(0, Registry.get(CatVariant.class), catVariantRegistry.e(CatVariant.e)), new WrappedDataValue(0, Registry.get(FrogVariant.class), FrogVariant.a) )); - } else if (type == PacketType.Play.Server.CHAT) { + } else if (type == PacketType.Play.Server.CHAT || type == PacketType.Login.Server.DISCONNECT) { constructed.getChatComponents().write(0, ComponentConverter.fromBaseComponent(TEST_COMPONENT)); } else if (type == PacketType.Play.Server.REMOVE_ENTITY_EFFECT || type == PacketType.Play.Server.ENTITY_EFFECT) { constructed.getEffectTypes().write(0, PotionEffectType.GLOWING); diff --git a/src/test/java/com/comphenix/protocol/wrappers/AutoWrapperTest.java b/src/test/java/com/comphenix/protocol/wrappers/AutoWrapperTest.java index ebb40cb3..86f04321 100644 --- a/src/test/java/com/comphenix/protocol/wrappers/AutoWrapperTest.java +++ b/src/test/java/com/comphenix/protocol/wrappers/AutoWrapperTest.java @@ -35,7 +35,7 @@ public class AutoWrapperTest { display.title = WrappedChatComponent.fromText("Test123"); display.description = WrappedChatComponent.fromText("Test567"); display.item = new ItemStack(Material.GOLD_INGOT); - display.background = new MinecraftKey("test"); + display.background = Optional.of(new MinecraftKey("test")); display.frameType = WrappedFrameType.CHALLENGE; display.announceChat = false; display.showToast = true; @@ -48,7 +48,7 @@ public class AutoWrapperTest { assertTrue(nms.h()); assertTrue(nms.j()); assertFalse(nms.i()); - assertTrue(nms.d().isPresent()); + assertTrue(nms.d().isPresent()); assertEquals("test", nms.d().get().a()); validateRawText(nms.a(), "Test123"); validateRawText(nms.b(), "Test567"); @@ -77,9 +77,10 @@ public class AutoWrapperTest { assertTrue(wrapped.showToast); assertTrue(wrapped.hidden); assertFalse(wrapped.announceChat); - assertEquals("test", wrapped.background.getKey()); - assertEquals("{\"text\":\"Test123\"}", wrapped.title.getJson()); - assertEquals("{\"text\":\"Test567\"}", wrapped.description.getJson()); + assertTrue(wrapped.background.isPresent()); + assertEquals("test", wrapped.background.get().getKey()); + assertEquals("\"Test123\"", wrapped.title.getJson()); + assertEquals("\"Test567\"", wrapped.description.getJson()); assertSame(WrappedFrameType.CHALLENGE, wrapped.frameType); assertSame(Material.ENDER_EYE, wrapped.item.getType()); assertEquals(5f, wrapped.x, 0f); @@ -92,14 +93,14 @@ public class AutoWrapperTest { .field(0, BukkitConverters.getWrappedChatComponentConverter()) .field(1, BukkitConverters.getWrappedChatComponentConverter()) .field(2, BukkitConverters.getItemStackConverter()) - .field(3, MinecraftKey.getConverter()) + .field(3, Converters.optional(MinecraftKey.getConverter())) .field(4, EnumWrappers.getGenericConverter(getMinecraftClass("advancements.AdvancementFrameType", "advancements.FrameType"), WrappedFrameType.class)); } private void validateRawText(IChatBaseComponent component, String expected) { LiteralContents content = assertInstanceOf(LiteralContents.class, component.b()); - assertEquals(expected, content.a()); + assertEquals(expected, content.b()); } public enum WrappedFrameType { @@ -113,7 +114,7 @@ public class AutoWrapperTest { public WrappedChatComponent title; public WrappedChatComponent description; public ItemStack item; - public MinecraftKey background; + public Optional background; public WrappedFrameType frameType; public boolean showToast; public boolean announceChat; diff --git a/src/test/java/com/comphenix/protocol/wrappers/EnumWrappersTest.java b/src/test/java/com/comphenix/protocol/wrappers/EnumWrappersTest.java index dd3e2c45..50b84604 100644 --- a/src/test/java/com/comphenix/protocol/wrappers/EnumWrappersTest.java +++ b/src/test/java/com/comphenix/protocol/wrappers/EnumWrappersTest.java @@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.fail; public class EnumWrappersTest { private static final Set KNOWN_INVALID = Sets.newHashSet( - "Particle", "WorldBorderAction", "CombatEventType", "TitleAction", "ChatType", "TitleAction" + "Particle", "WorldBorderAction", "CombatEventType", "TitleAction", "ChatType", "TitleAction", "ScoreboardAction" ); @BeforeAll