package customskinloader.loader.jsonapi; import java.util.List; import java.util.Map; import com.google.common.collect.Lists; import customskinloader.CustomSkinLoader; import customskinloader.loader.JsonAPILoader; import customskinloader.plugin.ICustomSkinLoaderPlugin; import customskinloader.profile.ModelManager0; import customskinloader.profile.UserProfile; import customskinloader.utils.HttpTextureUtil; import org.apache.commons.lang3.StringUtils; public class UniSkinAPI implements JsonAPILoader.IJsonAPI { public static class SkinMe extends JsonAPILoader.DefaultProfile { public SkinMe(JsonAPILoader loader) { super(loader); } @Override public String getName() { return "SkinMe"; } @Override public int getPriority() { return 500; } @Override public String getRoot() { return "http://www.skinme.cc/uniskin/"; } } private static final String TEXTURES = "textures/"; private static final String SUFFIX = ".json"; @Override public List getDefaultProfiles(JsonAPILoader loader) { return Lists.newArrayList(new SkinMe(loader)); } @Override public String toJsonUrl(String root, String username) { return root + username + SUFFIX; } @Override public UserProfile toUserProfile(String root, String json, boolean local) { UniSkinAPIProfile profile = CustomSkinLoader.GSON.fromJson(json, UniSkinAPIProfile.class); UserProfile p = new UserProfile(); if (StringUtils.isNotBlank(profile.cape)) { p.capeUrl = root + TEXTURES + profile.cape; if (local) p.capeUrl = HttpTextureUtil.getLocalFakeUrl(p.capeUrl); } if (profile.skins == null || profile.skins.isEmpty()) return p; if (profile.model_preference == null || profile.model_preference.isEmpty()) return p; boolean hasSkin = false; for (String model : profile.model_preference) { ModelManager0.Model enumModel = ModelManager0.getEnumModel(model); if (enumModel == null || StringUtils.isEmpty(profile.skins.get(model))) continue; if (ModelManager0.isSkin(enumModel)) if (hasSkin) continue; else hasSkin = true; String url = root + TEXTURES + profile.skins.get(model); if (local) url = HttpTextureUtil.getLocalFakeUrl(url); p.put(enumModel, url); } return p; } /** * Json profile for UniSkinAPI * Source Code * * @author RecursiveG */ private static class UniSkinAPIProfile { public String player_name; public long last_update; public List model_preference; public Map skins; public String cape; } @Override public String getName() { return "UniSkinAPI"; } }