package joshie.harvest.quests.base;
import com.google.common.collect.Lists;
import joshie.harvest.api.HFApi;
import joshie.harvest.api.npc.NPC;
import joshie.harvest.api.npc.NPCEntity;
import joshie.harvest.api.quests.Quest;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
import java.util.Set;
public abstract class QuestFriendship extends Quest {
protected final int relationship;
public QuestFriendship(NPC npc, int relationship) {
setNPCs(npc);
this.relationship = relationship;
}
@Override
public boolean isNPCUsed(EntityPlayer player, NPCEntity entity) {
return super.isNPCUsed(player, entity) && HFApi.player.getRelationsForPlayer(player).getRelationship(entity.getNPC()) >= relationship;
}
@Override
public boolean canStartQuest(Set<Quest> active, Set<Quest> finished) {
return true;
}
@Override
public boolean isRealQuest() {
return false;
}
@SideOnly(Side.CLIENT)
@Override
public String getLocalizedScript(EntityPlayer player, NPCEntity entity) {
return getLocalized("text");
}
@Override
public void onChatClosed(EntityPlayer player, NPCEntity entity, boolean isSneaking) {
complete(player);
}
@Override
public void onQuestCompleted(EntityPlayer player) {
List<ItemStack> stacks = getRewardStacks(player);
if (stacks != null) {
for (ItemStack stack: stacks) {
rewardItem(player, stack);
}
}
}
protected List<ItemStack> getRewardStacks(EntityPlayer player) {
return getRewardStack() != null ? Lists.newArrayList(getRewardStack()) : null;
}
protected ItemStack getRewardStack() { return null; }
}