
"signature" : "q9EEPdJi6ISoJ6/lqsEf+CdYl6cKSHipO6X/Dcx8e1s5qE/BU9sccgzAf6xddW6hpq4EJZO3e56lj40Npc9IXI7s0hm83NF0VyaDyx7l5Jyj2aUYOOz/WAWoovbtfoOPq7DZeHXglBEqf/FZK1oNb37OUTQuc/rhu3iu3+sjKXszxDUz12DuJP03yrAasalR5IxXjZ/VwwwVlHSW/pvxqPuFF2Z7f9yPfxJs7hRJPu2AGbiDNODXl6otVQyZGcv7Y1kieRvxJXFKwKKl4LZ+9ijwxsjKwfAtdE5rjr0eFXHPddzXpqJ5MddQUIav2tnEUmL5BsYUmYCxwiez/flt2X93NUzZ+RN7yd9NIuFN0WX40hSRt1HDWAUhuxKlrQMgfehAcVvcHbf7jJJLEoatk+7BeyIO7Sh6GMh+z7DFJbeIz4jm/KUqs3Te2qwnaosIlFeo0BMKTpNcoqBdKfpnei1GjCf6h72wwm6HoxW1clTiREZ0vKnid8vQ6R2p5bLgFoRQ/6ILOaYSluPctwmSo5aP4X圜JegfUT7xQbCrLZEkdjmuJGyxkXDsf+MUlC61em6opam7kKdT3vmM0jySo5XOYj5fUJYvcGLKxGSCgsUxxlhw0MQ/hjr7FZQ1p6AOgfITcqW8zs2Q5XNDlHYGx+cKw6qLWlj4ILoFExlppQY=" , (And I'm inexperienced with reflection.) You would also need to add the Spigot server JAR to your build path, rather than the API. If you want to make your plugin multiple-version compatible, you would indeed need to use reflection. I've only ever done this with ProtocolLib, so I'm unsure of how to do this using NMS and reflection, but it should be close to the same order of things. Make sure to send this packet to new players on the PlayerJoinEvent, with any fake players that you already sent to current players, or it won't show up on new clients. Otherwise, they wouldn't be in tab for new players. You would also need to set up a listener (I'm not sure how ProtocolLib does this, exactly) that intercepts the automatic PacketPlayOutPlayerInfo packet that is sent to each new player that joins, and inject your fake player into that packets PlayerInfoData lists.

The list would just contain the PlayerInfoData of the player that you want to add, which includes their name, game mode, ping, and game profile (to display their skin). The EnumPlayerInfoAction is what this packet is going to do, in your case it would be ADD_PLAYER.

It has an enum of type EnumPlayerInfoAction and a list of type PlayerInfoData that it sends to the client. (And I'm inexperienced with reflection.) You would also need to add the Spigot server JAR to your build path, rather than the API.īut the basic structure of the PacketPlayOutPlayerInfo packet is pretty simple. Click to expand.If you want to make your plugin multiple-version compatible, you would indeed need to use reflection.
