package joshie.harvest.quests.town.festivals.contest; import joshie.harvest.api.calendar.Festival; import joshie.harvest.api.npc.NPCEntity; import joshie.harvest.api.npc.task.HFTask; import joshie.harvest.api.npc.task.TaskElement; import joshie.harvest.quests.town.festivals.Place; import joshie.harvest.town.TownHelper; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; @HFTask("winner") public class ContestTaskWinner extends TaskElement { private Festival festival; @SuppressWarnings("WeakerAccess") public ContestTaskWinner(Festival festival) { this.festival = festival; } public void execute(NPCEntity npc) { super.execute(npc); QuestContest quest = TownHelper.getClosestTownToEntity(npc.getAsEntity(), false).getQuests().getAQuest(festival.getQuest()); if (quest != null) { ContestEntries entries = quest.getEntries(); for (Place place: Place.VALUES) { quest.reward(npc.getAsEntity().worldObj, place); } entries.complete(npc.getAsEntity().worldObj); TownHelper.getClosestTownToEntity(npc.getAsEntity(), false).getQuests().markCompleted(npc.getAsEntity().worldObj, null, quest, false); } } @Override public void readFromNBT(NBTTagCompound tag) { festival = Festival.REGISTRY.get(new ResourceLocation(tag.getString("Festival"))); } @Override public NBTTagCompound writeToNBT(NBTTagCompound tag) { tag.setString("Festival", festival.getResource().toString()); return tag; } }