Fix issues related to skin loading.

Turns out, the anonymous classes were having trouble being deserialized.
This commit is contained in:
Matthew Messinger 2018-09-03 15:56:04 -04:00
parent d82af57b3c
commit 2bb9e9b61a
2 changed files with 9 additions and 5 deletions

View file

@ -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;

View file

@ -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<Type, MinecraftProfileTexture> 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<Type, MinecraftProfileTexture> textures;
public TexturesPayloadBuilder(GameProfile profile, Map<Type, MinecraftProfileTexture> textures) {
private TexturesPayloadBuilder(GameProfile profile) {
profileId = profile.getId();
profileName = profile.getName();
timestamp = System.currentTimeMillis();
isPublic = true;
this.textures = textures;
this.textures = new HashMap<>();
}
}