diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 73fdc6c..3961091 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -136,6 +136,12 @@
1.7.9-R0.1
provided
+
+ org.bukkit
+ craftbukkit
+ 1.8.3
+ provided
+
com.google.guava
guava
diff --git a/pom.xml b/pom.xml
index f5e41f5..fc0dde9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,6 +77,14 @@
provided
+
+ org.bukkit
+ craftbukkit
+ 1.8.3
+ jar
+ provided
+
+
com.cnaude.pircbotx
diff --git a/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java b/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java
index fa51b65..ac96f0d 100644
--- a/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java
+++ b/src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java
@@ -27,7 +27,13 @@
import com.comphenix.protocol.reflect.FieldAccessException;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.google.common.base.Charsets;
+import com.mojang.authlib.GameProfile;
import java.lang.reflect.InvocationTargetException;
+import java.util.UUID;
+import net.minecraft.server.v1_8_R2.EntityPlayer;
+import net.minecraft.server.v1_8_R2.MinecraftServer;
+import net.minecraft.server.v1_8_R2.PacketPlayOutPlayerInfo;
+import net.minecraft.server.v1_8_R2.PlayerInteractManager;
import org.bukkit.entity.Player;
import org.pircbotx.Channel;
import org.pircbotx.User;
@@ -119,6 +125,39 @@ private PacketContainer tabPacket(String name, boolean add) {
} catch (Exception ex) {
plugin.logError("tabPacket: " + ex.getMessage());
}
+ } else if (version.contains("MC: 1.8.3")) {
+ try {
+ UUID uuid = null; // = plugin.getPlayerUuid(name);
+ if (uuid == null) {
+ uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + displayName).getBytes(Charsets.UTF_8));
+ }
+ if (add) {
+ EntityPlayer pl = new EntityPlayer(
+ MinecraftServer.getServer(),
+ MinecraftServer.getServer().getWorldServer(0),
+ (GameProfile) (new WrappedGameProfile(uuid, displayName)).getHandle(),
+ new PlayerInteractManager(MinecraftServer.getServer().getWorldServer(0))
+ );
+ PacketPlayOutPlayerInfo pi
+ = new PacketPlayOutPlayerInfo(
+ PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, pl);
+ return PacketContainer.fromPacket(pi);
+ } else {
+ plugin.logDebug("T: Removing: " + name);
+ EntityPlayer pl = new EntityPlayer(
+ MinecraftServer.getServer(),
+ MinecraftServer.getServer().getWorldServer(0),
+ (GameProfile) (new WrappedGameProfile(uuid, displayName)).getHandle(),
+ new PlayerInteractManager(MinecraftServer.getServer().getWorldServer(0))
+ );
+ PacketPlayOutPlayerInfo pi
+ = new PacketPlayOutPlayerInfo(
+ PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, pl);
+ return PacketContainer.fromPacket(pi);
+ }
+ } catch (Exception ex) {
+ plugin.logError("tabPacket: " + ex.getMessage());
+ }
} else {
plugin.logDebug("tabPacket: deprecated ");
playerListConstructor = protocolManager.createPacketConstructor(Packets.Server.PLAYER_INFO, "", false, (int) 0);