package de.tobiyas.racesandclasses.traitcontainer.interfaces.markerinterfaces; import org.bukkit.Material; import de.tobiyas.racesandclasses.eventprocessing.eventresolvage.EventWrapper; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer; public interface TraitWithCost { /** * Returns the cost of the Spell. * The Cost can vary on which Cost Type used. * * @param the player to check for. * * @return the costs of the spell */ double getCost(RaCPlayer player); /** * Returns the {@link CostType} of the Spell. * To see the different type of costs, see {@link CostType} * * @return the CostType of the Spell. * * @see CostType */ CostType getCostType(); /** * returns the Material Type of CostType. * <br> Returns null if no Material costType is needed * @param player to use for getting. * * @return the material for casting. */ Material getCastMaterialType(RaCPlayer player); /** * returns the Material damage for casting. * @param player to search for. * @return the material damage value for casting. */ short getCastMaterialDamage(RaCPlayer player); /** * returns the name of the casting material. * @param player to search for. * @return the material name for casting. */ String getCastMaterialName(RaCPlayer player); /** * triggered when the spell should be triggered, but no CostType is present. * * @param event that triggered * @param player that triggered the spell */ void triggerButDoesNotHaveEnoghCostType(EventWrapper wrapper); /** * Returns true if a CostCheck is needed for this event. * * @param event the Event to check * * @return true if costCheck needed, false otherwise. */ boolean needsCostCheck(EventWrapper wrapper); }