Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 00:00:41 +01:00
Convert GameProfileData to record; remove confusing skin log
`Registering bedrock skin for PLAYERNAME` is now just confusing as it implies something to do with Floodgate's skin system when it's just for Bedrock <-> Bedrock players.
Dieser Commit ist enthalten in:
Ursprung
7d176cd669
Commit
7f4d3def58
@ -30,8 +30,6 @@ import com.github.steveice10.mc.auth.data.GameProfile;
|
||||
import com.nukkitx.protocol.bedrock.data.skin.ImageData;
|
||||
import com.nukkitx.protocol.bedrock.data.skin.SerializedSkin;
|
||||
import com.nukkitx.protocol.bedrock.packet.PlayerListPacket;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.geysermc.connector.GeyserConnector;
|
||||
import org.geysermc.connector.common.AuthType;
|
||||
import org.geysermc.connector.entity.player.PlayerEntity;
|
||||
@ -52,10 +50,10 @@ public class SkinManager {
|
||||
*/
|
||||
public static PlayerListPacket.Entry buildCachedEntry(GeyserSession session, PlayerEntity playerEntity) {
|
||||
GameProfileData data = GameProfileData.from(playerEntity.getProfile());
|
||||
SkinProvider.Cape cape = SkinProvider.getCachedCape(data.getCapeUrl());
|
||||
SkinProvider.Cape cape = SkinProvider.getCachedCape(data.capeUrl());
|
||||
SkinProvider.SkinGeometry geometry = SkinProvider.SkinGeometry.getLegacy(data.isAlex());
|
||||
|
||||
SkinProvider.Skin skin = SkinProvider.getCachedSkin(data.getSkinUrl());
|
||||
SkinProvider.Skin skin = SkinProvider.getCachedSkin(data.skinUrl());
|
||||
if (skin == null) {
|
||||
skin = SkinProvider.EMPTY_SKIN;
|
||||
}
|
||||
@ -118,7 +116,7 @@ public class SkinManager {
|
||||
Consumer<SkinProvider.SkinAndCape> skinAndCapeConsumer) {
|
||||
GameProfileData data = GameProfileData.from(entity.getProfile());
|
||||
|
||||
SkinProvider.requestSkinAndCape(entity.getUuid(), data.getSkinUrl(), data.getCapeUrl())
|
||||
SkinProvider.requestSkinAndCape(entity.getUuid(), data.skinUrl(), data.capeUrl())
|
||||
.whenCompleteAsync((skinAndCape, throwable) -> {
|
||||
try {
|
||||
SkinProvider.Skin skin = skinAndCape.getSkin();
|
||||
@ -206,7 +204,10 @@ public class SkinManager {
|
||||
}
|
||||
|
||||
public static void handleBedrockSkin(PlayerEntity playerEntity, BedrockClientData clientData) {
|
||||
GeyserConnector.getInstance().getLogger().info(LanguageUtils.getLocaleStringLog("geyser.skin.bedrock.register", playerEntity.getUsername(), playerEntity.getUuid()));
|
||||
GeyserConnector connector = GeyserConnector.getInstance();
|
||||
if (connector.getConfig().isDebugMode()) {
|
||||
connector.getLogger().info(LanguageUtils.getLocaleStringLog("geyser.skin.bedrock.register", playerEntity.getUsername(), playerEntity.getUuid()));
|
||||
}
|
||||
|
||||
try {
|
||||
byte[] skinBytes = Base64.getDecoder().decode(clientData.getSkinData().getBytes(StandardCharsets.UTF_8));
|
||||
@ -218,9 +219,9 @@ public class SkinManager {
|
||||
if (skinBytes.length <= (128 * 128 * 4) && !clientData.isPersonaSkin()) {
|
||||
SkinProvider.storeBedrockSkin(playerEntity.getUuid(), clientData.getSkinId(), skinBytes);
|
||||
SkinProvider.storeBedrockGeometry(playerEntity.getUuid(), geometryNameBytes, geometryBytes);
|
||||
} else {
|
||||
GeyserConnector.getInstance().getLogger().info(LanguageUtils.getLocaleStringLog("geyser.skin.bedrock.fail", playerEntity.getUsername()));
|
||||
GeyserConnector.getInstance().getLogger().debug("The size of '" + playerEntity.getUsername() + "' skin is: " + clientData.getSkinImageWidth() + "x" + clientData.getSkinImageHeight());
|
||||
} else if (connector.getConfig().isDebugMode()) {
|
||||
connector.getLogger().info(LanguageUtils.getLocaleStringLog("geyser.skin.bedrock.fail", playerEntity.getUsername()));
|
||||
connector.getLogger().debug("The size of '" + playerEntity.getUsername() + "' skin is: " + clientData.getSkinImageWidth() + "x" + clientData.getSkinImageHeight());
|
||||
}
|
||||
|
||||
if (!clientData.getCapeId().equals("")) {
|
||||
@ -231,13 +232,7 @@ public class SkinManager {
|
||||
}
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public static class GameProfileData {
|
||||
private final String skinUrl;
|
||||
private final String capeUrl;
|
||||
private final boolean alex;
|
||||
|
||||
public record GameProfileData(String skinUrl, String capeUrl, boolean isAlex) {
|
||||
/**
|
||||
* Generate the GameProfileData from the given GameProfile
|
||||
*
|
||||
|
@ -63,7 +63,7 @@ public class SkinProvider {
|
||||
public static final Skin EMPTY_SKIN = new Skin(-1, "steve", STEVE_SKIN);
|
||||
public static final byte[] ALEX_SKIN = new ProvidedSkin("bedrock/skin/skin_alex.png").getSkin();
|
||||
public static final Skin EMPTY_SKIN_ALEX = new Skin(-1, "alex", ALEX_SKIN);
|
||||
private static final Map<String, Skin> permanentSkins = new HashMap<String, Skin>() {{
|
||||
private static final Map<String, Skin> permanentSkins = new HashMap<>() {{
|
||||
put("steve", EMPTY_SKIN);
|
||||
put("alex", EMPTY_SKIN_ALEX);
|
||||
}};
|
||||
|
@ -52,7 +52,7 @@ public class SkullSkinManager extends SkinManager {
|
||||
Consumer<SkinProvider.Skin> skinConsumer) {
|
||||
GameProfileData data = GameProfileData.from(entity.getProfile());
|
||||
|
||||
SkinProvider.requestSkin(entity.getUuid(), data.getSkinUrl(), true)
|
||||
SkinProvider.requestSkin(entity.getUuid(), data.skinUrl(), true)
|
||||
.whenCompleteAsync((skin, throwable) -> {
|
||||
try {
|
||||
if (session.getUpstream().isInitialized()) {
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren