@Override public void write(JsonWriter out, Quest value) throws IOException { out.beginObject(); out.name(NAME).value(value.getName()); out.name(DESCRIPTION).value(value.getDescription()); out.name(X).value(value.getGuiX()); out.name(Y).value(value.getGuiY()); if (value.useBigIcon()) { out.name(BIG_ICON).value(true); } if (value.getIcon() != null) { MinecraftAdapter.ITEM_STACK.write(out.name(ICON), value.getIcon()); } writeQuestList( out, value.getRequirement(), value.getQuestSet().getQuests(), REQUIREMENTS); writeQuestList(out, value.getOptionLinks(), value.getQuestSet().getQuests(), OPTIONS); if (value.getRepeatInfo().getType() != RepeatType.NONE) { REPEAT_INFO_ADAPTER.write(out.name(REPEAT), value.getRepeatInfo()); } if (value.getTriggerType() != TriggerType.NONE) { out.name(TRIGGER).value(value.getTriggerType().name()); } if (value.getTriggerType().isUseTaskCount()) { out.name(TRIGGER_TASKS).value(value.getTriggerTasks()); } if (value.getUseModifiedParentRequirement()) { out.name(PARENT_REQUIREMENT).value(value.getParentRequirementCount()); } out.name(TASKS).beginArray(); for (QuestTask task : value.getTasks()) { TASK_ADAPTER.write(out, task); } out.endArray(); writeItemStackArray( out, (ItemStack[]) ReflectionHelper.getPrivateValue(Quest.class, value, REWARDS), REWARDS); writeItemStackArray( out, (ItemStack[]) ReflectionHelper.getPrivateValue(Quest.class, value, REWARDS_CHOICE), REWARDS_CHOICE); if (value.getReputationRewards() != null && !value.getReputationRewards().isEmpty()) { out.name(REWARDS_REPUTATION).beginArray(); for (Quest.ReputationReward reward : value.getReputationRewards()) { REPUTATION_REWARD_ADAPTER.write(out, reward); } out.endArray(); } out.endObject(); }