11package lol .pyr .znpcsplus .packets ;
22
33import com .github .retrooper .packetevents .PacketEventsAPI ;
4+ import com .github .retrooper .packetevents .protocol .entity .data .EntityData ;
5+ import com .github .retrooper .packetevents .protocol .entity .data .EntityDataTypes ;
46import com .github .retrooper .packetevents .protocol .entity .type .EntityTypes ;
57import com .github .retrooper .packetevents .util .Vector3d ;
8+ import com .github .retrooper .packetevents .wrapper .play .server .WrapperPlayServerEntityMetadata ;
69import com .github .retrooper .packetevents .wrapper .play .server .WrapperPlayServerSpawnEntity ;
710import lol .pyr .znpcsplus .api .entity .PropertyHolder ;
811import lol .pyr .znpcsplus .config .ConfigManager ;
1114import lol .pyr .znpcsplus .scheduling .TaskScheduler ;
1215import lol .pyr .znpcsplus .util .NamedColor ;
1316import lol .pyr .znpcsplus .util .NpcLocation ;
17+ import net .kyori .adventure .text .Component ;
1418import net .kyori .adventure .text .serializer .legacy .LegacyComponentSerializer ;
1519import org .bukkit .entity .Player ;
1620import org .bukkit .plugin .Plugin ;
1721
22+ import java .util .Collections ;
1823import java .util .Optional ;
1924
25+
2026public class V1_17PacketFactory extends V1_8PacketFactory {
2127 public V1_17PacketFactory (TaskScheduler scheduler , PacketEventsAPI <Plugin > packetEvents , EntityPropertyRegistryImpl propertyRegistry , LegacyComponentSerializer textSerializer , ConfigManager configManager ) {
2228 super (scheduler , packetEvents , propertyRegistry , textSerializer , configManager );
@@ -27,7 +33,30 @@ public void spawnEntity(Player player, PacketEntity entity, PropertyHolder prope
2733 NpcLocation location = entity .getLocation ();
2834 sendPacket (player , new WrapperPlayServerSpawnEntity (entity .getEntityId (), Optional .of (entity .getUuid ()), entity .getType (),
2935 npcLocationToVector (location ), location .getPitch (), location .getYaw (), location .getYaw (), 0 , Optional .of (new Vector3d ())));
36+
37+ String displayName = entity .getProperty (propertyRegistry .getByName ("display_name" , String .class ));
38+ if (displayName != null ) {
39+ EntityData <Optional <Component >> nameData = new EntityData <>(
40+ 2 ,
41+ EntityDataTypes .OPTIONAL_ADV_COMPONENT ,
42+ Optional .of (Component .text (displayName ))
43+ );
44+ sendPacket (player , new WrapperPlayServerEntityMetadata (
45+ entity .getEntityId (),
46+ Collections .singletonList (nameData )
47+ ));
48+ }
49+
3050 sendAllMetadata (player , entity , properties );
51+ EntityData <Boolean > hideNameDisplay = new EntityData <>(
52+ 3 ,
53+ EntityDataTypes .BOOLEAN ,
54+ false
55+ );
56+ sendPacket (player , new WrapperPlayServerEntityMetadata (
57+ entity .getEntityId (),
58+ Collections .singletonList (hideNameDisplay )
59+ ));
3160 if (EntityTypes .isTypeInstanceOf (entity .getType (), EntityTypes .LIVINGENTITY )) sendAllAttributes (player , entity , properties );
3261 createTeam (player , entity , properties .getProperty (propertyRegistry .getByName ("glow" , NamedColor .class )));
3362 }
0 commit comments