Files
MCCustomSkinLoader/Common/source/customskinloader/loader/jsonapi/CustomSkinAPI.java
T

90 lines
2.5 KiB
Java
Raw Normal View History

2016-08-09 17:23:27 +08:00
package customskinloader.loader.jsonapi;
2016-09-24 19:08:01 +08:00
import java.util.LinkedHashMap;
2016-08-09 17:23:27 +08:00
import java.util.Map;
2016-09-24 19:08:01 +08:00
import org.apache.commons.lang3.StringUtils;
2016-08-09 17:23:27 +08:00
import customskinloader.CustomSkinLoader;
2016-10-18 21:48:07 +08:00
import customskinloader.config.SkinSiteProfile;
2016-08-28 19:40:18 +08:00
import customskinloader.loader.JsonAPILoader.IJsonAPI;
2016-08-09 17:23:27 +08:00
import customskinloader.profile.ModelManager0;
2016-09-24 19:08:01 +08:00
import customskinloader.profile.ModelManager0.Model;
2016-08-09 17:23:27 +08:00
import customskinloader.profile.UserProfile;
import customskinloader.utils.HttpTextureUtil;
public class CustomSkinAPI implements IJsonAPI {
private static final String TEXTURES="textures/";
private static final String SUFFIX=".json";
@Override
public String toJsonUrl(String root, String username) {
return new StringBuilder().append(root).append(username).append(SUFFIX).toString();
}
@Override
public UserProfile toUserProfile(String root, String json, boolean local) {
CustomSkinAPIProfile profile=CustomSkinLoader.GSON.fromJson(json, CustomSkinAPIProfile.class);
UserProfile p=new UserProfile();
2016-09-24 19:08:01 +08:00
if(StringUtils.isNotBlank(profile.skin)){
2016-08-09 17:23:27 +08:00
p.skinUrl=root+TEXTURES+profile.skin;
if(local)
p.skinUrl=HttpTextureUtil.getLocalFakeUrl(p.skinUrl);
}
2016-09-24 19:08:01 +08:00
if(StringUtils.isNotBlank(profile.cape)){
2016-08-09 17:23:27 +08:00
p.capeUrl=root+TEXTURES+profile.cape;
if(local)
p.capeUrl=HttpTextureUtil.getLocalFakeUrl(p.capeUrl);
}
2016-09-24 19:08:01 +08:00
if(StringUtils.isNotBlank(profile.elytra)){
p.elytraUrl=root+TEXTURES+profile.elytra;
if(local)
p.elytraUrl=HttpTextureUtil.getLocalFakeUrl(p.elytraUrl);
}
Map<String,String> textures=new LinkedHashMap<String,String>();
if(profile.skins!=null)
textures.putAll(profile.skins);
if(profile.textures!=null)
textures.putAll(profile.textures);
if(textures.isEmpty())
return p;
2016-10-01 13:28:04 +08:00
boolean hasSkin=false;
2016-09-24 19:08:01 +08:00
for(String model:textures.keySet()){
Model enumModel=ModelManager0.getEnumModel(model);
if(enumModel==null||StringUtils.isEmpty(textures.get(model)))
continue;
2016-10-01 13:28:04 +08:00
if(ModelManager0.isSkin(enumModel))
if(hasSkin)
continue;
else
hasSkin=true;
2016-09-24 19:08:01 +08:00
String url=root+TEXTURES+textures.get(model);
if(local)
url=HttpTextureUtil.getLocalFakeUrl(url);
p.put(enumModel, url);
}
2016-08-09 17:23:27 +08:00
return p;
}
private class CustomSkinAPIProfile{
public String username;
2018-02-03 18:40:04 +08:00
public LinkedHashMap<String,String> textures;
2016-09-24 19:08:01 +08:00
2018-02-03 18:40:04 +08:00
public LinkedHashMap<String,String> skins;
2016-10-01 13:28:04 +08:00
2016-08-09 17:23:27 +08:00
public String skin;
public String cape;
2016-09-24 19:08:01 +08:00
public String elytra;
2016-10-01 13:28:04 +08:00
}
@Override
2016-10-18 21:48:07 +08:00
public String getPayload(SkinSiteProfile ssp) {
2016-10-01 13:28:04 +08:00
return null;
2016-08-09 17:23:27 +08:00
}
2016-08-28 19:40:18 +08:00
@Override
public String getName() {
return "CustomSkinAPI";
}
2016-08-09 17:23:27 +08:00
}