From 1f0fca019be07a7dcaea776a2e46daa3b3115074 Mon Sep 17 00:00:00 2001 From: Jitse Boonstra Date: Sat, 18 Aug 2018 14:37:05 +0200 Subject: [PATCH] For v1.2 - Added 1.13 support. --- .gitignore | 0 .travis.yml | 0 LICENSE.md | 0 README.md | 0 api/pom.xml | 8 +- build.sh | 0 commons/pom.xml | 4 +- .../comphenix/tinyprotocol/Reflection.java | 0 .../comphenix/tinyprotocol/TinyProtocol.java | 0 .../main/java/net/jitse/npclib/NPCLib.java | 0 .../java/net/jitse/npclib/NPCManager.java | 0 .../net/jitse/npclib/api/ActionHandler.java | 0 .../main/java/net/jitse/npclib/api/NPC.java | 0 .../net/jitse/npclib/api/PacketHandler.java | 0 .../jitse/npclib/api/packet/NPCPacket.java | 0 .../jitse/npclib/events/NPCDestroyEvent.java | 0 .../jitse/npclib/events/NPCInteractEvent.java | 0 .../jitse/npclib/events/NPCSpawnEvent.java | 0 .../jitse/npclib/events/click/ClickType.java | 0 .../npclib/events/trigger/TriggerType.java | 0 .../jitse/npclib/listeners/ChunkListener.java | 0 .../npclib/listeners/PacketListener.java | 0 .../npclib/listeners/PlayerListener.java | 0 .../jitse/npclib/nms/holograms/Hologram.java | 27 +++-- .../jitse/npclib/skin/MineSkinFetcher.java | 0 .../main/java/net/jitse/npclib/skin/Skin.java | 0 nms/pom.xml | 3 +- nms/v1_10_R1/pom.xml | 2 +- .../npclib/nms/v1_10_R1/NPC_v1_10_R1.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_11_R1/pom.xml | 2 +- .../npclib/nms/v1_11_R1/NPC_v1_11_R1.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_12_R1/pom.xml | 2 +- .../npclib/nms/v1_12_R1/NPC_v1_12_R1.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_13_R1/pom.xml | 27 +++++ .../npclib/nms/v1_13_R1/NPC_v1_13_R1.java | 105 ++++++++++++++++++ ...acketPlayOutEntityHeadRotationWrapper.java | 26 +++++ .../PacketPlayOutNamedEntitySpawnWrapper.java | 47 ++++++++ .../PacketPlayOutPlayerInfoWrapper.java | 43 +++++++ .../PacketPlayOutScoreboardTeamWrapper.java | 53 +++++++++ nms/v1_8_R1/pom.xml | 8 +- .../jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_8_R2/pom.xml | 2 +- .../jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_8_R3/pom.xml | 2 +- .../jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_9_R1/pom.xml | 2 +- .../jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 nms/v1_9_R2/pom.xml | 2 +- .../jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java | 2 +- ...acketPlayOutEntityHeadRotationWrapper.java | 0 .../PacketPlayOutNamedEntitySpawnWrapper.java | 0 .../PacketPlayOutPlayerInfoWrapper.java | 0 .../PacketPlayOutScoreboardTeamWrapper.java | 0 plugin/pom.xml | 2 +- .../net/jitse/npclib/plugin/NPCLibPlugin.java | 0 plugin/src/main/resources/plugin.yml | 0 pom.xml | 2 +- 85 files changed, 356 insertions(+), 29 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml mode change 100644 => 100755 LICENSE.md mode change 100644 => 100755 README.md mode change 100644 => 100755 api/pom.xml mode change 100644 => 100755 build.sh mode change 100644 => 100755 commons/pom.xml mode change 100644 => 100755 commons/src/main/java/com/comphenix/tinyprotocol/Reflection.java mode change 100644 => 100755 commons/src/main/java/com/comphenix/tinyprotocol/TinyProtocol.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/NPCLib.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/NPCManager.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/api/ActionHandler.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/api/NPC.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/api/PacketHandler.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/api/packet/NPCPacket.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/events/NPCDestroyEvent.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/events/NPCInteractEvent.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/events/NPCSpawnEvent.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/events/click/ClickType.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/events/trigger/TriggerType.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/skin/MineSkinFetcher.java mode change 100644 => 100755 commons/src/main/java/net/jitse/npclib/skin/Skin.java mode change 100644 => 100755 nms/pom.xml mode change 100644 => 100755 nms/v1_10_R1/pom.xml mode change 100644 => 100755 nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java mode change 100644 => 100755 nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_11_R1/pom.xml mode change 100644 => 100755 nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java mode change 100644 => 100755 nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_12_R1/pom.xml mode change 100644 => 100755 nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java mode change 100644 => 100755 nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutScoreboardTeamWrapper.java create mode 100755 nms/v1_13_R1/pom.xml create mode 100755 nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java create mode 100755 nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java create mode 100755 nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java create mode 100755 nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutPlayerInfoWrapper.java create mode 100755 nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_8_R1/pom.xml mode change 100644 => 100755 nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java mode change 100644 => 100755 nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_8_R2/pom.xml mode change 100644 => 100755 nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java mode change 100644 => 100755 nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_8_R3/pom.xml mode change 100644 => 100755 nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java mode change 100644 => 100755 nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_9_R1/pom.xml mode change 100644 => 100755 nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java mode change 100644 => 100755 nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 nms/v1_9_R2/pom.xml mode change 100644 => 100755 nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java mode change 100644 => 100755 nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java mode change 100644 => 100755 nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java mode change 100644 => 100755 nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutPlayerInfoWrapper.java mode change 100644 => 100755 nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutScoreboardTeamWrapper.java mode change 100644 => 100755 plugin/pom.xml mode change 100644 => 100755 plugin/src/main/java/net/jitse/npclib/plugin/NPCLibPlugin.java mode change 100644 => 100755 plugin/src/main/resources/plugin.yml mode change 100644 => 100755 pom.xml diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/LICENSE.md b/LICENSE.md old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/api/pom.xml b/api/pom.xml old mode 100644 new mode 100755 index fe1d660..e324387 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1.4 + 1.2 npclib-api @@ -67,6 +67,12 @@ ${project.version} compile + + net.jitse + npclib-nms-v1_13_R1 + ${project.version} + compile + diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/commons/pom.xml b/commons/pom.xml old mode 100644 new mode 100755 index 0b9befa..2f10a4c --- a/commons/pom.xml +++ b/commons/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1.4 + 1.2 npclib-commons @@ -16,7 +16,7 @@ org.spigotmc spigot - 1.12.2-R0.1-SNAPSHOT + 1.13-R0.1-SNAPSHOT provided diff --git a/commons/src/main/java/com/comphenix/tinyprotocol/Reflection.java b/commons/src/main/java/com/comphenix/tinyprotocol/Reflection.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/com/comphenix/tinyprotocol/TinyProtocol.java b/commons/src/main/java/com/comphenix/tinyprotocol/TinyProtocol.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/NPCLib.java b/commons/src/main/java/net/jitse/npclib/NPCLib.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/NPCManager.java b/commons/src/main/java/net/jitse/npclib/NPCManager.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/api/ActionHandler.java b/commons/src/main/java/net/jitse/npclib/api/ActionHandler.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/api/NPC.java b/commons/src/main/java/net/jitse/npclib/api/NPC.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/api/PacketHandler.java b/commons/src/main/java/net/jitse/npclib/api/PacketHandler.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/api/packet/NPCPacket.java b/commons/src/main/java/net/jitse/npclib/api/packet/NPCPacket.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/events/NPCDestroyEvent.java b/commons/src/main/java/net/jitse/npclib/events/NPCDestroyEvent.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/events/NPCInteractEvent.java b/commons/src/main/java/net/jitse/npclib/events/NPCInteractEvent.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/events/NPCSpawnEvent.java b/commons/src/main/java/net/jitse/npclib/events/NPCSpawnEvent.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/events/click/ClickType.java b/commons/src/main/java/net/jitse/npclib/events/click/ClickType.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/events/trigger/TriggerType.java b/commons/src/main/java/net/jitse/npclib/events/trigger/TriggerType.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java b/commons/src/main/java/net/jitse/npclib/listeners/ChunkListener.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java b/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java b/commons/src/main/java/net/jitse/npclib/listeners/PlayerListener.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java b/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java old mode 100644 new mode 100755 index 6512eb5..6716b50 --- a/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java +++ b/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java @@ -5,8 +5,13 @@ package net.jitse.npclib.nms.holograms; import com.comphenix.tinyprotocol.Reflection; +import net.minecraft.server.v1_13_R1.EntityArmorStand; import org.bukkit.Location; +import org.bukkit.Nameable; import org.bukkit.World; +import org.bukkit.craftbukkit.v1_13_R1.entity.CraftArmorStand; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import java.util.ArrayList; @@ -26,6 +31,8 @@ public class Hologram { private Set destroyPackets = new HashSet<>(); // Classes: + private static final Class CHAT_COMPONENT_TEXT_CLAZZ = Reflection.getMinecraftClass("ChatComponentText"); + private static final Class CHAT_BASE_COMPONENT_CLAZZ = Reflection.getMinecraftClass("IChatBaseComponent"); private static final Class ENTITY_ARMOR_STAND_CLAZZ = Reflection.getMinecraftClass("EntityArmorStand"); private static final Class ENTITY_LIVING_CLAZZ = Reflection.getMinecraftClass("EntityLiving"); private static final Class ENTITY_CLAZZ = Reflection.getMinecraftClass("Entity"); @@ -40,6 +47,8 @@ public class Hologram { private static final Class PACKET_CLAZZ = Reflection.getMinecraftClass("Packet"); // Constructors: + private static final Reflection.ConstructorInvoker CHAT_COMPONENT_TEXT_CONSTRUCTOR = Reflection + .getConstructor(CHAT_COMPONENT_TEXT_CLAZZ, String.class); private static final Reflection.ConstructorInvoker PACKET_PLAY_OUT_SPAWN_ENTITY_LIVING_CONSTRUCTOR = Reflection .getConstructor(PACKET_PLAY_OUT_SPAWN_ENTITY_LIVING_CLAZZ, ENTITY_LIVING_CLAZZ); private static final Reflection.ConstructorInvoker PACKET_PLAY_OUT_ENTITY_DESTROY_CONSTRUCTOR = Reflection @@ -52,10 +61,6 @@ public class Hologram { // Methods: private static final Reflection.MethodInvoker SET_LOCATION_METHOD = Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, "setLocation", double.class, double.class, double.class, float.class, float.class); - private static final Reflection.MethodInvoker SET_CUSTOM_NAME_METHOD = Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, - "setCustomName", String.class); - private static final Reflection.MethodInvoker SET_CUSTOM_NAME_VISIBLE_METHOD = Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, - "setCustomNameVisible", boolean.class); private static final Reflection.MethodInvoker SET_SMALL_METHOD = Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, "setSmall", boolean.class); private static final Reflection.MethodInvoker SET_INVISIBLE_METHOD = Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, @@ -84,11 +89,19 @@ public class Hologram { } - public void generatePackets(boolean above1_9_r2) { + public void generatePackets(boolean above1_9_r2, boolean above_1_12_r1) { Reflection.MethodInvoker gravityMethod = (above1_9_r2 ? Reflection.getMethod(ENTITY_CLAZZ, "setNoGravity", boolean.class) : Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, "setGravity", boolean.class)); + Reflection.MethodInvoker customNameMethod = (above_1_12_r1 ? Reflection.getMethod(ENTITY_CLAZZ, + "setCustomName", CHAT_BASE_COMPONENT_CLAZZ) : Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, + "setCustomName", String.class)); + + Reflection.MethodInvoker customNameVisibilityMethod = (above_1_12_r1 ? Reflection.getMethod(ENTITY_CLAZZ, + "setCustomNameVisible", boolean.class) : Reflection.getMethod(ENTITY_ARMOR_STAND_CLAZZ, + "setCustomNameVisible", boolean.class)); + Location location = start.clone().add(0, delta * lines.size(), 0); Class worldClass = worldServer.getClass().getSuperclass(); @@ -103,8 +116,8 @@ public class Hologram { Object entityArmorStand = entityArmorStandConstructor.invoke(worldServer); SET_LOCATION_METHOD.invoke(entityArmorStand, location.getX(), location.getY(), location.getZ(), 0, 0); - SET_CUSTOM_NAME_METHOD.invoke(entityArmorStand, line); - SET_CUSTOM_NAME_VISIBLE_METHOD.invoke(entityArmorStand, true); + customNameMethod.invoke(entityArmorStand, above_1_12_r1 ? CHAT_COMPONENT_TEXT_CONSTRUCTOR.invoke(line) : line); + customNameVisibilityMethod.invoke(entityArmorStand, true); gravityMethod.invoke(entityArmorStand, above1_9_r2); SET_SMALL_METHOD.invoke(entityArmorStand, true); SET_INVISIBLE_METHOD.invoke(entityArmorStand, true); diff --git a/commons/src/main/java/net/jitse/npclib/skin/MineSkinFetcher.java b/commons/src/main/java/net/jitse/npclib/skin/MineSkinFetcher.java old mode 100644 new mode 100755 diff --git a/commons/src/main/java/net/jitse/npclib/skin/Skin.java b/commons/src/main/java/net/jitse/npclib/skin/Skin.java old mode 100644 new mode 100755 diff --git a/nms/pom.xml b/nms/pom.xml old mode 100644 new mode 100755 index 1cf85e5..86d2b63 --- a/nms/pom.xml +++ b/nms/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1.4 + 1.2 npclib-nms @@ -21,6 +21,7 @@ v1_10_R1 v1_11_R1 v1_12_R1 + v1_13_R1 diff --git a/nms/v1_10_R1/pom.xml b/nms/v1_10_R1/pom.xml old mode 100644 new mode 100755 index 9a6ea59..58383df --- a/nms/v1_10_R1/pom.xml +++ b/nms/v1_10_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_10_R1 diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java old mode 100644 new mode 100755 index 8997c55..b352b2d --- a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java +++ b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/NPC_v1_10_R1.java @@ -38,7 +38,7 @@ public class NPC_v1_10_R1 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().subtract(0, 0.5, 0), lines); - hologram.generatePackets(true); + hologram.generatePackets(true, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_10_R1/src/main/java/net/jitse/npclib/nms/v1_10_R1/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_11_R1/pom.xml b/nms/v1_11_R1/pom.xml old mode 100644 new mode 100755 index 79f9fe4..0fd86a7 --- a/nms/v1_11_R1/pom.xml +++ b/nms/v1_11_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_11_R1 diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java old mode 100644 new mode 100755 index cce8b54..9cab2e7 --- a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java +++ b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/NPC_v1_11_R1.java @@ -38,7 +38,7 @@ public class NPC_v1_11_R1 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); - hologram.generatePackets(true); + hologram.generatePackets(true, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_11_R1/src/main/java/net/jitse/npclib/nms/v1_11_R1/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_12_R1/pom.xml b/nms/v1_12_R1/pom.xml old mode 100644 new mode 100755 index e89322a..3e10e90 --- a/nms/v1_12_R1/pom.xml +++ b/nms/v1_12_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_12_R1 diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java old mode 100644 new mode 100755 index d20a31a..348bd9d --- a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java +++ b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/NPC_v1_12_R1.java @@ -38,7 +38,7 @@ public class NPC_v1_12_R1 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); - hologram.generatePackets(true); + hologram.generatePackets(true, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_12_R1/src/main/java/net/jitse/npclib/nms/v1_12_R1/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_13_R1/pom.xml b/nms/v1_13_R1/pom.xml new file mode 100755 index 0000000..85c3da5 --- /dev/null +++ b/nms/v1_13_R1/pom.xml @@ -0,0 +1,27 @@ + + + + + 4.0.0 + + + net.jitse + npclib-nms + 1.2 + + + npclib-nms-v1_13_R1 + + + + org.spigotmc + spigot + 1.13-R0.1-SNAPSHOT + provided + + + diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java new file mode 100755 index 0000000..b64b767 --- /dev/null +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/NPC_v1_13_R1.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2018 Jitse Boonstra + */ + +package net.jitse.npclib.nms.v1_13_R1; + +import net.jitse.npclib.api.NPC; +import net.jitse.npclib.nms.holograms.Hologram; +import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutEntityHeadRotationWrapper; +import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutNamedEntitySpawnWrapper; +import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutPlayerInfoWrapper; +import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutScoreboardTeamWrapper; +import net.jitse.npclib.skin.Skin; +import net.minecraft.server.v1_13_R1.*; +import org.bukkit.Bukkit; + +import org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.List; + +/** + * @author Jitse Boonstra + */ +public class NPC_v1_13_R1 extends NPC { + + private Hologram hologram; + private PacketPlayOutNamedEntitySpawn packetPlayOutNamedEntitySpawn; + private PacketPlayOutScoreboardTeam packetPlayOutScoreboardTeamRegister, packetPlayOutScoreboardTeamUnregister; + private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove; + private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation; + private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy; + + public NPC_v1_13_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) { + super(plugin, skin, autoHideDistance, lines); + } + + @Override + public void createPackets() { + this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); + hologram.generatePackets(true, true); + + this.gameProfile = generateGameProfile(uuid, name); + PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); + + // Packets for spawning the NPC: + this.packetPlayOutScoreboardTeamRegister = new PacketPlayOutScoreboardTeamWrapper() + .createRegisterTeam(name); // First packet to send. + + this.packetPlayOutPlayerInfoAdd = packetPlayOutPlayerInfoWrapper + .create(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, gameProfile, name); // Second packet to send. + + this.packetPlayOutNamedEntitySpawn = new PacketPlayOutNamedEntitySpawnWrapper() + .create(uuid, location, entityId); // Third packet to send. + + this.packetPlayOutEntityHeadRotation = new PacketPlayOutEntityHeadRotationWrapper() + .create(location, entityId); // Fourth packet to send. + + this.packetPlayOutPlayerInfoRemove = packetPlayOutPlayerInfoWrapper + .create(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, gameProfile, name); // Fifth packet to send (delayed). + + // Packet for destroying the NPC: + this.packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(entityId); // First packet to send. + + // Second packet to send is "packetPlayOutPlayerInfoRemove". + + this.packetPlayOutScoreboardTeamUnregister = new PacketPlayOutScoreboardTeamWrapper() + .createUnregisterTeam(name); // Third packet to send. + } + + @Override + public void sendShowPackets(Player player) { + PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; + + playerConnection.sendPacket(packetPlayOutScoreboardTeamRegister); + playerConnection.sendPacket(packetPlayOutPlayerInfoAdd); + playerConnection.sendPacket(packetPlayOutNamedEntitySpawn); + playerConnection.sendPacket(packetPlayOutEntityHeadRotation); + + hologram.spawn(player); + + + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutPlayerInfoRemove), 50); + } + + @Override + public void sendHidePackets(Player player, boolean scheduler) { + PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection; + + playerConnection.sendPacket(packetPlayOutEntityDestroy); + playerConnection.sendPacket(packetPlayOutPlayerInfoRemove); + + hologram.destroy(player); + + if (scheduler) { + // Sending this a bit later so the player doesn't see the name (for that split second). + Bukkit.getScheduler().runTaskLater(plugin, () -> + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister), 5); + } else { + playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister); + } + } +} diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java new file mode 100755 index 0000000..b9b91f7 --- /dev/null +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018 Jitse Boonstra + */ + +package net.jitse.npclib.nms.v1_13_R1.packets; + +import com.comphenix.tinyprotocol.Reflection; +import net.minecraft.server.v1_13_R1.PacketPlayOutEntityHeadRotation; +import org.bukkit.Location; + +/** + * @author Jitse Boonstra + */ +public class PacketPlayOutEntityHeadRotationWrapper { + + public PacketPlayOutEntityHeadRotation create(Location location, int entityId) { + PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation = new PacketPlayOutEntityHeadRotation(); + + Reflection.getField(packetPlayOutEntityHeadRotation.getClass(), "a", int.class). + set(packetPlayOutEntityHeadRotation, entityId); + Reflection.getField(packetPlayOutEntityHeadRotation.getClass(), "b", byte.class) + .set(packetPlayOutEntityHeadRotation, (byte) ((int) location.getYaw() * 256.0F / 360.0F)); + + return packetPlayOutEntityHeadRotation; + } +} diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java new file mode 100755 index 0000000..151619d --- /dev/null +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2018 Jitse Boonstra + */ + +package net.jitse.npclib.nms.v1_13_R1.packets; + +import com.comphenix.tinyprotocol.Reflection; +import net.minecraft.server.v1_13_R1.DataWatcher; +import net.minecraft.server.v1_13_R1.DataWatcherObject; +import net.minecraft.server.v1_13_R1.DataWatcherRegistry; +import net.minecraft.server.v1_13_R1.PacketPlayOutNamedEntitySpawn; +import org.bukkit.Location; + +import java.util.UUID; + +/** + * @author Jitse Boonstra + */ +public class PacketPlayOutNamedEntitySpawnWrapper { + + public PacketPlayOutNamedEntitySpawn create(UUID uuid, Location location, int entityId) { + PacketPlayOutNamedEntitySpawn packetPlayOutNamedEntitySpawn = new PacketPlayOutNamedEntitySpawn(); + + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "a", int.class) + .set(packetPlayOutNamedEntitySpawn, entityId); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "b", UUID.class) + .set(packetPlayOutNamedEntitySpawn, uuid); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "c", double.class) + .set(packetPlayOutNamedEntitySpawn, location.getX()); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "d", double.class) + .set(packetPlayOutNamedEntitySpawn, location.getY()); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "e", double.class) + .set(packetPlayOutNamedEntitySpawn, location.getZ()); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "f", byte.class) + .set(packetPlayOutNamedEntitySpawn, (byte) ((int) (location.getYaw() * 256.0F / 360.0F))); + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "g", byte.class) + .set(packetPlayOutNamedEntitySpawn, (byte) ((int) (location.getPitch() * 256.0F / 360.0F))); + + DataWatcher dataWatcher = new DataWatcher(null); + dataWatcher.register(new DataWatcherObject<>(13, DataWatcherRegistry.a), (byte) 127); + + Reflection.getField(packetPlayOutNamedEntitySpawn.getClass(), "h", DataWatcher.class) + .set(packetPlayOutNamedEntitySpawn, dataWatcher); + + return packetPlayOutNamedEntitySpawn; + } +} diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutPlayerInfoWrapper.java new file mode 100755 index 0000000..578efb0 --- /dev/null +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutPlayerInfoWrapper.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018 Jitse Boonstra + */ + +package net.jitse.npclib.nms.v1_13_R1.packets; + +import com.comphenix.tinyprotocol.Reflection; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.v1_13_R1.EnumGamemode; +import net.minecraft.server.v1_13_R1.IChatBaseComponent; +import net.minecraft.server.v1_13_R1.PacketPlayOutPlayerInfo; +import org.bukkit.ChatColor; + +import java.util.List; + +/** + * @author Jitse Boonstra + */ +public class PacketPlayOutPlayerInfoWrapper { + + private final Class packetPlayOutPlayerInfoClazz = Reflection.getMinecraftClass("PacketPlayOutPlayerInfo"); + private final Class playerInfoDataClazz = Reflection.getMinecraftClass("PacketPlayOutPlayerInfo$PlayerInfoData"); + private final Reflection.ConstructorInvoker playerInfoDataConstructor = Reflection.getConstructor(playerInfoDataClazz, + packetPlayOutPlayerInfoClazz, GameProfile.class, int.class, EnumGamemode.class, IChatBaseComponent.class); + + public PacketPlayOutPlayerInfo create(PacketPlayOutPlayerInfo.EnumPlayerInfoAction action, GameProfile gameProfile, String name) { + PacketPlayOutPlayerInfo packetPlayOutPlayerInfo = new PacketPlayOutPlayerInfo(); + Reflection.getField(packetPlayOutPlayerInfo.getClass(), "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.class) + .set(packetPlayOutPlayerInfo, action); + + Object playerInfoData = playerInfoDataConstructor.invoke(packetPlayOutPlayerInfo, + gameProfile, 1, EnumGamemode.NOT_SET, + IChatBaseComponent.ChatSerializer.b("{\"text\":\"" + ChatColor.BLUE + "[NPC] " + name + "\"}") + ); + + Reflection.FieldAccessor fieldAccessor = Reflection.getField(packetPlayOutPlayerInfo.getClass(), "b", List.class); + List list = fieldAccessor.get(packetPlayOutPlayerInfo); + list.add(playerInfoData); + fieldAccessor.set(packetPlayOutPlayerInfo, list); + + return packetPlayOutPlayerInfo; + } +} diff --git a/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutScoreboardTeamWrapper.java new file mode 100755 index 0000000..71b3bb0 --- /dev/null +++ b/nms/v1_13_R1/src/main/java/net/jitse/npclib/nms/v1_13_R1/packets/PacketPlayOutScoreboardTeamWrapper.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2018 Jitse Boonstra + */ + +package net.jitse.npclib.nms.v1_13_R1.packets; + +import com.comphenix.tinyprotocol.Reflection; +import net.minecraft.server.v1_13_R1.ChatComponentText; +import net.minecraft.server.v1_13_R1.IChatBaseComponent; +import net.minecraft.server.v1_13_R1.PacketPlayOutScoreboardTeam; + +import java.util.Collection; + +/** + * @author Jitse Boonstra + */ +public class PacketPlayOutScoreboardTeamWrapper { + + public PacketPlayOutScoreboardTeam createRegisterTeam(String name) { + PacketPlayOutScoreboardTeam packetPlayOutScoreboardTeam = new PacketPlayOutScoreboardTeam(); + + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "i", int.class) + .set(packetPlayOutScoreboardTeam, 0); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "a", String.class) + .set(packetPlayOutScoreboardTeam, name); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "b", IChatBaseComponent.class) + .set(packetPlayOutScoreboardTeam, new ChatComponentText(name)); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "e", String.class) + .set(packetPlayOutScoreboardTeam, "never"); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "f", String.class) + .set(packetPlayOutScoreboardTeam, "never"); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "j", int.class) + .set(packetPlayOutScoreboardTeam, 0); + Reflection.FieldAccessor collectionFieldAccessor = Reflection.getField( + packetPlayOutScoreboardTeam.getClass(), "h", Collection.class); + Collection collection = collectionFieldAccessor.get(packetPlayOutScoreboardTeam); + collection.add(name); + collectionFieldAccessor.set(packetPlayOutScoreboardTeam, collection); + + return packetPlayOutScoreboardTeam; + } + + public PacketPlayOutScoreboardTeam createUnregisterTeam(String name) { + PacketPlayOutScoreboardTeam packetPlayOutScoreboardTeam = new PacketPlayOutScoreboardTeam(); + + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "i", int.class) + .set(packetPlayOutScoreboardTeam, 1); + Reflection.getField(packetPlayOutScoreboardTeam.getClass(), "a", String.class) + .set(packetPlayOutScoreboardTeam, name); + + return packetPlayOutScoreboardTeam; + } +} diff --git a/nms/v1_8_R1/pom.xml b/nms/v1_8_R1/pom.xml old mode 100644 new mode 100755 index f1d82e5..20782b9 --- a/nms/v1_8_R1/pom.xml +++ b/nms/v1_8_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_8_R1 @@ -19,5 +19,11 @@ 1.8-R0.1-SNAPSHOT provided + + com.google.code.gson + gson + 2.8.5 + compile + diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java old mode 100644 new mode 100755 index 8ac257d..44987ec --- a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java +++ b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/NPC_v1_8_R1.java @@ -38,7 +38,7 @@ public class NPC_v1_8_R1 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); - hologram.generatePackets(false); + hologram.generatePackets(false, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_8_R1/src/main/java/net/jitse/npclib/nms/v1_8_R1/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R2/pom.xml b/nms/v1_8_R2/pom.xml old mode 100644 new mode 100755 index 7ab7db4..a939ce2 --- a/nms/v1_8_R2/pom.xml +++ b/nms/v1_8_R2/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_8_R2 diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java old mode 100644 new mode 100755 index 0a665ef..978f409 --- a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java +++ b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/NPC_v1_8_R2.java @@ -38,7 +38,7 @@ public class NPC_v1_8_R2 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); - hologram.generatePackets(false); + hologram.generatePackets(false, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_8_R2/src/main/java/net/jitse/npclib/nms/v1_8_R2/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R3/pom.xml b/nms/v1_8_R3/pom.xml old mode 100644 new mode 100755 index 4eec20a..d16c577 --- a/nms/v1_8_R3/pom.xml +++ b/nms/v1_8_R3/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_8_R3 diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java old mode 100644 new mode 100755 index 9bc0129..4a8af07 --- a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java +++ b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/NPC_v1_8_R3.java @@ -38,7 +38,7 @@ public class NPC_v1_8_R3 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().add(0, 0.5, 0), lines); - hologram.generatePackets(false); + hologram.generatePackets(false, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_8_R3/src/main/java/net/jitse/npclib/nms/v1_8_R3/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R1/pom.xml b/nms/v1_9_R1/pom.xml old mode 100644 new mode 100755 index f21ebdb..375ba16 --- a/nms/v1_9_R1/pom.xml +++ b/nms/v1_9_R1/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_9_R1 diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java old mode 100644 new mode 100755 index 77feaca..dd89e26 --- a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java +++ b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/NPC_v1_9_R1.java @@ -38,7 +38,7 @@ public class NPC_v1_9_R1 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().subtract(0, 0.5, 0), lines); - hologram.generatePackets(false); + hologram.generatePackets(false, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_9_R1/src/main/java/net/jitse/npclib/nms/v1_9_R1/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R2/pom.xml b/nms/v1_9_R2/pom.xml old mode 100644 new mode 100755 index 0589dab..bccd03c --- a/nms/v1_9_R2/pom.xml +++ b/nms/v1_9_R2/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib-nms - 1.1.4 + 1.2 npclib-nms-v1_9_R2 diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java old mode 100644 new mode 100755 index a2ce2dc..d254033 --- a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java +++ b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/NPC_v1_9_R2.java @@ -38,7 +38,7 @@ public class NPC_v1_9_R2 extends NPC { @Override public void createPackets() { this.hologram = new Hologram(location.clone().subtract(0, 0.5, 0), lines); - hologram.generatePackets(false); + hologram.generatePackets(false, false); this.gameProfile = generateGameProfile(uuid, name); PacketPlayOutPlayerInfoWrapper packetPlayOutPlayerInfoWrapper = new PacketPlayOutPlayerInfoWrapper(); diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutPlayerInfoWrapper.java old mode 100644 new mode 100755 diff --git a/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_9_R2/src/main/java/net/jitse/npclib/nms/v1_9_R2/packets/PacketPlayOutScoreboardTeamWrapper.java old mode 100644 new mode 100755 diff --git a/plugin/pom.xml b/plugin/pom.xml old mode 100644 new mode 100755 index 6fe7f00..2344506 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -7,7 +7,7 @@ net.jitse npclib - 1.1.4 + 1.2 npclib-plugin diff --git a/plugin/src/main/java/net/jitse/npclib/plugin/NPCLibPlugin.java b/plugin/src/main/java/net/jitse/npclib/plugin/NPCLibPlugin.java old mode 100644 new mode 100755 diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml old mode 100644 new mode 100755 diff --git a/pom.xml b/pom.xml old mode 100644 new mode 100755 index e53f887..acc3aef --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ net.jitse npclib - 1.1.4 + 1.2 NPCLib https://github.com/JitseB/npclib