Update WebUpdatePlayerList to fetch and apply player skin textures for fake players.
This commit is contained in:
@@ -9,10 +9,8 @@ import com.comphenix.protocol.ProtocolLibrary;
|
|||||||
import com.comphenix.protocol.ProtocolManager;
|
import com.comphenix.protocol.ProtocolManager;
|
||||||
import com.comphenix.protocol.events.PacketContainer;
|
import com.comphenix.protocol.events.PacketContainer;
|
||||||
import com.comphenix.protocol.reflect.StructureModifier;
|
import com.comphenix.protocol.reflect.StructureModifier;
|
||||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
import com.comphenix.protocol.wrappers.*;
|
||||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
|
||||||
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import me.neznamy.tab.api.TabAPI;
|
import me.neznamy.tab.api.TabAPI;
|
||||||
import me.neznamy.tab.api.TabPlayer;
|
import me.neznamy.tab.api.TabPlayer;
|
||||||
@@ -21,6 +19,8 @@ import org.bukkit.OfflinePlayer;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jspecify.annotations.NonNull;
|
import org.jspecify.annotations.NonNull;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -141,6 +141,31 @@ public final class WebUpdatePlayerList implements WebHandler<PlayerListState> {
|
|||||||
fakePlayer.name()
|
fakePlayer.name()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(fakePlayer.uuid());
|
||||||
|
PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();
|
||||||
|
|
||||||
|
URL skinUrl = playerProfile.getTextures().getSkin();
|
||||||
|
|
||||||
|
if (skinUrl != null) {
|
||||||
|
String textureJson = """
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"SKIN": {
|
||||||
|
"url": "%s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""".formatted(skinUrl);
|
||||||
|
|
||||||
|
String textureValue = Base64.getEncoder()
|
||||||
|
.encodeToString(textureJson.getBytes(StandardCharsets.UTF_8));
|
||||||
|
|
||||||
|
profile.getProperties().put(
|
||||||
|
"textures",
|
||||||
|
new WrappedSignedProperty("textures", textureValue, null)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
PlayerInfoData data = new PlayerInfoData(
|
PlayerInfoData data = new PlayerInfoData(
|
||||||
fakePlayer.uuid(),
|
fakePlayer.uuid(),
|
||||||
0,
|
0,
|
||||||
|
|||||||
Reference in New Issue
Block a user