// Path: src/main/java/com/github/atomicblom/shearmadness/capability/ChiseledSheepCapability.java
// public class ChiseledSheepCapability implements IChiseledSheepCapability, IWriteExtraData
// {
//     @Nullable
//     private ItemStack itemStack = null;
//     private int itemIdentifier;
//     private NBTTagCompound customData = null;
// 
//     @Override
//     public boolean isChiseled()
//     {
//         return itemStack != null;
//     }
// 
//     @Override
//     public void chisel(@Nonnull ItemStack itemStack)
//     {
//         this.itemStack = itemStack;
//         itemIdentifier = ItemStackUtils.getHash(itemStack);
//     }
// 
//     @Override
//     public void unChisel() {
//         itemStack = null;
//         itemIdentifier = 0;
//     }
// 
//     @Override
//     public ItemStack getChiselItemStack()
//     {
//         return itemStack;
//     }
// 
//     @Override
//     public int getItemIdentifier()
//     {
//         return itemIdentifier;
//     }
// 
//     @Override
//     public NBTTagCompound getExtraData() {
//         if (customData == null) {
//             customData = new NBTTagCompound();
//         }
//         return customData;
//     }
// 
//     @Override
//     public void setExtraData(NBTTagCompound extraData) {
//         customData = extraData;
//     }
// 
//     @Override
//     public String toString()
//     {
//         return Objects.toStringHelper(this)
//                 .add("itemIdentifier", itemIdentifier)
//                 .add("itemStack", itemStack)
//                 .add("isChiseled", isChiseled())
//                 .toString();
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/capability/ChiseledSheepCapabilityStorage.java
// public class ChiseledSheepCapabilityStorage implements IStorage<IChiseledSheepCapability>
// {
//     public static final IStorage<IChiseledSheepCapability> instance = new ChiseledSheepCapabilityStorage();
// 
//     @Override
//     public NBTBase writeNBT(Capability<IChiseledSheepCapability> capability, IChiseledSheepCapability instance, EnumFacing side)
//     {
//         final NBTTagCompound compound = new NBTTagCompound();
//         compound.setBoolean("isChiseled", instance.isChiseled());
//         if (instance.isChiseled())
//         {
//             final NBTTagCompound targetTag = new NBTTagCompound();
//             instance.getChiselItemStack().writeToNBT(targetTag);
//             compound.setTag("chiselDefinition", targetTag);
//         }
// 
//         final NBTTagCompound extraData = instance.getExtraData();
//         compound.setTag("extraData", extraData);
//         return compound;
//     }
// 
//     @Override
//     public void readNBT(Capability<IChiseledSheepCapability> capability, IChiseledSheepCapability instance, EnumFacing side, NBTBase nbt)
//     {
//         final NBTTagCompound compound = (NBTTagCompound) nbt;
// 
//         final boolean isChiseled = compound.getBoolean("isChiseled");
//         if (isChiseled)
//         {
//             final ItemStack stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("chiselDefinition"));
//             instance.chisel(stack);
//         }
// 
//         if (instance instanceof  IWriteExtraData) {
//             ((IWriteExtraData) instance).setExtraData(compound.getCompoundTag("extraData"));
//         }
//     }
// }
// 
// Path: src/integration/java/com/github/atomicblom/shearmadness/variations/chancecubes/ChanceCubesReference.java
// @CapabilityInject(IChanceCubeParticipationCapability.class)
// public static final Capability<IChanceCubeParticipationCapability> CHANCE_CUBE_PARTICIPATION;


import com.github.atomicblom.shearmadness.capability.ChiseledSheepCapability;
import com.github.atomicblom.shearmadness.capability.ChiseledSheepCapabilityStorage;
import net.minecraft.nbt.NBTBase;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.common.util.INBTSerializable;
import javax.annotation.Nullable;
import static com.github.atomicblom.shearmadness.variations.chancecubes.ChanceCubesReference.CHANCE_CUBE_PARTICIPATION;
package com.github.atomicblom.shearmadness.variations.chancecubes.capability;




/**
 * Created by codew on 1/03/2017.
 */
public class ChanceCubeParticipationCapabilityProvider implements ICapabilityProvider, INBTSerializable<NBTBase> {

    private final ChanceCubeParticipationCapability capability;

    public ChanceCubeParticipationCapabilityProvider() {
        capability = new ChanceCubeParticipationCapability();
    }

    @Override
    public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
// Path: src/main/java/com/github/atomicblom/shearmadness/capability/ChiseledSheepCapability.java
// public class ChiseledSheepCapability implements IChiseledSheepCapability, IWriteExtraData
// {
//     @Nullable
//     private ItemStack itemStack = null;
//     private int itemIdentifier;
//     private NBTTagCompound customData = null;
// 
//     @Override
//     public boolean isChiseled()
//     {
//         return itemStack != null;
//     }
// 
//     @Override
//     public void chisel(@Nonnull ItemStack itemStack)
//     {
//         this.itemStack = itemStack;
//         itemIdentifier = ItemStackUtils.getHash(itemStack);
//     }
// 
//     @Override
//     public void unChisel() {
//         itemStack = null;
//         itemIdentifier = 0;
//     }
// 
//     @Override
//     public ItemStack getChiselItemStack()
//     {
//         return itemStack;
//     }
// 
//     @Override
//     public int getItemIdentifier()
//     {
//         return itemIdentifier;
//     }
// 
//     @Override
//     public NBTTagCompound getExtraData() {
//         if (customData == null) {
//             customData = new NBTTagCompound();
//         }
//         return customData;
//     }
// 
//     @Override
//     public void setExtraData(NBTTagCompound extraData) {
//         customData = extraData;
//     }
// 
//     @Override
//     public String toString()
//     {
//         return Objects.toStringHelper(this)
//                 .add("itemIdentifier", itemIdentifier)
//                 .add("itemStack", itemStack)
//                 .add("isChiseled", isChiseled())
//                 .toString();
//     }
// }
// 
// Path: src/main/java/com/github/atomicblom/shearmadness/capability/ChiseledSheepCapabilityStorage.java
// public class ChiseledSheepCapabilityStorage implements IStorage<IChiseledSheepCapability>
// {
//     public static final IStorage<IChiseledSheepCapability> instance = new ChiseledSheepCapabilityStorage();
// 
//     @Override
//     public NBTBase writeNBT(Capability<IChiseledSheepCapability> capability, IChiseledSheepCapability instance, EnumFacing side)
//     {
//         final NBTTagCompound compound = new NBTTagCompound();
//         compound.setBoolean("isChiseled", instance.isChiseled());
//         if (instance.isChiseled())
//         {
//             final NBTTagCompound targetTag = new NBTTagCompound();
//             instance.getChiselItemStack().writeToNBT(targetTag);
//             compound.setTag("chiselDefinition", targetTag);
//         }
// 
//         final NBTTagCompound extraData = instance.getExtraData();
//         compound.setTag("extraData", extraData);
//         return compound;
//     }
// 
//     @Override
//     public void readNBT(Capability<IChiseledSheepCapability> capability, IChiseledSheepCapability instance, EnumFacing side, NBTBase nbt)
//     {
//         final NBTTagCompound compound = (NBTTagCompound) nbt;
// 
//         final boolean isChiseled = compound.getBoolean("isChiseled");
//         if (isChiseled)
//         {
//             final ItemStack stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("chiselDefinition"));
//             instance.chisel(stack);
//         }
// 
//         if (instance instanceof  IWriteExtraData) {
//             ((IWriteExtraData) instance).setExtraData(compound.getCompoundTag("extraData"));
//         }
//     }
// }
// 
// Path: src/integration/java/com/github/atomicblom/shearmadness/variations/chancecubes/ChanceCubesReference.java
// @CapabilityInject(IChanceCubeParticipationCapability.class)
// public static final Capability<IChanceCubeParticipationCapability> CHANCE_CUBE_PARTICIPATION;


// Path: src/integration/java/com/github/atomicblom/shearmadness/variations/chancecubes/capability/ChanceCubeParticipationCapabilityProvider.java
import com.github.atomicblom.shearmadness.capability.ChiseledSheepCapability;
import com.github.atomicblom.shearmadness.capability.ChiseledSheepCapabilityStorage;
import net.minecraft.nbt.NBTBase;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.common.util.INBTSerializable;
import javax.annotation.Nullable;
import static com.github.atomicblom.shearmadness.variations.chancecubes.ChanceCubesReference.CHANCE_CUBE_PARTICIPATION;

package com.github.atomicblom.shearmadness.variations.chancecubes.capability;




/**
 * Created by codew on 1/03/2017.
 */
public class ChanceCubeParticipationCapabilityProvider implements ICapabilityProvider, INBTSerializable<NBTBase> {

    private final ChanceCubeParticipationCapability capability;

    public ChanceCubeParticipationCapabilityProvider() {
        capability = new ChanceCubeParticipationCapability();
    }

    @Override
    public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
        return capability == CHANCE_CUBE_PARTICIPATION;