Java tutorial
/* * Nailed, a Minecraft PvP server framework * Copyright (C) jk-5 <http://github.com/jk-5/> * Copyright (C) Nailed team and contributors <http://github.com/nailed/> * * This program is free software: you can redistribute it and/or modify it * under the terms of the MIT License. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the MIT License along with * this program. If not, see <http://opensource.org/licenses/MIT/>. */ package jk_5.nailed.api.chat.serialization; import java.lang.reflect.Type; import java.util.Arrays; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import jk_5.nailed.api.chat.BaseComponent; import jk_5.nailed.api.chat.TranslatableComponent; public class TranslatableComponentSerializer extends BaseComponentSerializer implements JsonSerializer<TranslatableComponent>, JsonDeserializer<TranslatableComponent> { @Override public TranslatableComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { TranslatableComponent component = new TranslatableComponent(); JsonObject object = json.getAsJsonObject(); deserialize(object, component, context); component.setTranslate(object.get("translate").getAsString()); if (object.has("with")) { component.setWith(Arrays .asList((BaseComponent[]) context.deserialize(object.get("with"), BaseComponent[].class))); } return component; } @Override public JsonElement serialize(TranslatableComponent src, Type typeOfSrc, JsonSerializationContext context) { JsonObject object = new JsonObject(); serialize(object, src, context); object.addProperty("translate", src.getTranslate()); if (src.getWith() != null) { object.add("with", context.serialize(src.getWith())); } return object; } }