package net.minecraft.src; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonParser; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import net.minecraft.util.ResourceLocation; public class PlayerConfigurationParser { private String player = null; public static final String CONFIG_ITEMS = "items"; public static final String ITEM_TYPE = "type"; public static final String ITEM_ACTIVE = "active"; public PlayerConfigurationParser(String player) { this.player = player; } public PlayerConfiguration parsePlayerConfiguration(JsonElement je) { if (je == null) { throw new JsonParseException("JSON object is null, player: " + this.player); } else { JsonObject jo = (JsonObject)je; PlayerConfiguration pc = new PlayerConfiguration(); JsonArray items = (JsonArray)jo.get("items"); if (items != null) { for (int i = 0; i < items.size(); ++i) { JsonObject item = (JsonObject)items.get(i); boolean active = Json.getBoolean(item, "active", true); if (active) { String type = Json.getString(item, "type"); if (type == null) { Config.warn("Item type is null, player: " + this.player); } else { String modelPath = Json.getString(item, "model"); if (modelPath == null) { modelPath = "items/" + type + "/model.cfg"; } PlayerItemModel model = this.downloadModel(modelPath); if (model != null) { if (!model.isUsePlayerTexture()) { String texturePath = Json.getString(item, "texture"); if (texturePath == null) { texturePath = "items/" + type + "/users/" + this.player + ".png"; } BufferedImage image = this.downloadTextureImage(texturePath); if (image == null) { continue; } model.setTextureImage(image); ResourceLocation loc = new ResourceLocation("optifine.net", texturePath); model.setTextureLocation(loc); } pc.addPlayerItemModel(model); } } } } } return pc; } } private BufferedImage downloadTextureImage(String texturePath) { String textureUrl = "http://s.optifine.net/" + texturePath; try { BufferedImage e = ImageIO.read(new URL(textureUrl)); return e; } catch (IOException var4) { Config.warn("Error loading item texture " + texturePath + ": " + var4.getClass().getName() + ": " + var4.getMessage()); return null; } } private PlayerItemModel downloadModel(String modelPath) { String modelUrl = "http://s.optifine.net/" + modelPath; try { byte[] e = HttpUtils.get(modelUrl); String jsonStr = new String(e, "ASCII"); JsonParser jp = new JsonParser(); JsonObject jo = (JsonObject)jp.parse(jsonStr); PlayerItemParser pip = new PlayerItemParser(); PlayerItemModel pim = PlayerItemParser.parseItemModel(jo); return pim; } catch (Exception var9) { Config.warn("Error loading item model " + modelPath + ": " + var9.getClass().getName() + ": " + var9.getMessage()); return null; } } }