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

51 lines
2.6 KiB
Diff

--- a/net/minecraft/item/BowItem.java
+++ b/net/minecraft/item/BowItem.java
@@ -24,18 +24,23 @@
PlayerEntity playerentity = (PlayerEntity)p_77615_3_;
boolean flag = playerentity.field_71075_bZ.field_75098_d || EnchantmentHelper.func_77506_a(Enchantments.field_185312_x, p_77615_1_) > 0;
ItemStack itemstack = playerentity.func_213356_f(p_77615_1_);
+
+ int i = this.func_77626_a(p_77615_1_) - p_77615_4_;
+ i = net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_77615_1_, p_77615_2_, playerentity, i, !itemstack.func_190926_b() || flag);
+ if (i < 0) return;
+
if (!itemstack.func_190926_b() || flag) {
if (itemstack.func_190926_b()) {
itemstack = new ItemStack(Items.field_151032_g);
}
- int i = this.func_77626_a(p_77615_1_) - p_77615_4_;
float f = func_185059_b(i);
if (!((double)f < 0.1D)) {
- boolean flag1 = flag && itemstack.func_77973_b() == Items.field_151032_g;
+ boolean flag1 = playerentity.field_71075_bZ.field_75098_d || (itemstack.func_77973_b() instanceof ArrowItem && ((ArrowItem)itemstack.func_77973_b()).isInfinite(itemstack, p_77615_1_, playerentity));
if (!p_77615_2_.field_72995_K) {
ArrowItem arrowitem = (ArrowItem)(itemstack.func_77973_b() instanceof ArrowItem ? itemstack.func_77973_b() : Items.field_151032_g);
AbstractArrowEntity abstractarrowentity = arrowitem.func_200887_a(p_77615_2_, itemstack, playerentity);
+ abstractarrowentity = customArrow(abstractarrowentity);
abstractarrowentity.func_234612_a_(playerentity, playerentity.field_70125_A, playerentity.field_70177_z, 0.0F, f * 3.0F, 1.0F);
if (f == 1.0F) {
abstractarrowentity.func_70243_d(true);
@@ -100,6 +105,10 @@
public ActionResult<ItemStack> func_77659_a(World p_77659_1_, PlayerEntity p_77659_2_, Hand p_77659_3_) {
ItemStack itemstack = p_77659_2_.func_184586_b(p_77659_3_);
boolean flag = !p_77659_2_.func_213356_f(itemstack).func_190926_b();
+
+ ActionResult<ItemStack> ret = net.minecraftforge.event.ForgeEventFactory.onArrowNock(itemstack, p_77659_1_, p_77659_2_, p_77659_3_, flag);
+ if (ret != null) return ret;
+
if (!p_77659_2_.field_71075_bZ.field_75098_d && !flag) {
return ActionResult.func_226251_d_(itemstack);
} else {
@@ -112,6 +121,10 @@
return field_220007_a;
}
+ public AbstractArrowEntity customArrow(AbstractArrowEntity arrow) {
+ return arrow;
+ }
+
public int func_230305_d_() {
return 15;
}