Files

105 lines
3.2 KiB
Java
Raw Permalink Normal View History

2016-08-09 17:23:27 +08:00
package customskinloader.loader.jsonapi;
2016-02-27 15:22:35 +08:00
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
2016-02-27 15:22:35 +08:00
import customskinloader.CustomSkinLoader;
2021-04-24 10:33:18 +08:00
import customskinloader.loader.JsonAPILoader;
import customskinloader.plugin.ICustomSkinLoaderPlugin;
2016-07-31 22:00:46 +08:00
import customskinloader.profile.ModelManager0;
import customskinloader.profile.UserProfile;
import customskinloader.utils.HttpTextureUtil;
2021-04-24 10:33:18 +08:00
import org.apache.commons.lang3.StringUtils;
public class UniSkinAPI implements JsonAPILoader.IJsonAPI {
2021-04-24 10:33:18 +08:00
public static class SkinMe extends JsonAPILoader.DefaultProfile {
2023-01-11 22:06:58 +08:00
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/";
}
2021-04-24 10:33:18 +08:00
}
2016-02-27 15:22:35 +08:00
2023-01-11 22:06:58 +08:00
private static final String TEXTURES = "textures/";
private static final String SUFFIX = ".json";
2016-08-09 17:23:27 +08:00
@Override
public List<ICustomSkinLoaderPlugin.IDefaultProfile> getDefaultProfiles(JsonAPILoader loader) {
return Lists.newArrayList(new SkinMe(loader));
}
2018-02-12 12:20:28 +08:00
@Override
public String toJsonUrl(String root, String username) {
2018-06-25 00:34:32 +08:00
return root + username + SUFFIX;
2018-02-12 12:20:28 +08:00
}
2016-08-09 17:23:27 +08:00
2018-02-12 12:20:28 +08:00
@Override
public UserProfile toUserProfile(String root, String json, boolean local) {
2023-01-11 22:06:58 +08:00
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);
2018-02-12 12:20:28 +08:00
}
2023-01-11 22:06:58 +08:00
if (profile.skins == null || profile.skins.isEmpty())
2018-02-12 12:20:28 +08:00
return p;
2023-01-11 22:06:58 +08:00
if (profile.model_preference == null || profile.model_preference.isEmpty())
2018-02-12 12:20:28 +08:00
return p;
2023-01-11 22:06:58 +08:00
boolean hasSkin = false;
for (String model : profile.model_preference) {
ModelManager0.Model enumModel = ModelManager0.getEnumModel(model);
if (enumModel == null || StringUtils.isEmpty(profile.skins.get(model)))
2018-02-12 12:20:28 +08:00
continue;
2023-01-11 22:06:58 +08:00
if (ModelManager0.isSkin(enumModel))
if (hasSkin)
2018-02-12 12:20:28 +08:00
continue;
else
2023-01-11 22:06:58 +08:00
hasSkin = true;
String url = root + TEXTURES + profile.skins.get(model);
if (local)
url = HttpTextureUtil.getLocalFakeUrl(url);
2018-02-12 12:20:28 +08:00
p.put(enumModel, url);
}
2023-01-11 22:06:58 +08:00
2018-02-12 12:20:28 +08:00
return p;
}
2023-01-11 22:06:58 +08:00
2018-02-12 12:20:28 +08:00
/**
* Json profile for UniSkinAPI
2023-01-11 22:06:58 +08:00
* <a href="https://github.com/RecursiveG/UniSkinMod/blob/master/src/main/java/org/devinprogress/uniskinmod/UniSkinApiProfile.java#L18-L22">Source Code</a>
*
2018-02-12 12:20:28 +08:00
* @author RecursiveG
*/
2023-01-11 22:06:58 +08:00
private static class UniSkinAPIProfile {
2018-02-12 12:20:28 +08:00
public String player_name;
public long last_update;
public List<String> model_preference;
2023-01-11 22:06:58 +08:00
public Map<String, String> skins;
2018-02-12 12:20:28 +08:00
public String cape;
}
2023-01-11 22:06:58 +08:00
2018-02-12 12:20:28 +08:00
@Override
public String getName() {
return "UniSkinAPI";
}
2016-02-27 15:22:35 +08:00
}