001 package net.minecraftforge.common; 002 003 import java.util.ArrayList; 004 005 import net.minecraft.entity.player.EntityPlayer; 006 import net.minecraft.item.ItemStack; 007 import net.minecraft.util.MovingObjectPosition; 008 import net.minecraft.world.World; 009 010 /** 011 * 012 * This allows for mods to create there own Shear-like items 013 * and have them interact with Blocks/Entities without extra work. 014 * Also, if your block/entity supports the Shears, this allows you 015 * to support mod-shears as well. 016 * 017 */ 018 public interface IShearable 019 { 020 /** 021 * Checks if the object is currently shearable 022 * Example: Sheep return false when they have no wool 023 * 024 * @param item The itemstack that is being used, Possible to be null 025 * @param world The current world 026 * @param x The X Position 027 * @param y The Y Position 028 * @param z The Z Position 029 * @return If this is shearable, and onSheared should be called. 030 */ 031 public boolean isShearable(ItemStack item, World world, int x, int y, int z); 032 033 /** 034 * Performs the shear function on this object. 035 * This is called for both client, and server. 036 * The object should perform all actions related to being sheared, 037 * except for dropping of the items. 038 * 039 * Returns a list of items that resulted from the shearing process. 040 * 041 * For entities, they should trust there internal location information 042 * over the values passed into this function. 043 * 044 * @param item The itemstack that is being used, Possible to be null 045 * @param world The current world 046 * @param x The X Position 047 * @param y The Y Position 048 * @param z The Z Position 049 * @param fortune The fortune level of the shears being used 050 * @return A ArrayList containing all items from this shearing. Possible to be null. 051 */ 052 public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune); 053 }