package joshie.harvest.api.quests;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import java.util.List;
public interface IQuestHelper {
/** Returns true if this quest is completed
* @param quest the quest
* @param player the player**/
boolean hasCompleted(Quest quest, EntityPlayer player);
/** Increases the stage of the quest
* @param quest the quest to sync
* @param player the player syncing to*/
void increaseStage(Quest quest, EntityPlayer player);
/** Syncs data about this quest to the player
* @param quest the quest to sync
* @param player the player syncing to */
void syncData(Quest quest, EntityPlayer player);
/** Completes a quest if it has never been completed before */
void completeQuestConditionally(Quest quest, EntityPlayer player);
/** Completes a quest
* @param quest the quest to mark as completed
* @param player the player to complete the quest for**/
void completeQuest(Quest quest, EntityPlayer player);
/** Rewards a player with an item, if called on the client side,
* the item will be validated against the quest to ensure it can be rewarded
* @param quest the quest we're taking from, so it can be validated
* @param player the player
* @param stack the item you want to give the player **/
void rewardItem(Quest quest, EntityPlayer player, ItemStack stack);
/** Rewards a player with gold, SERVER SIDE ONLY
* If you try to call it on the client, an exception will be thrown
* @param player the player
* @param gold how much gold to give**/
void rewardGold(EntityPlayer player, long gold);
/** Rewards the player with an entity, if called client side,
* This will be validated in the quest on the server
* @param quest the quest
* @param player the player
* @param entity the entity */
void rewardEntity(Quest quest, EntityPlayer player, String entity);
/** Returns all the quests sorted by priority
* If there are none, the list will be empty
* @param player the player */
List<Quest> getCurrentQuests(EntityPlayer player);
}