11package dev .pgm .community .platform .modern ;
22
3+ import static dev .pgm .community .util .FakeIdentityStore .fakeIdentityStore ;
34import static dev .pgm .community .util .Supports .Variant .PAPER ;
45
56import com .destroystokyo .paper .profile .CraftPlayerProfile ;
1314import java .net .URI ;
1415import java .net .URISyntaxException ;
1516import java .util .Arrays ;
16- import java .util .HashMap ;
1717import java .util .List ;
18- import java .util .Map ;
1918import java .util .UUID ;
2019import net .kyori .adventure .text .serializer .legacy .LegacyComponentSerializer ;
2120import org .bukkit .Material ;
2524import org .bukkit .inventory .ItemStack ;
2625import org .bukkit .inventory .meta .SkullMeta ;
2726import org .bukkit .profile .PlayerTextures ;
28- import org .bukkit . scoreboard . Team ;
27+ import org .jspecify . annotations . NonNull ;
2928import tc .oc .pgm .platform .modern .util .Skins ;
3029import tc .oc .pgm .util .skin .Skin ;
3130
@@ -37,37 +36,32 @@ public Skin getPlayerSkin(Player player) {
3736 return Skins .fromProfile (craftPlayer .getProfile ());
3837 }
3938
40- private final Map <UUID , Map <UUID , Skin >> playerSkins = new HashMap <>();
41- private final Map <UUID , Map <UUID , String >> playerNames = new HashMap <>();
42- private final Map <UUID , Map <UUID , String >> playerDisplayNames = new HashMap <>();
43-
4439 @ Override
4540 public void setFakeNameAndSkin (
4641 Player player , Player viewer , String displayName , String nick , Skin skin ) {
47- String oldName = getPlayerName (player , viewer );
42+ String oldName = fakeIdentityStore . getName (player , viewer );
4843
49- playerSkins
50- .computeIfAbsent (player .getUniqueId (), k -> new HashMap <>())
51- .put (viewer .getUniqueId (), skin );
52- playerNames
53- .computeIfAbsent (player .getUniqueId (), k -> new HashMap <>())
54- .put (viewer .getUniqueId (), nick );
55- playerDisplayNames
56- .computeIfAbsent (player .getUniqueId (), k -> new HashMap <>())
57- .put (viewer .getUniqueId (), displayName );
44+ fakeIdentityStore .set (player , viewer , displayName , nick , skin );
5845
59- String newName = getPlayerName (player , viewer );
46+ String newName = fakeIdentityStore . getName (player , viewer );
6047
6148 if (!oldName .equals (newName )) {
62- Team team = viewer .getScoreboard ().getEntryTeam (player .getName ());
63- if (team != null ) {
64- // Skip handler in PacketManipulations
65- sendTeamPacketSilently (viewer , team .getName (), TeamMode .REMOVE_ENTITIES , List .of (oldName ));
66- sendTeamPacketSilently (viewer , team .getName (), TeamMode .ADD_ENTITIES , List .of (newName ));
67- }
49+ updateTeamEntry (viewer , oldName , newName );
6850 }
6951 }
7052
53+ private void updateTeamEntry (@ NonNull Player viewer , String oldName , String newName ) {
54+ UUID viewerId = viewer .getUniqueId ();
55+ String teamName = fakeIdentityStore .getTeamName (viewerId , oldName );
56+ if (teamName == null ) return ;
57+
58+ sendTeamPacketSilently (viewer , teamName , TeamMode .REMOVE_ENTITIES , List .of (oldName ));
59+ fakeIdentityStore .removeTeamEntries (viewerId , teamName , List .of (oldName ));
60+
61+ sendTeamPacketSilently (viewer , teamName , TeamMode .ADD_ENTITIES , List .of (newName ));
62+ fakeIdentityStore .addTeamEntries (viewerId , teamName , List .of (newName ));
63+ }
64+
7165 private void sendTeamPacketSilently (
7266 Player viewer , String teamName , TeamMode mode , java .util .Collection <String > names ) {
7367 PacketEvents .getAPI ()
@@ -79,40 +73,7 @@ private void sendTeamPacketSilently(
7973 }
8074
8175 @ Override
82- public String getPlayerDisplayName (Player player , Player viewer ) {
83- if (playerDisplayNames .containsKey (player .getUniqueId ())) {
84- Map <UUID , String > uuidStringMap = playerDisplayNames .get (player .getUniqueId ());
85- String displayName = uuidStringMap .get (viewer .getUniqueId ());
86- if (displayName != null ) return displayName ;
87- }
88-
89- return LegacyComponentSerializer .legacySection ().serialize (player .displayName ());
90- }
91-
92- @ Override
93- public String getPlayerName (Player player , Player viewer ) {
94- if (playerNames .containsKey (player .getUniqueId ())) {
95- Map <UUID , String > uuidStringMap = playerNames .get (player .getUniqueId ());
96- String name = uuidStringMap .get (viewer .getUniqueId ());
97- if (name != null ) return name ;
98- }
99-
100- return player .getName ();
101- }
102-
103- @ Override
104- public Skin getPlayerSkin (Player player , Player viewer ) {
105- if (playerSkins .containsKey (player .getUniqueId ())) {
106- Map <UUID , Skin > uuidSkinMap = playerSkins .get (player .getUniqueId ());
107- Skin skin = uuidSkinMap .get (viewer .getUniqueId ());
108- if (skin != null && !skin .isEmpty ()) return skin ;
109- }
110-
111- return getPlayerSkin (player );
112- }
113-
114- @ Override
115- public ItemStack customSkull (String url , String displayName , String ... lore ) {
76+ public ItemStack customSkull (@ NonNull String url , String displayName , String ... lore ) {
11677 ItemStack head = new ItemStack (Material .PLAYER_HEAD );
11778 if (url .isEmpty ()) {
11879 return head ;
0 commit comments