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);