Newer
Older
ultramine_bukkit / src / main / java / net / minecraftforge / cauldron / api / Fishing.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
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);

}