Files
MCCustomSkinLoader/Common/customskinloader/loader/jsonapi/UniSkinAPI.java
T

79 lines
2.4 KiB
Java
Raw 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 customskinloader.CustomSkinLoader;
2016-07-31 22:00:46 +08:00
import customskinloader.profile.ModelManager0;
import customskinloader.profile.UserProfile;
import customskinloader.utils.HttpTextureUtil;
2016-02-27 15:22:35 +08:00
2016-08-09 17:23:27 +08:00
public class UniSkinAPI implements IJsonAPI {
private static final String TEXTURES="textures/";
private static final String SUFFIX=".json";
2016-02-27 15:22:35 +08:00
@Override
2016-08-09 17:23:27 +08:00
public String toJsonUrl(String root, String username) {
return new StringBuilder().append(root).append(username).append(SUFFIX).toString();
2016-07-31 22:00:46 +08:00
}
2016-08-09 17:23:27 +08:00
@Override
public UserProfile toUserProfile(String root, String json, boolean local) {
UniSkinAPIProfile profile=CustomSkinLoader.GSON.fromJson(json, UniSkinAPIProfile.class);
2016-04-03 13:01:06 +08:00
if(profile.errno!=0){
CustomSkinLoader.logger.info("Error: "+profile.msg);
return null;
}
2016-02-27 15:22:35 +08:00
UserProfile p=new UserProfile();
if(profile.skins!=null && !profile.skins.isEmpty()){
if(profile.model_preference!=null && !profile.model_preference.isEmpty()){
for(String s:profile.model_preference){
2016-03-13 00:17:11 +08:00
if(ModelManager0.checkModel(s)){
if(profile.skins.get(s)==null||profile.skins.get(s).equals(""))
continue;
2016-07-31 22:00:46 +08:00
p.skinUrl=root+TEXTURES+profile.skins.get(s);
if(local)
p.skinUrl=HttpTextureUtil.getLocalFakeUrl(p.skinUrl);
2016-02-27 15:22:35 +08:00
p.model=s;
break;
}
}
}
if(p.skinUrl==null){
String s=profile.skins.get("default");
if(s!=null){
2016-07-31 22:00:46 +08:00
p.skinUrl=root+TEXTURES+s;
if(local)
p.skinUrl=HttpTextureUtil.getLocalFakeUrl(p.skinUrl);
2016-02-27 15:22:35 +08:00
p.model="default";
}
}
}
2016-03-13 00:17:11 +08:00
if(profile.skins.get("cape")!=null && !profile.skins.get("cape").equals("")){
2016-07-31 22:00:46 +08:00
p.capeUrl=root+TEXTURES+profile.skins.get("cape");
if(local)
p.capeUrl=HttpTextureUtil.getLocalFakeUrl(p.capeUrl);
2016-03-13 00:17:11 +08:00
}else if(profile.cape!=null && !profile.cape.equals("")){
2016-07-31 22:00:46 +08:00
p.capeUrl=root+TEXTURES+profile.cape;
if(local)
p.capeUrl=HttpTextureUtil.getLocalFakeUrl(p.capeUrl);
2016-02-27 15:22:35 +08:00
}
2016-07-31 22:00:46 +08:00
return p;
2016-02-27 15:22:35 +08:00
}
2016-08-09 17:23:27 +08:00
/**
* Json profile for UniSkinAPI
* Source Code: https://github.com/RecursiveG/UniSkinMod/blob/master/src/main/java/org/devinprogress/uniskinmod/UniSkinApiProfile.java#L18-L22
* @author RecursiveG
*/
private class UniSkinAPIProfile{
public String player_name;
public long last_update;
public List<String> model_preference;
public Map<String,String> skins;
public String cape;
public int errno;
public String msg;
}
2016-02-27 15:22:35 +08:00
}