From ca01a94502289e91523cc5ec814540d81cdcded8 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Sun, 2 Apr 2023 12:00:31 -0500 Subject: [PATCH] feat: full 1.19.4 support --- .../user/manager/UserWardrobeManager.java | 2 +- .../hmccosmetics/util/packets/BasePacket.java | 1 + .../hmccosmetics/util/packets/PacketManager.java | 14 +++++++------- .../wrappers/WrapperPlayServerPlayerInfo.java | 7 ++++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java index a6dea78d..83c409cf 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java @@ -156,7 +156,7 @@ public class UserWardrobeManager { List outsideViewers = PacketManager.getViewers(viewingLocation); outsideViewers.remove(player); - MessagesUtil.sendMessage(player, "closed-wardrobe"); + if (player != null) MessagesUtil.sendMessage(player, "closed-wardrobe"); Runnable run = () -> { this.active = false; diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/BasePacket.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/BasePacket.java index d185da05..6e517355 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/BasePacket.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/BasePacket.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Player; public class BasePacket { public static void sendPacket(Player player, PacketContainer packet) { + if (player == null) return; ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/PacketManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/PacketManager.java index dbac7bfa..a789f3c1 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/PacketManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/PacketManager.java @@ -135,7 +135,8 @@ public class PacketManager extends BasePacket { packet.getModifier().writeDefaults(); packet.getIntegers().write(0, entityId); WrappedDataWatcher wrapper = new WrappedDataWatcher(); - if (!NMSHandlers.getVersion().contains("v1_19_R2")) { + + if (NMSHandlers.getVersion().contains("v1_17_R1") || NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1")) { wrapper.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class)), (byte) 0x20); packet.getWatchableCollectionModifier().write(0, wrapper.getWatchableObjects()); } else { @@ -305,19 +306,17 @@ public class PacketManager extends BasePacket { WrappedGameProfile wrappedGameProfile = new WrappedGameProfile(uuid, name); WrappedSignedProperty skinData = PlayerUtils.getSkin(skinnedPlayer); if (skinData != null) wrappedGameProfile.getProperties().put("textures", skinData); - if (!NMSHandlers.getVersion().contains("v1_19_R2")) { - info.setData(List.of(new PlayerInfoData(wrappedGameProfile, 0, EnumWrappers.NativeGameMode.CREATIVE, WrappedChatComponent.fromText(name)))); - } else { + if (NMSHandlers.getVersion().contains("v1_17_R1") || NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1") || NMSHandlers.getVersion().contains("v1_19_R3")) { info.getHandle().getPlayerInfoDataLists().write(1, Collections.singletonList(new PlayerInfoData( wrappedGameProfile, 0, EnumWrappers.NativeGameMode.CREATIVE, WrappedChatComponent.fromText(name) ))); + } else { + info.setData(List.of(new PlayerInfoData(wrappedGameProfile, 0, EnumWrappers.NativeGameMode.CREATIVE, WrappedChatComponent.fromText(name)))); } for (final Player p : sendTo) sendPacket(p, info.getHandle()); - return; - } /** @@ -364,7 +363,7 @@ public class PacketManager extends BasePacket { final UUID uuid, final List sendTo ) { - if (!NMSHandlers.getVersion().contains("v1_19_R2")) { + if (NMSHandlers.getVersion().contains("v1_17_R1") || NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1")) { WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo(); info.setAction(EnumWrappers.PlayerInfoAction.REMOVE_PLAYER); @@ -377,6 +376,7 @@ public class PacketManager extends BasePacket { for (final Player p : sendTo) sendPacket(p, info.getHandle()); return; } + PacketContainer packet = new PacketContainer(PacketType.Play.Server.PLAYER_INFO_REMOVE); packet.getUUIDLists().write(0, List.of(uuid)); for (final Player p : sendTo) sendPacket(p, packet); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/wrappers/WrapperPlayServerPlayerInfo.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/wrappers/WrapperPlayServerPlayerInfo.java index 756ef7d9..9ab572cb 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/wrappers/WrapperPlayServerPlayerInfo.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/wrappers/WrapperPlayServerPlayerInfo.java @@ -26,11 +26,12 @@ public class WrapperPlayServerPlayerInfo extends AbstractPacket { } public void setAction(PlayerInfoAction value) { - if (!NMSHandlers.getVersion().contains("v1_19_R2")) { + if (NMSHandlers.getVersion().contains("v1_17_R1") || NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1")) { handle.getPlayerInfoAction().write(0, value); - } else { - handle.getPlayerInfoActions().write(0, Set.of(value)); + return; } + // New way of handling it 1.19.3+ + handle.getPlayerInfoActions().write(0, Set.of(value)); } public List getData() {