# Eagler Context Redacted Diff # Copyright (c) 2024 lax1dude. All rights reserved. # Version: 1.0 # Author: lax1dude > DELETE 2 @ 2 : 14 > DELETE 1 @ 1 : 9 > INSERT 1 : 8 @ 1 + import org.json.JSONArray; + import org.json.JSONException; + import org.json.JSONObject; + + import net.lax1dude.eaglercraft.v1_8.json.JSONTypeCodec; + import net.lax1dude.eaglercraft.v1_8.json.JSONTypeProvider; + > CHANGE 19 : 20 @ 19 : 21 ~ public static class Serializer implements JSONTypeCodec { > CHANGE 1 : 7 @ 1 : 8 ~ public IChatComponent deserialize(Object parJsonElement) throws JSONException { ~ if (parJsonElement instanceof String) { ~ return new ChatComponentText((String) parJsonElement); ~ } else if (!(parJsonElement instanceof JSONObject)) { ~ if (parJsonElement instanceof JSONArray) { ~ JSONArray jsonarray1 = (JSONArray) parJsonElement; > CHANGE 2 : 4 @ 2 : 5 ~ for (Object jsonelement : jsonarray1) { ~ IChatComponent ichatcomponent1 = this.deserialize(jsonelement); > CHANGE 9 : 11 @ 9 : 11 ~ throw new JSONException("Don\'t know how to turn " + parJsonElement.getClass().getSimpleName() ~ + " into a Component"); > CHANGE 2 : 3 @ 2 : 3 ~ JSONObject jsonobject = (JSONObject) parJsonElement; > CHANGE 2 : 3 @ 2 : 3 ~ object = new ChatComponentText(jsonobject.getString("text")); > CHANGE 1 : 2 @ 1 : 2 ~ String s = jsonobject.getString("translate"); > CHANGE 1 : 3 @ 1 : 3 ~ JSONArray jsonarray = jsonobject.getJSONArray("with"); ~ Object[] aobject = new Object[jsonarray.length()]; > CHANGE 2 : 3 @ 2 : 3 ~ aobject[i] = this.deserialize(jsonarray.get(i)); > CHANGE 14 : 15 @ 14 : 15 ~ JSONObject jsonobject1 = jsonobject.getJSONObject("score"); > CHANGE 1 : 2 @ 1 : 2 ~ throw new JSONException("A score component needs a least a name and an objective"); > CHANGE 2 : 3 @ 2 : 4 ~ object = new ChatComponentScore(jsonobject1.getString("name"), jsonobject1.getString("objective")); > CHANGE 1 : 2 @ 1 : 2 ~ ((ChatComponentScore) object).setValue(jsonobject1.getString("value")); > CHANGE 3 : 4 @ 3 : 4 ~ throw new JSONException( > CHANGE 3 : 4 @ 3 : 4 ~ object = new ChatComponentSelector(jsonobject.getString("selector")); > CHANGE 3 : 6 @ 3 : 6 ~ JSONArray jsonarray2 = jsonobject.getJSONArray("extra"); ~ if (jsonarray2.length() <= 0) { ~ throw new JSONException("Unexpected empty array of components"); > CHANGE 2 : 4 @ 2 : 5 ~ for (int j = 0; j < jsonarray2.length(); ++j) { ~ ((IChatComponent) object).appendSibling(this.deserialize(jsonarray2.get(j))); > CHANGE 3 : 4 @ 3 : 5 ~ ((IChatComponent) object).setChatStyle(JSONTypeProvider.deserialize(parJsonElement, ChatStyle.class)); > CHANGE 4 : 8 @ 4 : 12 ~ private void serializeChatStyle(ChatStyle style, JSONObject object) { ~ JSONObject jsonelement = JSONTypeProvider.serialize(style); ~ for (String entry : jsonelement.keySet()) { ~ object.put(entry, jsonelement.get(entry)); > DELETE 1 @ 1 : 2 > CHANGE 2 : 3 @ 2 : 4 ~ public Object serialize(IChatComponent ichatcomponent) { > CHANGE 2 : 3 @ 2 : 3 ~ return ((ChatComponentText) ichatcomponent).getChatComponentText_TextValue(); > CHANGE 1 : 2 @ 1 : 2 ~ JSONObject jsonobject = new JSONObject(); > CHANGE 1 : 2 @ 1 : 2 ~ this.serializeChatStyle(ichatcomponent.getChatStyle(), jsonobject); > CHANGE 3 : 4 @ 3 : 4 ~ JSONArray jsonarray = new JSONArray(); > CHANGE 2 : 3 @ 2 : 4 ~ jsonarray.put(this.serialize(ichatcomponent1)); > CHANGE 2 : 3 @ 2 : 3 ~ jsonobject.put("extra", jsonarray); > CHANGE 3 : 4 @ 3 : 5 ~ jsonobject.put("text", ((ChatComponentText) ichatcomponent).getChatComponentText_TextValue()); > CHANGE 2 : 3 @ 2 : 3 ~ jsonobject.put("translate", chatcomponenttranslation.getKey()); > CHANGE 2 : 3 @ 2 : 3 ~ JSONArray jsonarray1 = new JSONArray(); > CHANGE 3 : 4 @ 3 : 5 ~ jsonarray1.put(this.serialize((IChatComponent) object)); > CHANGE 1 : 2 @ 1 : 2 ~ jsonarray1.put(String.valueOf(object)); > CHANGE 3 : 4 @ 3 : 4 ~ jsonobject.put("with", jsonarray1); > CHANGE 3 : 8 @ 3 : 8 ~ JSONObject jsonobject1 = new JSONObject(); ~ jsonobject1.put("name", chatcomponentscore.getName()); ~ jsonobject1.put("objective", chatcomponentscore.getObjective()); ~ jsonobject1.put("value", chatcomponentscore.getUnformattedTextForChat()); ~ jsonobject.put("score", jsonobject1); > CHANGE 7 : 8 @ 7 : 8 ~ jsonobject.put("selector", chatcomponentselector.getSelector()); > INSERT 6 : 9 @ 6 + /** + * So sorry for this implementation + */ > CHANGE 1 : 8 @ 1 : 2 ~ if ((component instanceof ChatComponentText) && component.getChatStyle().isEmpty() ~ && component.getSiblings().isEmpty()) { ~ String escaped = new JSONObject().put("E", component.getUnformattedTextForChat()).toString(); ~ return escaped.substring(5, escaped.length() - 1); ~ } else { ~ return JSONTypeProvider.serialize(component).toString(); ~ } > CHANGE 3 : 7 @ 3 : 4 ~ if (json.equals("null")) { ~ return new ChatComponentText(""); ~ } ~ return (IChatComponent) JSONTypeProvider.deserialize(json, IChatComponent.class); > INSERT 1 : 2 @ 1 + } > CHANGE 1 : 14 @ 1 : 7 ~ public static IChatComponent join(List components) { ~ ChatComponentText chatcomponenttext = new ChatComponentText(""); ~ ~ for (int i = 0; i < components.size(); ++i) { ~ if (i > 0) { ~ if (i == components.size() - 1) { ~ chatcomponenttext.appendText(" and "); ~ } else if (i > 0) { ~ chatcomponenttext.appendText(", "); ~ } ~ } ~ ~ chatcomponenttext.appendSibling((IChatComponent) components.get(i)); > INSERT 1 : 3 @ 1 + + return chatcomponenttext; > EOF