diff --git a/commons/pom.xml b/commons/pom.xml
index f7e75d9..aa1ea8c 100755
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -19,5 +19,11 @@
1.13.2-R0.1-SNAPSHOTprovided
+
+ org.spigotmc
+ spigot
+ 1.7.10-R0.1-SNAPSHOT
+ provided
+
diff --git a/commons/src/main/java/net/jitse/npclib/api/NPC.java b/commons/src/main/java/net/jitse/npclib/api/NPC.java
index 7856759..7b099e8 100755
--- a/commons/src/main/java/net/jitse/npclib/api/NPC.java
+++ b/commons/src/main/java/net/jitse/npclib/api/NPC.java
@@ -4,8 +4,6 @@
package net.jitse.npclib.api;
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.properties.Property;
import net.jitse.npclib.NPCManager;
import net.jitse.npclib.events.NPCDestroyEvent;
import net.jitse.npclib.events.NPCSpawnEvent;
@@ -39,7 +37,6 @@ public abstract class NPC implements PacketHandler, ActionHandler {
protected final List lines;
protected JavaPlugin plugin;
- protected GameProfile gameProfile;
protected Location location;
public NPC(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
@@ -51,17 +48,6 @@ public abstract class NPC implements PacketHandler, ActionHandler {
NPCManager.add(this);
}
- protected GameProfile generateGameProfile(UUID uuid, String name) {
- GameProfile gameProfile = new GameProfile(uuid, name);
-
- if (skin != null) {
- gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
- }
-
- return gameProfile;
- }
-
-
public void destroy() {
destroy(true);
}
diff --git a/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java b/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java
index cb07d28..453a11a 100755
--- a/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java
+++ b/commons/src/main/java/net/jitse/npclib/listeners/PacketListener.java
@@ -4,9 +4,6 @@
package net.jitse.npclib.listeners;
-import com.comphenix.tinyprotocol.Reflection;
-import com.comphenix.tinyprotocol.TinyProtocol;
-import io.netty.channel.Channel;
import net.jitse.npclib.NPCManager;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.events.NPCInteractEvent;
@@ -14,6 +11,9 @@ import net.jitse.npclib.events.click.ClickType;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
+import tinyprotocol.LegacyTinyProtocol;
+import tinyprotocol.Reflection;
+import tinyprotocol.TinyProtocol;
import java.util.HashSet;
import java.util.Set;
@@ -35,38 +35,75 @@ public class PacketListener {
private final Set delay = new HashSet<>();
public void start(JavaPlugin plugin) {
- new TinyProtocol(plugin) {
+ String versionName = plugin.getServer().getClass().getPackage().getName().split("\\.")[3];
+ if (versionName.equals("v1_7_R4")) {
+ new LegacyTinyProtocol(plugin) {
- @Override
- public Object onPacketInAsync(Player player, Channel channel, Object packet) {
+ @Override
+ public Object onPacketInAsync(Player player, net.minecraft.util.io.netty.channel.Channel channel, Object packet) {
- if (packetPlayInUseEntityClazz.isInstance(packet)) {
- NPC npc = NPCManager.getAllNPCs().stream().filter(
- check -> check.isActuallyShown(player) && check.getEntityId() == (int) entityIdField.get(packet))
- .findFirst().orElse(null);
+ if (packetPlayInUseEntityClazz.isInstance(packet)) {
+ NPC npc = NPCManager.getAllNPCs().stream().filter(
+ check -> check.isActuallyShown(player) && check.getEntityId() == (int) entityIdField.get(packet))
+ .findFirst().orElse(null);
- if (npc == null) {
- // Default player, not doing magic with the packet.
- return super.onPacketInAsync(player, channel, packet);
- }
+ if (npc == null) {
+ // Default player, not doing magic with the packet.
+ return super.onPacketInAsync(player, channel, packet);
+ }
- if (delay.contains(player.getUniqueId())) {
+ if (delay.contains(player.getUniqueId())) {
+ return null;
+ }
+
+ ClickType clickType = actionField.get(packet).toString()
+ .equals("ATTACK") ? ClickType.LEFT_CLICK : ClickType.RIGHT_CLICK;
+
+ Bukkit.getPluginManager().callEvent(new NPCInteractEvent(player, clickType, npc));
+
+ UUID uuid = player.getUniqueId();
+ delay.add(uuid);
+ Bukkit.getScheduler().runTask(plugin, () -> delay.remove(uuid));
return null;
}
- ClickType clickType = actionField.get(packet).toString()
- .equals("ATTACK") ? ClickType.LEFT_CLICK : ClickType.RIGHT_CLICK;
-
- Bukkit.getPluginManager().callEvent(new NPCInteractEvent(player, clickType, npc));
-
- UUID uuid = player.getUniqueId();
- delay.add(uuid);
- Bukkit.getScheduler().runTask(plugin, () -> delay.remove(uuid));
- return null;
+ return super.onPacketInAsync(player, channel, packet);
}
+ };
+ } else {
+ new TinyProtocol(plugin) {
- return super.onPacketInAsync(player, channel, packet);
- }
- };
+ @Override
+ public Object onPacketInAsync(Player player, io.netty.channel.Channel channel, Object packet) {
+
+ if (packetPlayInUseEntityClazz.isInstance(packet)) {
+ NPC npc = NPCManager.getAllNPCs().stream().filter(
+ check -> check.isActuallyShown(player) && check.getEntityId() == (int) entityIdField.get(packet))
+ .findFirst().orElse(null);
+
+ if (npc == null) {
+ // Default player, not doing magic with the packet.
+ return super.onPacketInAsync(player, channel, packet);
+ }
+
+ if (delay.contains(player.getUniqueId())) {
+ return null;
+ }
+
+ ClickType clickType = actionField.get(packet).toString()
+ .equals("ATTACK") ? ClickType.LEFT_CLICK : ClickType.RIGHT_CLICK;
+
+ Bukkit.getPluginManager().callEvent(new NPCInteractEvent(player, clickType, npc));
+
+ UUID uuid = player.getUniqueId();
+ delay.add(uuid);
+ Bukkit.getScheduler().runTask(plugin, () -> delay.remove(uuid));
+ return null;
+ }
+
+ return super.onPacketInAsync(player, channel, packet);
+ }
+ };
+ }
}
}
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
index f6ae8cd..93d6e03 100755
--- a/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java
+++ b/commons/src/main/java/net/jitse/npclib/nms/holograms/Hologram.java
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.holograms;
-import com.comphenix.tinyprotocol.Reflection;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
+import tinyprotocol.Reflection;
import java.util.ArrayList;
import java.util.HashSet;
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
index b352b2d..116c5da 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_10_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_10_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_10_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_10_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_10_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 86a6457..013edcd 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_10_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_10_R1.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index 3a81184..f93494d 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_10_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_10_R1.DataWatcher;
import net.minecraft.server.v1_10_R1.DataWatcherObject;
import net.minecraft.server.v1_10_R1.DataWatcherRegistry;
import net.minecraft.server.v1_10_R1.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index d07e54a..8eb3f76 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_10_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_10_R1.EnumGamemode;
import net.minecraft.server.v1_10_R1.IChatBaseComponent;
import net.minecraft.server.v1_10_R1.PacketPlayOutPlayerInfo;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
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
index d8a643a..862f917 100755
--- 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
@@ -4,8 +4,8 @@
package net.jitse.npclib.nms.v1_10_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_10_R1.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index 9cab2e7..604bd18 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_11_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_11_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_11_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_11_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_11_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 6de5178..afb2b71 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_11_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_11_R1.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index d6e1cff..6f8bc62 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_11_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_11_R1.DataWatcher;
import net.minecraft.server.v1_11_R1.DataWatcherObject;
import net.minecraft.server.v1_11_R1.DataWatcherRegistry;
import net.minecraft.server.v1_11_R1.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index 52413e5..50cffa0 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_11_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_11_R1.EnumGamemode;
import net.minecraft.server.v1_11_R1.IChatBaseComponent;
import net.minecraft.server.v1_11_R1.PacketPlayOutPlayerInfo;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 957b4e5..189cd28 100755
--- 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
@@ -4,8 +4,8 @@
package net.jitse.npclib.nms.v1_11_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_11_R1.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index 348bd9d..a68aad6 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_12_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_12_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_12_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_12_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_12_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 2abba78..5150f55 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_12_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_12_R1.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index 323abde..4b523c0 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_12_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_12_R1.DataWatcher;
import net.minecraft.server.v1_12_R1.DataWatcherObject;
import net.minecraft.server.v1_12_R1.DataWatcherRegistry;
import net.minecraft.server.v1_12_R1.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index f13a0a4..5934af8 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_12_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_12_R1.EnumGamemode;
import net.minecraft.server.v1_12_R1.IChatBaseComponent;
import net.minecraft.server.v1_12_R1.PacketPlayOutPlayerInfo;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 70a7b06..c1a72fd 100755
--- 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
@@ -4,8 +4,8 @@
package net.jitse.npclib.nms.v1_12_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_12_R1.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index b64b767..3f19b4e 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_13_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_13_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -13,12 +15,12 @@ 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;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -31,6 +33,7 @@ public class NPC_v1_13_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_13_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -102,4 +105,14 @@ public class NPC_v1_13_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index b9b91f7..54343a4 100755
--- 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
@@ -4,9 +4,9 @@
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;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index 151619d..e27bcb1 100755
--- 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
@@ -4,12 +4,12 @@
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 tinyprotocol.Reflection;
import java.util.UUID;
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
index 578efb0..298a164 100755
--- 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
@@ -4,12 +4,12 @@
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 tinyprotocol.Reflection;
import java.util.List;
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
index 71b3bb0..f6b4760 100755
--- 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
@@ -4,10 +4,10 @@
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 tinyprotocol.Reflection;
import java.util.Collection;
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/.NPC_v1_13_R2.java.swp b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/.NPC_v1_13_R2.java.swp
new file mode 100644
index 0000000..4de2afe
Binary files /dev/null and b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/.NPC_v1_13_R2.java.swp differ
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java
index 0efa24f..430b7e4 100755
--- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java
+++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/NPC_v1_13_R2.java
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_13_R2;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_13_R2.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_13_R2 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_13_R2(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_13_R2 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java
index cbfc542..153de2d 100755
--- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java
+++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutEntityHeadRotationWrapper.java
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_13_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_13_R2.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java
index e0ab83b..3428361 100755
--- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java
+++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutNamedEntitySpawnWrapper.java
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_13_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_13_R2.DataWatcher;
import net.minecraft.server.v1_13_R2.DataWatcherObject;
import net.minecraft.server.v1_13_R2.DataWatcherRegistry;
import net.minecraft.server.v1_13_R2.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutPlayerInfoWrapper.java
index 79e1fbb..1062e71 100755
--- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutPlayerInfoWrapper.java
+++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutPlayerInfoWrapper.java
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_13_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_13_R2.EnumGamemode;
import net.minecraft.server.v1_13_R2.IChatBaseComponent;
import net.minecraft.server.v1_13_R2.PacketPlayOutPlayerInfo;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
diff --git a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutScoreboardTeamWrapper.java
index 9beae2c..559569b 100755
--- a/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutScoreboardTeamWrapper.java
+++ b/nms/v1_13_R2/src/main/java/net/jitse/npclib/nms/v1_13_R2/packets/PacketPlayOutScoreboardTeamWrapper.java
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.v1_13_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_13_R2.ChatComponentText;
import net.minecraft.server.v1_13_R2.IChatBaseComponent;
import net.minecraft.server.v1_13_R2.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
diff --git a/nms/v1_7_R4/pom.xml b/nms/v1_7_R4/pom.xml
index 5324123..a8da360 100755
--- a/nms/v1_7_R4/pom.xml
+++ b/nms/v1_7_R4/pom.xml
@@ -25,11 +25,5 @@
2.8.5compile
-
- io.netty
- netty-all
- 4.0.23.Final
- compile
-
diff --git a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutEntityHeadRotationWrapper.java b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutEntityHeadRotationWrapper.java
index a8af781..eee28e8 100755
--- a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutEntityHeadRotationWrapper.java
+++ b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutEntityHeadRotationWrapper.java
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_7_R4.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_7_R4.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
diff --git a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutNamedEntitySpawnWrapper.java b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutNamedEntitySpawnWrapper.java
index 95823a7..094a6b6 100755
--- a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutNamedEntitySpawnWrapper.java
+++ b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutNamedEntitySpawnWrapper.java
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.v1_7_R4.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_7_R4.DataWatcher;
import net.minecraft.server.v1_7_R4.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
diff --git a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutPlayerInfoWrapper.java b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutPlayerInfoWrapper.java
index 3673d16..de5002e 100755
--- a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutPlayerInfoWrapper.java
+++ b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutPlayerInfoWrapper.java
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_7_R4.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_7_R4.PacketPlayOutPlayerInfo;
import net.minecraft.util.com.mojang.authlib.GameProfile;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
diff --git a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutScoreboardTeamWrapper.java b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutScoreboardTeamWrapper.java
index 31002f1..5be25bb 100755
--- a/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutScoreboardTeamWrapper.java
+++ b/nms/v1_7_R4/src/main/java/net/jitse/npclib/nms/v1_7_R4/packets/PacketPlayOutScoreboardTeamWrapper.java
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_7_R4.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_7_R4.PacketPlayOutScoreboardTeam;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index 44987ec..c3f06c2 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_8_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_8_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_8_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_8_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -100,4 +104,14 @@ public class NPC_v1_8_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 4d6eb40..2ad82c1 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R1.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index eac29db..51b544d 100755
--- 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
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.v1_8_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R1.DataWatcher;
import net.minecraft.server.v1_8_R1.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index 283b46e..da25dbc 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_8_R1.*;
+import tinyprotocol.Reflection;
import java.util.List;
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
index e682a39..7d58571 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R1.PacketPlayOutScoreboardTeam;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index 978f409..a72645e 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_8_R2;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_8_R2.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_8_R2 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_8_R2(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -100,4 +104,14 @@ public class NPC_v1_8_R2 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 5ac6220..90e8460 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R2.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index f48b8c8..6ae1f99 100755
--- 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
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.v1_8_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R2.DataWatcher;
import net.minecraft.server.v1_8_R2.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index bca9688..5391f9b 100755
--- 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
@@ -4,11 +4,11 @@
package net.jitse.npclib.nms.v1_8_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_8_R2.IChatBaseComponent;
import net.minecraft.server.v1_8_R2.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_8_R2.WorldSettings;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 89a6e7a..4a34e33 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R2.PacketPlayOutScoreboardTeam;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index 4a8af07..39327b2 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_8_R3;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_8_R3.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_8_R3 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_8_R3(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_8_R3 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index e50ebb9..c402e3e 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R3.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index b23b72b..ba0d2d8 100755
--- 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
@@ -4,10 +4,10 @@
package net.jitse.npclib.nms.v1_8_R3.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R3.DataWatcher;
import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index 3c411df..efa002f 100755
--- 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
@@ -4,11 +4,11 @@
package net.jitse.npclib.nms.v1_8_R3.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_8_R3.WorldSettings;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 3b6b53c..eba0912 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_8_R3.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardTeam;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index dd89e26..33b5a5f 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_9_R1;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_9_R1.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_9_R1 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_9_R1(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_9_R1 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 72b2a04..9533973 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_9_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R1.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index d0a2504..af1ae34 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_9_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R1.DataWatcher;
import net.minecraft.server.v1_9_R1.DataWatcherObject;
import net.minecraft.server.v1_9_R1.DataWatcherRegistry;
import net.minecraft.server.v1_9_R1.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index 43695c7..3db1b63 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_9_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_9_R1.IChatBaseComponent;
import net.minecraft.server.v1_9_R1.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_9_R1.WorldSettings;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 41e6873..9bdac53 100755
--- 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
@@ -4,8 +4,8 @@
package net.jitse.npclib.nms.v1_9_R1.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R1.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
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
index d254033..7de3eea 100755
--- 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
@@ -4,6 +4,8 @@
package net.jitse.npclib.nms.v1_9_R2;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
import net.jitse.npclib.api.NPC;
import net.jitse.npclib.nms.holograms.Hologram;
import net.jitse.npclib.nms.v1_9_R2.packets.PacketPlayOutEntityHeadRotationWrapper;
@@ -18,6 +20,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
+import java.util.UUID;
/**
* @author Jitse Boonstra
@@ -30,6 +33,7 @@ public class NPC_v1_9_R2 extends NPC {
private PacketPlayOutPlayerInfo packetPlayOutPlayerInfoAdd, packetPlayOutPlayerInfoRemove;
private PacketPlayOutEntityHeadRotation packetPlayOutEntityHeadRotation;
private PacketPlayOutEntityDestroy packetPlayOutEntityDestroy;
+ private GameProfile gameProfile;
public NPC_v1_9_R2(JavaPlugin plugin, Skin skin, double autoHideDistance, List lines) {
super(plugin, skin, autoHideDistance, lines);
@@ -101,4 +105,14 @@ public class NPC_v1_9_R2 extends NPC {
playerConnection.sendPacket(packetPlayOutScoreboardTeamUnregister);
}
}
+
+ protected GameProfile generateGameProfile(UUID uuid, String name) {
+ GameProfile gameProfile = new GameProfile(uuid, name);
+
+ if (skin != null) {
+ gameProfile.getProperties().put("textures", new Property("textures", skin.getValue(), skin.getSignature()));
+ }
+
+ return gameProfile;
+ }
}
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
index 6b2d008..455c7ce 100755
--- 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
@@ -4,9 +4,9 @@
package net.jitse.npclib.nms.v1_9_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R2.PacketPlayOutEntityHeadRotation;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
/**
* @author Jitse Boonstra
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
index 39f5a3c..5c79f9d 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_9_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R2.DataWatcher;
import net.minecraft.server.v1_9_R2.DataWatcherObject;
import net.minecraft.server.v1_9_R2.DataWatcherRegistry;
import net.minecraft.server.v1_9_R2.PacketPlayOutNamedEntitySpawn;
import org.bukkit.Location;
+import tinyprotocol.Reflection;
import java.util.UUID;
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
index 67afd64..c5e2863 100755
--- 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
@@ -4,12 +4,12 @@
package net.jitse.npclib.nms.v1_9_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.v1_9_R2.IChatBaseComponent;
import net.minecraft.server.v1_9_R2.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_9_R2.WorldSettings;
import org.bukkit.ChatColor;
+import tinyprotocol.Reflection;
import java.util.List;
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
index 7856b63..6751de4 100755
--- 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
@@ -4,8 +4,8 @@
package net.jitse.npclib.nms.v1_9_R2.packets;
-import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.server.v1_9_R2.PacketPlayOutScoreboardTeam;
+import tinyprotocol.Reflection;
import java.util.Collection;
diff --git a/tinyprotocol-legacy/pom.xml b/tinyprotocol-legacy/pom.xml
new file mode 100644
index 0000000..f55b7c4
--- /dev/null
+++ b/tinyprotocol-legacy/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+ pom
+
+
+ net.jitse
+ npclib
+ 1.3
+
+
+ npclib-tinyprotocol-legacy
+
+
+
+ org.spigotmc
+ spigot
+ 1.7.10-R0.1-SNAPSHOT
+ provided
+
+
+
diff --git a/tinyprotocol-legacy/src/main/java/net/comphenix/tinyprotocol/Reflection.java b/tinyprotocol-legacy/src/main/java/net/comphenix/tinyprotocol/Reflection.java
new file mode 100755
index 0000000..eb52597
--- /dev/null
+++ b/tinyprotocol-legacy/src/main/java/net/comphenix/tinyprotocol/Reflection.java
@@ -0,0 +1,397 @@
+/*
+ * Copyright (c) 2018 Jitse Boonstra
+ */
+
+package net.comphenix.tinyprotocol;
+
+import org.bukkit.Bukkit;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * An utility class that simplifies reflection in Bukkit plugins.
+ *
+ * @author Kristian
+ */
+public final class Reflection {
+ /**
+ * An interface for invoking a specific constructor.
+ */
+ public interface ConstructorInvoker {
+ /**
+ * Invoke a constructor for a specific class.
+ *
+ * @param arguments - the arguments to pass to the constructor.
+ * @return The constructed object.
+ */
+ Object invoke(Object... arguments);
+ }
+
+ /**
+ * An interface for invoking a specific method.
+ */
+ public interface MethodInvoker {
+ /**
+ * Invoke a method on a specific target object.
+ *
+ * @param target - the target object, or NULL for a static method.
+ * @param arguments - the arguments to pass to the method.
+ * @return The return value, or NULL if is void.
+ */
+ Object invoke(Object target, Object... arguments);
+ }
+
+ /**
+ * An interface for retrieving the field content.
+ *
+ * @param - field type.
+ */
+ public interface FieldAccessor {
+ /**
+ * Retrieve the content of a field.
+ *
+ * @param target - the target object, or NULL for a static field.
+ * @return The value of the field.
+ */
+ T get(Object target);
+
+ /**
+ * Set the content of a field.
+ *
+ * @param target - the target object, or NULL for a static field.
+ * @param value - the new value of the field.
+ */
+ void set(Object target, Object value);
+
+ /**
+ * Determine if the given object has this field.
+ *
+ * @param target - the object to test.
+ * @return TRUE if it does, FALSE otherwise.
+ */
+ boolean hasField(Object target);
+ }
+
+ // Deduce the net.minecraft.server.v* package
+ private static String OBC_PREFIX = Bukkit.getServer().getClass().getPackage().getName();
+ private static String NMS_PREFIX = OBC_PREFIX.replace("org.bukkit.craftbukkit", "net.minecraft.server");
+ private static String VERSION = OBC_PREFIX.replace("org.bukkit.craftbukkit", "").replace(".", "");
+
+ // Variable replacement
+ private static Pattern MATCH_VARIABLE = Pattern.compile("\\{([^}]+)\\}");
+
+ private Reflection() {
+ // Seal class
+ }
+
+ /**
+ * Retrieve a field accessor for a specific field type and name.
+ *
+ * @param target - the target type.
+ * @param name - the name of the field, or NULL to ignore.
+ * @param fieldType - a compatible field type.
+ * @return The field accessor.
+ */
+ public static FieldAccessor getField(Class> target, String name, Class fieldType) {
+ return getField(target, name, fieldType, 0);
+ }
+
+ /**
+ * Retrieve a field accessor for a specific field type and name.
+ *
+ * @param className - lookup name of the class, see {@link #getClass(String)}.
+ * @param name - the name of the field, or NULL to ignore.
+ * @param fieldType - a compatible field type.
+ * @return The field accessor.
+ */
+ public static FieldAccessor getField(String className, String name, Class fieldType) {
+ return getField(getClass(className), name, fieldType, 0);
+ }
+
+ /**
+ * Retrieve a field accessor for a specific field type and name.
+ *
+ * @param target - the target type.
+ * @param fieldType - a compatible field type.
+ * @param index - the number of compatible fields to skip.
+ * @return The field accessor.
+ */
+ public static FieldAccessor getField(Class> target, Class fieldType, int index) {
+ return getField(target, null, fieldType, index);
+ }
+
+ /**
+ * Retrieve a field accessor for a specific field type and name.
+ *
+ * @param className - lookup name of the class, see {@link #getClass(String)}.
+ * @param fieldType - a compatible field type.
+ * @param index - the number of compatible fields to skip.
+ * @return The field accessor.
+ */
+ public static FieldAccessor getField(String className, Class fieldType, int index) {
+ return getField(getClass(className), fieldType, index);
+ }
+
+ // Common method
+ private static FieldAccessor getField(Class> target, String name, Class fieldType, int index) {
+ for (final Field field : target.getDeclaredFields()) {
+ if ((name == null || field.getName().equals(name)) && fieldType.isAssignableFrom(field.getType()) && index-- <= 0) {
+ field.setAccessible(true);
+
+ // A function for retrieving a specific field value
+ return new FieldAccessor() {
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public T get(Object target) {
+ try {
+ return (T) field.get(target);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Cannot access reflection.", e);
+ }
+ }
+
+ @Override
+ public void set(Object target, Object value) {
+ try {
+ field.set(target, value);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Cannot access reflection.", e);
+ }
+ }
+
+ @Override
+ public boolean hasField(Object target) {
+ // target instanceof DeclaringClass
+ return field.getDeclaringClass().isAssignableFrom(target.getClass());
+ }
+ };
+ }
+ }
+
+ // Search in parent classes
+ if (target.getSuperclass() != null)
+ return getField(target.getSuperclass(), name, fieldType, index);
+
+ throw new IllegalArgumentException("Cannot find field with type " + fieldType);
+ }
+
+ /**
+ * Search for the first publicly and privately defined method of the given name and parameter count.
+ *
+ * @param className - lookup name of the class, see {@link #getClass(String)}.
+ * @param methodName - the method name, or NULL to skip.
+ * @param params - the expected parameters.
+ * @return An object that invokes this specific method.
+ * @throws IllegalStateException If we cannot find this method.
+ */
+ public static MethodInvoker getMethod(String className, String methodName, Class>... params) {
+ return getTypedMethod(getClass(className), methodName, null, params);
+ }
+
+ /**
+ * Search for the first publicly and privately defined method of the given name and parameter count.
+ *
+ * @param clazz - a class to start with.
+ * @param methodName - the method name, or NULL to skip.
+ * @param params - the expected parameters.
+ * @return An object that invokes this specific method.
+ * @throws IllegalStateException If we cannot find this method.
+ */
+ public static MethodInvoker getMethod(Class> clazz, String methodName, Class>... params) {
+ return getTypedMethod(clazz, methodName, null, params);
+ }
+
+ /**
+ * Search for the first publicly and privately defined method of the given name and parameter count.
+ *
+ * @param clazz - a class to start with.
+ * @param methodName - the method name, or NULL to skip.
+ * @param returnType - the expected return type, or NULL to ignore.
+ * @param params - the expected parameters.
+ * @return An object that invokes this specific method.
+ * @throws IllegalStateException If we cannot find this method.
+ */
+ public static MethodInvoker getTypedMethod(Class> clazz, String methodName, Class> returnType, Class>... params) {
+ for (final Method method : clazz.getDeclaredMethods()) {
+ if ((methodName == null || method.getName().equals(methodName))
+ && (returnType == null || method.getReturnType().equals(returnType))
+ && Arrays.equals(method.getParameterTypes(), params)) {
+ method.setAccessible(true);
+
+ return (target, arguments) -> {
+ try {
+ return method.invoke(target, arguments);
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot invoke method " + method, e);
+ }
+ };
+ }
+ }
+
+ // Search in every superclass
+ if (clazz.getSuperclass() != null)
+ return getMethod(clazz.getSuperclass(), methodName, params);
+
+ throw new IllegalStateException(String.format("Unable to find method %s (%s).", methodName, Arrays.asList(params)));
+ }
+
+ /**
+ * Search for the first publically and privately defined constructor of the given name and parameter count.
+ *
+ * @param className - lookup name of the class, see {@link #getClass(String)}.
+ * @param params - the expected parameters.
+ * @return An object that invokes this constructor.
+ * @throws IllegalStateException If we cannot find this method.
+ */
+ public static ConstructorInvoker getConstructor(String className, Class>... params) {
+ return getConstructor(getClass(className), params);
+ }
+
+ /**
+ * Search for the first publicly and privately defined constructor of the given name and parameter count.
+ *
+ * @param clazz - a class to start with.
+ * @param params - the expected parameters.
+ * @return An object that invokes this constructor.
+ * @throws IllegalStateException If we cannot find this method.
+ */
+ public static ConstructorInvoker getConstructor(Class> clazz, Class>... params) {
+ for (final Constructor> constructor : clazz.getDeclaredConstructors()) {
+ if (Arrays.equals(constructor.getParameterTypes(), params)) {
+ constructor.setAccessible(true);
+
+ return arguments -> {
+ try {
+ return constructor.newInstance(arguments);
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot invoke constructor " + constructor, e);
+ }
+ };
+ }
+ }
+
+ throw new IllegalStateException(String.format("Unable to find constructor for %s (%s).", clazz, Arrays.asList(params)));
+ }
+
+ /**
+ * Retrieve a class from its full name, without knowing its type on compile time.
+ *
+ * This is useful when looking up fields by a NMS or OBC type.
+ *
+ *
+ * @param lookupName - the class name with variables.
+ * @return The class.
+ * @see {@link #getClass()} for more information.
+ */
+ public static Class