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? |      * Has someone set name visible explicitly? | ||||||
|      */ |      */ | ||||||
|     private boolean explicitNameVisible = false; |     private boolean explicitNameVisible = false; | ||||||
|     private UUID uuid = UUID.randomUUID(); |     private final UUID uuid = UUID.randomUUID(); | ||||||
|     private volatile DisguiseUtilities.DScoreTeam scoreboardName; |     private volatile DisguiseUtilities.DScoreTeam scoreboardName; | ||||||
|  |  | ||||||
|     private PlayerDisguise() { |     private PlayerDisguise() { | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ import me.libraryaddict.disguise.LibsDisguises; | |||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||||
| import me.libraryaddict.disguise.utilities.packets.packetlisteners.*; | import me.libraryaddict.disguise.utilities.packets.packetlisteners.*; | ||||||
|  | import me.libraryaddict.disguise.utilities.reflection.NmsVersion; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| @@ -26,6 +27,7 @@ public class PacketsManager { | |||||||
|     private static boolean viewDisguisesListenerEnabled; |     private static boolean viewDisguisesListenerEnabled; | ||||||
|     private static PacketsHandler packetsHandler; |     private static PacketsHandler packetsHandler; | ||||||
|     private static PacketListener destroyListener; |     private static PacketListener destroyListener; | ||||||
|  |     private static PacketListener scoreboardTeamListener; | ||||||
|  |  | ||||||
|     public static void addPacketListeners() { |     public static void addPacketListeners() { | ||||||
|         // Add a client listener to cancel them interacting with uninteractable disguised entitys. |         // 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(mainListener); | ||||||
|             ProtocolLibrary.getProtocolManager().addPacketListener(destroyListener); |             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