mirror of
https://github.com/TuxCoding/FastLogin.git
synced 2025-07-30 02:37:34 +02:00
State why choose the loginEvent and fix it
This commit is contained in:
@ -5,6 +5,8 @@ import com.comphenix.protocol.wrappers.WrappedSignedProperty;
|
|||||||
import com.github.games647.fastlogin.bukkit.BukkitLoginSession;
|
import com.github.games647.fastlogin.bukkit.BukkitLoginSession;
|
||||||
import com.github.games647.fastlogin.bukkit.FastLoginBukkit;
|
import com.github.games647.fastlogin.bukkit.FastLoginBukkit;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -20,18 +22,30 @@ public class LoginSkinApplyListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
//run this on the loginEvent to let skins plugins see the skin like in normal minecraft behaviour
|
||||||
public void onPlayerLogin(PlayerLoginEvent loginEvent) {
|
public void onPlayerLogin(PlayerLoginEvent loginEvent) {
|
||||||
Player player = loginEvent.getPlayer();
|
Player player = loginEvent.getPlayer();
|
||||||
|
|
||||||
BukkitLoginSession session = plugin.getSessions().get(player.getAddress().toString());
|
if (plugin.getConfig().getBoolean("forwardSkin")) {
|
||||||
if (session != null && plugin.getConfig().getBoolean("forwardSkin")) {
|
//go through every session, because player.getAddress is null
|
||||||
WrappedGameProfile gameProfile = WrappedGameProfile.fromPlayer(player);
|
//loginEvent.getAddress is just a InetAddress not InetSocketAddres, so not unique enough
|
||||||
String skinData = session.getEncodedSkinData();
|
Collection<BukkitLoginSession> sessions = plugin.getSessions().values();
|
||||||
String signature = session.getSkinSignature();
|
for (BukkitLoginSession session : sessions) {
|
||||||
if (skinData != null && signature != null) {
|
if (session.getUsername().equals(player.getName())) {
|
||||||
WrappedSignedProperty skin = WrappedSignedProperty.fromValues("textures", skinData, signature);
|
applySkin(player, session);
|
||||||
gameProfile.getProperties().put("textures", skin);
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void applySkin(Player player, BukkitLoginSession session) {
|
||||||
|
WrappedGameProfile gameProfile = WrappedGameProfile.fromPlayer(player);
|
||||||
|
String skinData = session.getEncodedSkinData();
|
||||||
|
String signature = session.getSkinSignature();
|
||||||
|
if (skinData != null && signature != null) {
|
||||||
|
WrappedSignedProperty skin = WrappedSignedProperty.fromValues("textures", skinData, signature);
|
||||||
|
gameProfile.getProperties().put("textures", skin);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user