package com.infinityraider.agricraft.api.fertilizer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IAgriFertilizer {
/**
* Whether or not this mod can be used on a cross crop to trigger a mutation
* (does not override configuration option).
*
* @return If the fertilizer can trigger a mutation event.
*/
boolean canTriggerMutation();
/**
* This is called when the fertilizer is used on a crop, this only is called
* if true is returned from hasSpecialBehaviour.
*
* @param player The player that applied the fertilizer.
* @param world The world that the fertilizer was applied in.
* @param pos The location that the fertilizer was applied.
* @param target The fertilizable object to which the fertilizer was
* applied.
* @param stack The stack that the player was holding that triggered the
* fertilizer to be applied.
* @param random A random for use in generating probabilities.
*
* @return
*/
boolean applyFertilizer(EntityPlayer player, World world, BlockPos pos, IAgriFertilizable target, ItemStack stack, Random random);
/**
* Called on the client when the fertilizer is applied, can be used
* for particles or other visual effects.
*
* @param meta UNKNOWN!
* @param world The world that the fertilizer was applied in.
* @param pos The location at which the fertilizer was applied in the world.
*/
@SideOnly(Side.CLIENT)
void performClientAnimations(int meta, World world, BlockPos pos);
}