ForgePatch/patches/minecraft/net/minecraft/item/ShearsItem.java.patch

29 lines
1.7 KiB
Diff

--- a/net/minecraft/item/ShearsItem.java
+++ b/net/minecraft/item/ShearsItem.java
@@ -34,4 +34,25 @@
return 15.0F;
}
}
+
+ @Override
+ public net.minecraft.util.ActionResultType func_111207_a(ItemStack stack, net.minecraft.entity.player.PlayerEntity playerIn, LivingEntity entity, net.minecraft.util.Hand hand) {
+ if (entity.field_70170_p.field_72995_K) return net.minecraft.util.ActionResultType.PASS;
+ if (entity instanceof net.minecraftforge.common.IForgeShearable) {
+ net.minecraftforge.common.IForgeShearable target = (net.minecraftforge.common.IForgeShearable)entity;
+ BlockPos pos = new BlockPos(entity.func_226277_ct_(), entity.func_226278_cu_(), entity.func_226281_cx_());
+ if (target.isShearable(stack, entity.field_70170_p, pos)) {
+ java.util.List<ItemStack> drops = target.onSheared(playerIn, stack, entity.field_70170_p, pos,
+ net.minecraft.enchantment.EnchantmentHelper.func_77506_a(net.minecraft.enchantment.Enchantments.field_185308_t, stack));
+ java.util.Random rand = new java.util.Random();
+ drops.forEach(d -> {
+ net.minecraft.entity.item.ItemEntity ent = entity.func_70099_a(d, 1.0F);
+ ent.func_213317_d(ent.func_213322_ci().func_72441_c((double)((rand.nextFloat() - rand.nextFloat()) * 0.1F), (double)(rand.nextFloat() * 0.05F), (double)((rand.nextFloat() - rand.nextFloat()) * 0.1F)));
+ });
+ stack.func_222118_a(1, entity, e -> e.func_213334_d(hand));
+ }
+ return net.minecraft.util.ActionResultType.SUCCESS;
+ }
+ return net.minecraft.util.ActionResultType.PASS;
+ }
}