Add support for colored hex player names, still has an issue with longer names and splitting not respecting the hex
This commit is contained in:
		| @@ -29,7 +29,7 @@ public class PlayerDisguise extends TargetedDisguise { | ||||
|      * Has someone set name visible explicitly? | ||||
|      */ | ||||
|     private boolean explicitNameVisible = false; | ||||
|     private UUID uuid = UUID.randomUUID(); | ||||
|     private final UUID uuid = UUID.randomUUID(); | ||||
|     private volatile DisguiseUtilities.DScoreTeam scoreboardName; | ||||
|  | ||||
|     private PlayerDisguise() { | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import me.libraryaddict.disguise.LibsDisguises; | ||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||
| import me.libraryaddict.disguise.utilities.packets.packetlisteners.*; | ||||
| import me.libraryaddict.disguise.utilities.reflection.NmsVersion; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.entity.Player; | ||||
|  | ||||
| @@ -26,6 +27,7 @@ public class PacketsManager { | ||||
|     private static boolean viewDisguisesListenerEnabled; | ||||
|     private static PacketsHandler packetsHandler; | ||||
|     private static PacketListener destroyListener; | ||||
|     private static PacketListener scoreboardTeamListener; | ||||
|  | ||||
|     public static void addPacketListeners() { | ||||
|         // Add a client listener to cancel them interacting with uninteractable disguised entitys. | ||||
| @@ -166,6 +168,11 @@ public class PacketsManager { | ||||
|  | ||||
|             ProtocolLibrary.getProtocolManager().addPacketListener(mainListener); | ||||
|             ProtocolLibrary.getProtocolManager().addPacketListener(destroyListener); | ||||
|  | ||||
|             if (NmsVersion.v1_16.isSupported()) { | ||||
|                 scoreboardTeamListener = new PacketListenerScoreboardTeam(); | ||||
|                 ProtocolLibrary.getProtocolManager().addPacketListener(scoreboardTeamListener); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,62 @@ | ||||
| package me.libraryaddict.disguise.utilities.packets.packetlisteners; | ||||
|  | ||||
| import com.comphenix.protocol.PacketType; | ||||
| import com.comphenix.protocol.events.PacketAdapter; | ||||
| import com.comphenix.protocol.events.PacketContainer; | ||||
| import com.comphenix.protocol.events.PacketEvent; | ||||
| import com.comphenix.protocol.reflect.StructureModifier; | ||||
| import com.comphenix.protocol.wrappers.WrappedChatComponent; | ||||
| import me.libraryaddict.disguise.LibsDisguises; | ||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||
| import me.libraryaddict.disguise.disguisetypes.PlayerDisguise; | ||||
| import me.libraryaddict.disguise.disguisetypes.TargetedDisguise; | ||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||
| import net.md_5.bungee.api.chat.BaseComponent; | ||||
| import net.md_5.bungee.chat.ComponentSerializer; | ||||
| import org.bukkit.plugin.Plugin; | ||||
|  | ||||
| import java.util.Set; | ||||
|  | ||||
| /** | ||||
|  * Created by libraryaddict on 4/07/2020. | ||||
|  */ | ||||
| public class PacketListenerScoreboardTeam extends PacketAdapter { | ||||
|     public PacketListenerScoreboardTeam() { | ||||
|         super(LibsDisguises.getInstance(), PacketType.Play.Server.SCOREBOARD_TEAM); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPacketSending(PacketEvent event) { | ||||
|         PacketContainer packet = event.getPacket(); | ||||
|         String name = packet.getStrings().read(0); | ||||
|  | ||||
|         if (!name.startsWith("LD_")) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         DisguiseUtilities.DScoreTeam team = null; | ||||
|  | ||||
|         loop: | ||||
|         for (Set<TargetedDisguise> disguises : DisguiseUtilities.getDisguises().values()) { | ||||
|             for (Disguise disguise : disguises) { | ||||
|                 if (!disguise.isPlayerDisguise() || !((PlayerDisguise) disguise).hasScoreboardName()) { | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|                 team = ((PlayerDisguise) disguise).getScoreboardName(); | ||||
|                 break loop; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (team == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         StructureModifier<WrappedChatComponent> chats = packet.getChatComponents(); | ||||
|         BaseComponent[] prefix = DisguiseUtilities.getColoredChat(team.getPrefix()); | ||||
|         BaseComponent[] suffix = DisguiseUtilities.getColoredChat(team.getSuffix()); | ||||
|  | ||||
|         chats.write(1, WrappedChatComponent.fromJson(ComponentSerializer.toString(prefix))); | ||||
|         chats.write(2, WrappedChatComponent.fromJson(ComponentSerializer.toString(suffix))); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user