From 75aaa02cb57cafaba72f199e23bb24b3814e26d3 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Mon, 8 Jan 2024 17:29:35 +0800 Subject: [PATCH] fix packet on 1.18 --- .../api/manager/VersionManager.java | 2 ++ .../customfishing/util/ArmorStandUtils.java | 22 +++++++++++++------ .../version/VersionManagerImpl.java | 10 +++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/net/momirealms/customfishing/api/manager/VersionManager.java b/api/src/main/java/net/momirealms/customfishing/api/manager/VersionManager.java index 6e4657a0..cba49684 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/manager/VersionManager.java +++ b/api/src/main/java/net/momirealms/customfishing/api/manager/VersionManager.java @@ -21,6 +21,8 @@ import java.util.concurrent.CompletableFuture; public interface VersionManager { + boolean isVersionNewerThan1_19(); + boolean isVersionNewerThan1_19_R2(); CompletableFuture checkUpdate(); diff --git a/plugin/src/main/java/net/momirealms/customfishing/util/ArmorStandUtils.java b/plugin/src/main/java/net/momirealms/customfishing/util/ArmorStandUtils.java index bd5c3748..d5394a7b 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/util/ArmorStandUtils.java +++ b/plugin/src/main/java/net/momirealms/customfishing/util/ArmorStandUtils.java @@ -61,13 +61,21 @@ public class ArmorStandUtils { */ public static PacketContainer getSpawnPacket(int id, Location location) { PacketContainer entityPacket = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY); - entityPacket.getModifier().write(0, id); - entityPacket.getModifier().write(1, UUID.randomUUID()); - entityPacket.getEntityTypeModifier().write(0, EntityType.ARMOR_STAND); - entityPacket.getDoubles().write(0, location.getX()); - entityPacket.getDoubles().write(1, location.getY()); - entityPacket.getDoubles().write(2, location.getZ()); - entityPacket.getBytes().write(0, (byte) ((location.getYaw() % 360) * 128 / 180)); + try { + entityPacket.getModifier().write(0, id); + entityPacket.getModifier().write(1, UUID.randomUUID()); + entityPacket.getEntityTypeModifier().write(0, EntityType.ARMOR_STAND); + entityPacket.getDoubles().write(0, location.getX()); + entityPacket.getDoubles().write(1, location.getY()); + entityPacket.getDoubles().write(2, location.getZ()); + if (CustomFishingPlugin.get().getVersionManager().isVersionNewerThan1_19()) { + entityPacket.getBytes().write(0, (byte) ((location.getYaw() % 360) * 128 / 180)); + } else { + entityPacket.getIntegers().write(5, (int) ((location.getYaw() % 360) * 128 / 180)); + } + } catch (Exception e) { + e.printStackTrace(); + } return entityPacket; } diff --git a/plugin/src/main/java/net/momirealms/customfishing/version/VersionManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/version/VersionManagerImpl.java index fcef8e73..7b30764a 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/version/VersionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/version/VersionManagerImpl.java @@ -35,6 +35,7 @@ public class VersionManagerImpl implements VersionManager { private final boolean isNewerThan1_19_R2; private final boolean isNewerThan1_20; + private final boolean isNewerThan1_19; private final String serverVersion; private final CustomFishingPluginImpl plugin; private final boolean isSpigot; @@ -54,12 +55,15 @@ public class VersionManagerImpl implements VersionManager { if (main_ver >= 20) { isNewerThan1_19_R2 = true; isNewerThan1_20 = true; + isNewerThan1_19 = true; } else if (main_ver == 19) { isNewerThan1_19_R2 = Integer.parseInt(split[2].substring(1)) >= 2; isNewerThan1_20 = false; + isNewerThan1_19 = true; } else { isNewerThan1_19_R2 = false; isNewerThan1_20 = false; + isNewerThan1_19 = false; } // Check if the server is Spigot @@ -78,6 +82,12 @@ public class VersionManagerImpl implements VersionManager { this.pluginVersion = plugin.getDescription().getVersion(); } + @Override + public boolean isVersionNewerThan1_19() { + return isNewerThan1_19; + } + + @Override public boolean isVersionNewerThan1_19_R2() { return isNewerThan1_19_R2;