From 2bb9e9b61af0dc562d7410e99c94e270d705389c Mon Sep 17 00:00:00 2001 From: Matthew Messinger Date: Mon, 3 Sep 2018 15:56:04 -0400 Subject: [PATCH] Fix issues related to skin loading. Turns out, the anonymous classes were having trouble being deserialized. --- .../hdskins/skins/LegacySkinServer.java | 1 + .../{skins => util}/TexturesPayloadBuilder.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) rename src/hdskins/java/com/voxelmodpack/hdskins/{skins => util}/TexturesPayloadBuilder.java (73%) diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/skins/LegacySkinServer.java b/src/hdskins/java/com/voxelmodpack/hdskins/skins/LegacySkinServer.java index c43c4c63..4ac06ee7 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/skins/LegacySkinServer.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/skins/LegacySkinServer.java @@ -9,6 +9,7 @@ import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.authlib.yggdrasil.response.MinecraftTexturesPayload; import com.mojang.util.UUIDTypeAdapter; import com.voxelmodpack.hdskins.HDSkinManager; +import com.voxelmodpack.hdskins.util.TexturesPayloadBuilder; import net.minecraft.client.Minecraft; import net.minecraft.util.Session; import org.apache.commons.lang3.StringUtils; diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/skins/TexturesPayloadBuilder.java b/src/hdskins/java/com/voxelmodpack/hdskins/util/TexturesPayloadBuilder.java similarity index 73% rename from src/hdskins/java/com/voxelmodpack/hdskins/skins/TexturesPayloadBuilder.java rename to src/hdskins/java/com/voxelmodpack/hdskins/util/TexturesPayloadBuilder.java index 39b301ce..deb6fa35 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/skins/TexturesPayloadBuilder.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/util/TexturesPayloadBuilder.java @@ -1,6 +1,5 @@ -package com.voxelmodpack.hdskins.skins; +package com.voxelmodpack.hdskins.util; -import com.google.common.collect.Maps; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mojang.authlib.GameProfile; @@ -9,6 +8,7 @@ import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import com.mojang.authlib.yggdrasil.response.MinecraftTexturesPayload; import com.mojang.util.UUIDTypeAdapter; +import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -23,7 +23,10 @@ public class TexturesPayloadBuilder { private static Gson gson = new GsonBuilder().registerTypeAdapter(UUID.class, new UUIDTypeAdapter()).create(); public static MinecraftTexturesPayload createTexturesPayload(GameProfile profile, Map textures) { - return gson.fromJson(gson.toJson(new TexturesPayloadBuilder(profile, textures)), MinecraftTexturesPayload.class); + // This worked fine as is before I started using sub-classes. + MinecraftTexturesPayload payload = gson.fromJson(gson.toJson(new TexturesPayloadBuilder(profile)), MinecraftTexturesPayload.class); + payload.getTextures().putAll(textures); + return payload; } private long timestamp; @@ -35,13 +38,13 @@ public class TexturesPayloadBuilder { private Map textures; - public TexturesPayloadBuilder(GameProfile profile, Map textures) { + private TexturesPayloadBuilder(GameProfile profile) { profileId = profile.getId(); profileName = profile.getName(); timestamp = System.currentTimeMillis(); isPublic = true; - this.textures = textures; + this.textures = new HashMap<>(); } }