--- a/net/minecraft/entity/passive/SheepEntity.java
+++ b/net/minecraft/entity/passive/SheepEntity.java
@@ -60,7 +60,7 @@
 import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.api.distmarker.OnlyIn;
 
-public class SheepEntity extends AnimalEntity implements IShearable {
+public class SheepEntity extends AnimalEntity implements IShearable, net.minecraftforge.common.IForgeShearable {
    private static final DataParameter<Byte> field_184774_bv = EntityDataManager.func_187226_a(SheepEntity.class, DataSerializers.field_187191_a);
    private static final Map<DyeColor, IItemProvider> field_200206_bz = Util.func_200696_a(Maps.newEnumMap(DyeColor.class), (p_203402_0_) -> {
       p_203402_0_.put(DyeColor.WHITE, Blocks.field_196556_aL);
@@ -215,7 +215,7 @@
 
    public ActionResultType func_230254_b_(PlayerEntity p_230254_1_, Hand p_230254_2_) {
       ItemStack itemstack = p_230254_1_.func_184586_b(p_230254_2_);
-      if (itemstack.func_77973_b() == Items.field_151097_aZ) {
+      if (false && itemstack.func_77973_b() == Items.field_151097_aZ) { //Forge: Moved to onSheared
          if (!this.field_70170_p.field_72995_K && this.func_230262_K__()) {
             this.func_230263_a_(SoundCategory.PLAYERS);
             itemstack.func_222118_a(1, p_230254_1_, (p_213613_1_) -> {
@@ -360,4 +360,26 @@
    protected float func_213348_b(Pose p_213348_1_, EntitySize p_213348_2_) {
       return 0.95F * p_213348_2_.field_220316_b;
    }
+
+   @Override
+   public boolean isShearable(@javax.annotation.Nonnull ItemStack item, World world, BlockPos pos) {
+      return func_230262_K__();
+   }
+
+   @javax.annotation.Nonnull
+   @Override
+   public java.util.List<ItemStack> onSheared(@Nullable PlayerEntity player, @javax.annotation.Nonnull ItemStack item, World world, BlockPos pos, int fortune) {
+      world.func_217384_a(null, this, SoundEvents.field_187763_eJ, player == null ? SoundCategory.BLOCKS : SoundCategory.PLAYERS, 1.0F, 1.0F);
+      if (!world.field_72995_K) {
+         this.func_70893_e(true);
+         int i = 1 + this.field_70146_Z.nextInt(3);
+
+         java.util.List<ItemStack> items = new java.util.ArrayList<>();
+         for (int j = 0; j < i; ++j) {
+            items.add(new ItemStack(field_200206_bz.get(this.func_175509_cj())));
+         }
+         return items;
+      }
+      return java.util.Collections.emptyList();
+   }
 }
