package net.minecraftforge.cauldron.api;
import com.google.common.base.Predicate;
import org.bukkit.inventory.ItemStack;
import java.util.Random;
/**
* Bukkit interface to Forge's FishingHooks class.
*/
public interface Fishing
{
/**
* Add a WeightedRandomFishable to the 'fish' results table.
*
* @param fish fishable item
*/
public void addFish(WeightedRandomFishable fish);
/**
* Add a WeightedRandomFishable to the 'junk' results table.
*
* @param fish fishable item
*/
public void addJunk(WeightedRandomFishable fish);
/**
* Add a WeightedRandomFishable to the 'treasure' results table.
*
* @param fish fishable item
*/
public void addTreasure(WeightedRandomFishable fish);
/**
* Remove WeightedRandomFishables from the 'fish' results table.
* Modifications to the Fishable objects will not be kept.
*
* @param test a Predicate giving the removal condition
*/
public void removeMatchingFish(Predicate<WeightedRandomFishable> test);
/**
* Remove WeightedRandomFishables from the 'junk' results table.
* Modifications to the Fishable objects will not be kept.
*
* @param test a Predicate giving the removal condition
*/
public void removeMatchingJunk(Predicate<WeightedRandomFishable> test);
/**
* Remove WeightedRandomFishables from the 'treasure' results table.
* Modifications to the Fishable objects will not be kept.
*
* @param test a Predicate giving the removal condition
*/
public void removeMatchingTreasure(Predicate<WeightedRandomFishable> test);
/**
* Get the item pulled up from a simulated fishing attempt.
*
* @param rand the Random instance to use
* @param baseChance roughly, a percentage chance (0-1) to
* get a fish
* @param fishingLuckEnchantmentLevel the value of {@link org.bukkit.enchantments.Enchantment#LUCK}
* on the fishing rod
* @param fishingSpeedEnchantmentLevel the value of {@link org.bukkit.enchantments.Enchantment#LURE}
* on the fishing rod
* @return the item fished
*/
public ItemStack getRandomFishable(Random rand, float baseChance, int fishingLuckEnchantmentLevel, int fishingSpeedEnchantmentLevel);
}