ChangeSkinX

ChangeSkinX

446k Downloads

Problem using ChangeSkinBungee API

Kyumar opened this issue ยท 14 comments

commented

When i set from bungee a skin using applySkin# method, some players cant see the skin of the player who changed it.

commented

Is the plugin also installed on the Spigot server?

commented

Is the server configured with instant skin updates?

commented

instantSkinChange? it's on true

commented

I'm using redisbungee. To update the skin, from spigot I send a message to bungee and bungee send a redis message to all proxies, when redisbungee receive the message, it update the skin. It works, but sometimes, some players cant se other players's skin

commented

Yes

commented

Do you see any pattern? Is it only happening if they are on different proxies or servers? Did you see any errors in the console? When is the skin updated? During player join or later?

commented

For example, i have 2 proxies, bg1 and bg2, if i'm in bg1, when i send packet from spigot to bungee, bungee send it to redis and redis manages it. It gives the error when i change skin with API because it doesn't found player in bg2

commented

I'm not familiar with the internals of RedisBungee. Normally it should be enough to forward it to the Bungee server the player is online. It will then tell the Spigot server to send a skin change packet. BungeeCord doesn't intercept the packet, so the change should propagate to the player back even if present on a different proxy.

EDIT: Found that BungeeCord does indeed intercept the packet. It's the PlayerList packet. Minecraft protocol can be complicated.

some players cant see the skin of the player who changed it.

So does it only happen if players switch the server or is it also happening for players that are visible to each other at the time of the change? Does it work if both players are on the same proxy and so on?

commented

Do you have a plugin that changes the tablist?

EDIT: Just to make sure, you have ProtocolLib on the Spigot server installed right?

commented

Hi, sorry for the late reply. Anyway, I'll explain. I have a plugin that uses the changeskin API, when you change skin, spigot it sends a message to bungeecord and consequently bungeecord forwards it to redisbungee. From redisbungee I change the skin, but rightly takes that player in both proxies, obviously a player if it is in proxy1 cannot be in proxy2, so all those who are in the same proxy as the player will see the skin, the others will see the skin of Steve or Alex. By making sure to apply the skin only to the proxy the player is in, could it happen that the players do not see the skin anyway? Anyway yes, I have a plugin that modifies the TABList

commented

From redisbungee I change the skin, but rightly takes that player in both proxies, obviously a player if it is in proxy1 cannot be in proxy2, so all those who are in the same proxy as the player will see the skin, the others will see the skin of Steve or Alex.

What about if they rejoin the spigot server and do you have ProtocolLib installed? I'm trying to find the origin of this bug. Propagating the change on join of the server is a lot easier than doing instantSkinChange, so I need to know that.

commented

When a player change server / quit the skin applied change, it restore default skin. I need to keep changed skin only when player is in the skin, if player rejoin skin restores correctly, it works. But when i change skin with API, when i change it players who aren't in player's bungee doesn't see the skin, they see Steve or Alex skin. If you have discord or teamspeak i can give you more information and i can show you the plugin, ok?

commented

Hey(?)

commented

Sorry, can we talk on discord or Teamspeak?