// Path: src/api/java/com/github/atomicblom/shearmadness/api/Capability.java
// public final class Capability {
//     @CapabilityInject(IChiseledSheepCapability.class)
//     public static final net.minecraftforge.common.capabilities.Capability<IChiseledSheepCapability> CHISELED_SHEEP;
// 
//     static {
//         CHISELED_SHEEP = null;
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/capability/CapabilityProvider.java
// @SuppressWarnings({"ObjectEquality", "ConstantConditions", "ClassHasNoToStringMethod"})
// public class CapabilityProvider implements ICapabilityProvider, INBTSerializable<NBTBase>
// {
//     private final IChiseledSheepCapability capability;
// 
//     public CapabilityProvider()
//     {
//         capability = new ChiseledSheepCapability();
//     }
// 
//     @Override
//     public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing)
//     {
//         return capability == CHISELED_SHEEP;
//     }
// 
//     @Override
//     public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing)
//     {
//         if (capability == CHISELED_SHEEP)
//         {
//             return CHISELED_SHEEP.cast(this.capability);
//         }
//         //noinspection ReturnOfNull
//         return null;
//     }
// 
//     @Override
//     public NBTBase serializeNBT()
//     {
//         return ChiseledSheepCapabilityStorage.instance.writeNBT(CHISELED_SHEEP, capability, null);
//     }
// 
//     @Override
//     public void deserializeNBT(NBTBase nbt)
//     {
//         ChiseledSheepCapabilityStorage.instance.readNBT(CHISELED_SHEEP, capability, null, nbt);
//     }
// }
// 
// Path: src/api/java/com/github/atomicblom/shearmadness/api/capability/IChiseledSheepCapability.java
// public interface IChiseledSheepCapability
// {
//     boolean isChiseled();
// 
//     void unChisel();
// 
//     void chisel(ItemStack itemStack);
// 
//     ItemStack getChiselItemStack();
// 
//     int getItemIdentifier();
// 
//     NBTTagCompound getExtraData();
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/networking/SheepChiseledMessage.java
// public class SheepChiseledMessage implements IMessage
// {
//     private int sheepId;
//     private boolean isChiseled;
//     private ItemStack itemStack = null;
// 
//     @SuppressWarnings("unused")
//     public SheepChiseledMessage() {}
// 
//     public SheepChiseledMessage(Entity sheep)
//     {
//         sheepId = sheep.getEntityId();
//         final IChiseledSheepCapability capability = sheep.getCapability(Capability.CHISELED_SHEEP, null);
//         isChiseled = capability.isChiseled();
//         itemStack = capability.getChiselItemStack();
//     }
// 
//     @Override
//     public void fromBytes(ByteBuf buf)
//     {
//         sheepId = buf.readInt();
//         isChiseled = buf.readBoolean();
//         itemStack = ByteBufUtils.readItemStack(buf);
//     }
// 
//     @Override
//     public void toBytes(ByteBuf buf)
//     {
//         buf.writeInt(sheepId);
//         buf.writeBoolean(isChiseled);
//         ByteBufUtils.writeItemStack(buf, itemStack);
//     }
// 
//     int getSheepId()
//     {
//         return sheepId;
//     }
// 
//     boolean isChiseled()
//     {
//         return isChiseled;
//     }
// 
//     ItemStack getChiselItemStack()
//     {
//         return itemStack;
//     }
// 
//     @Override
//     public String toString()
//     {
//         return Objects.toStringHelper(this)
//                 .add("sheepId", sheepId)
//                 .add("isChiseled", isChiseled)
//                 .add("itemStack", itemStack)
//                 .toString();
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/utility/ItemStackUtils.java
// @SuppressWarnings("UtilityClass")
// public final class ItemStackUtils
// {
//     private ItemStackUtils() {}
// 
//     public static void dropItem(Entity nearEntity, ItemStack itemStack)
//     {
//         final EntityItem item = nearEntity.entityDropItem(itemStack, 1.0F);
//         final Random rand = new Random();
//         item.motionY += rand.nextFloat() * 0.05F;
//         item.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
//         item.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
//     }
// 
//     private static final PooledByteBufAllocator allocator = new PooledByteBufAllocator(false);
// 
//     public static int getHash(ItemStack itemStack)
//     {
//         final ByteBuf buffer = allocator.heapBuffer();
//         final PacketBuffer packetBuffer = new PacketBuffer(buffer);
//         packetBuffer.writeItemStackToBuffer(itemStack);
//         final int i = Arrays.hashCode(packetBuffer.array());
//         packetBuffer.release();
//         return i;
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/ShearMadnessMod.java
// public static final SimpleNetworkWrapper CHANNEL = NetworkRegistry.INSTANCE.newSimpleChannel(CommonReference.MOD_ID);


import com.github.atomicblom.shearmadness.api.Capability;
import com.github.atomicblom.shearmadness.capability.CapabilityProvider;
import com.github.atomicblom.shearmadness.api.capability.IChiseledSheepCapability;
import com.github.atomicblom.shearmadness.networking.SheepChiseledMessage;
import com.github.atomicblom.shearmadness.utility.ItemStackUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import static com.github.atomicblom.shearmadness.ShearMadnessMod.CHANNEL;
package com.github.atomicblom.shearmadness;



@SuppressWarnings({"BooleanMethodNameMustStartWithQuestion", "UtilityClass"})
public final class Chiseling
{
    private Chiseling() {}

    public static void chiselSheep(Entity sheep, EntityPlayer entityPlayer, ItemStack activeStack)
    {
// Path: src/api/java/com/github/atomicblom/shearmadness/api/Capability.java
// public final class Capability {
//     @CapabilityInject(IChiseledSheepCapability.class)
//     public static final net.minecraftforge.common.capabilities.Capability<IChiseledSheepCapability> CHISELED_SHEEP;
// 
//     static {
//         CHISELED_SHEEP = null;
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/capability/CapabilityProvider.java
// @SuppressWarnings({"ObjectEquality", "ConstantConditions", "ClassHasNoToStringMethod"})
// public class CapabilityProvider implements ICapabilityProvider, INBTSerializable<NBTBase>
// {
//     private final IChiseledSheepCapability capability;
// 
//     public CapabilityProvider()
//     {
//         capability = new ChiseledSheepCapability();
//     }
// 
//     @Override
//     public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing)
//     {
//         return capability == CHISELED_SHEEP;
//     }
// 
//     @Override
//     public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing)
//     {
//         if (capability == CHISELED_SHEEP)
//         {
//             return CHISELED_SHEEP.cast(this.capability);
//         }
//         //noinspection ReturnOfNull
//         return null;
//     }
// 
//     @Override
//     public NBTBase serializeNBT()
//     {
//         return ChiseledSheepCapabilityStorage.instance.writeNBT(CHISELED_SHEEP, capability, null);
//     }
// 
//     @Override
//     public void deserializeNBT(NBTBase nbt)
//     {
//         ChiseledSheepCapabilityStorage.instance.readNBT(CHISELED_SHEEP, capability, null, nbt);
//     }
// }
// 
// Path: src/api/java/com/github/atomicblom/shearmadness/api/capability/IChiseledSheepCapability.java
// public interface IChiseledSheepCapability
// {
//     boolean isChiseled();
// 
//     void unChisel();
// 
//     void chisel(ItemStack itemStack);
// 
//     ItemStack getChiselItemStack();
// 
//     int getItemIdentifier();
// 
//     NBTTagCompound getExtraData();
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/networking/SheepChiseledMessage.java
// public class SheepChiseledMessage implements IMessage
// {
//     private int sheepId;
//     private boolean isChiseled;
//     private ItemStack itemStack = null;
// 
//     @SuppressWarnings("unused")
//     public SheepChiseledMessage() {}
// 
//     public SheepChiseledMessage(Entity sheep)
//     {
//         sheepId = sheep.getEntityId();
//         final IChiseledSheepCapability capability = sheep.getCapability(Capability.CHISELED_SHEEP, null);
//         isChiseled = capability.isChiseled();
//         itemStack = capability.getChiselItemStack();
//     }
// 
//     @Override
//     public void fromBytes(ByteBuf buf)
//     {
//         sheepId = buf.readInt();
//         isChiseled = buf.readBoolean();
//         itemStack = ByteBufUtils.readItemStack(buf);
//     }
// 
//     @Override
//     public void toBytes(ByteBuf buf)
//     {
//         buf.writeInt(sheepId);
//         buf.writeBoolean(isChiseled);
//         ByteBufUtils.writeItemStack(buf, itemStack);
//     }
// 
//     int getSheepId()
//     {
//         return sheepId;
//     }
// 
//     boolean isChiseled()
//     {
//         return isChiseled;
//     }
// 
//     ItemStack getChiselItemStack()
//     {
//         return itemStack;
//     }
// 
//     @Override
//     public String toString()
//     {
//         return Objects.toStringHelper(this)
//                 .add("sheepId", sheepId)
//                 .add("isChiseled", isChiseled)
//                 .add("itemStack", itemStack)
//                 .toString();
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/utility/ItemStackUtils.java
// @SuppressWarnings("UtilityClass")
// public final class ItemStackUtils
// {
//     private ItemStackUtils() {}
// 
//     public static void dropItem(Entity nearEntity, ItemStack itemStack)
//     {
//         final EntityItem item = nearEntity.entityDropItem(itemStack, 1.0F);
//         final Random rand = new Random();
//         item.motionY += rand.nextFloat() * 0.05F;
//         item.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
//         item.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
//     }
// 
//     private static final PooledByteBufAllocator allocator = new PooledByteBufAllocator(false);
// 
//     public static int getHash(ItemStack itemStack)
//     {
//         final ByteBuf buffer = allocator.heapBuffer();
//         final PacketBuffer packetBuffer = new PacketBuffer(buffer);
//         packetBuffer.writeItemStackToBuffer(itemStack);
//         final int i = Arrays.hashCode(packetBuffer.array());
//         packetBuffer.release();
//         return i;
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/ShearMadnessMod.java
// public static final SimpleNetworkWrapper CHANNEL = NetworkRegistry.INSTANCE.newSimpleChannel(CommonReference.MOD_ID);


// Path: src/main/java/com/github/atomicblom/shearmadness/Chiseling.java
import com.github.atomicblom.shearmadness.api.Capability;
import com.github.atomicblom.shearmadness.capability.CapabilityProvider;
import com.github.atomicblom.shearmadness.api.capability.IChiseledSheepCapability;
import com.github.atomicblom.shearmadness.networking.SheepChiseledMessage;
import com.github.atomicblom.shearmadness.utility.ItemStackUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import static com.github.atomicblom.shearmadness.ShearMadnessMod.CHANNEL;

package com.github.atomicblom.shearmadness;



@SuppressWarnings({"BooleanMethodNameMustStartWithQuestion", "UtilityClass"})
public final class Chiseling
{
    private Chiseling() {}

    public static void chiselSheep(Entity sheep, EntityPlayer entityPlayer, ItemStack activeStack)
    {
        if (sheep.hasCapability(Capability.CHISELED_SHEEP, null))