package joshie.harvest.quests.base; import joshie.harvest.api.buildings.Building; import joshie.harvest.api.npc.NPC; import joshie.harvest.api.npc.NPCEntity; import joshie.harvest.api.quests.Quest; import joshie.harvest.quests.Quests; import joshie.harvest.town.TownHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.Set; public class QuestMeeting extends Quest { protected final Building building; protected final ItemStack buildingStack; public QuestMeeting(Building building, NPC npc) { this.building = building; this.buildingStack = building.getSpawner(); setNPCs(npc); } @Override public boolean canStartQuest(Set<Quest> active, Set<Quest> finished) { return finished.contains(Quests.YULIF_MEET); } @Override public boolean isNPCUsed(EntityPlayer player, NPCEntity entity) { return getNPCs().contains(entity.getNPC()) && TownHelper.getClosestTownToEntity(player, false).hasBuilding(building); } @Override public String getDescription(World world, EntityPlayer player) { return hasBuilding(player) ? getLocalized("description") : null; } @Override public boolean isRealQuest() { return false; } @SideOnly(Side.CLIENT) @Override public String getLocalizedScript(EntityPlayer player, NPCEntity entity) { return getLocalized("text"); } protected boolean hasBuilding(EntityPlayer player) { return TownHelper.getClosestTownToEntity(player, false).hasBuilding(building); } @Override public void onChatClosed(EntityPlayer player, NPCEntity entity, boolean wasSneaking) { complete(player); } }