@Override public ScoreComponent duplicate() { return new ScoreComponent( this ); }
@Override public ScoreComponent deserialize(JsonElement element, Type type, JsonDeserializationContext context) throws JsonParseException { JsonObject json = element.getAsJsonObject(); if ( !json.has( "name" ) || !json.has( "objective" ) ) { throw new JsonParseException( "A score component needs at least a name and an objective" ); } String name = json.get( "name" ).getAsString(); String objective = json.get( "objective" ).getAsString(); ScoreComponent component = new ScoreComponent( name, objective ); if ( json.has( "value" ) && !json.get( "value" ).getAsString().isEmpty() ) { component.setValue( json.get( "value" ).getAsString() ); } deserialize( json, component, context ); return component; }