diff --git a/nms-patches/ItemEnderPearl.patch b/nms-patches/ItemEnderPearl.patch new file mode 100644 index 0000000000..72c19dab8d --- /dev/null +++ b/nms-patches/ItemEnderPearl.patch @@ -0,0 +1,35 @@ +--- a/net/minecraft/server/ItemEnderPearl.java ++++ b/net/minecraft/server/ItemEnderPearl.java +@@ -10,18 +10,26 @@ + public InteractionResultWrapper a(World world, EntityHuman entityhuman, EnumHand enumhand) { + ItemStack itemstack = entityhuman.b(enumhand); + ++ // CraftBukkit start - change order ++ if (!world.isClientSide) { ++ EntityEnderPearl entityenderpearl = new EntityEnderPearl(world, entityhuman); ++ ++ entityenderpearl.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F); ++ if (!world.addEntity(entityenderpearl)) { ++ if (entityhuman instanceof EntityPlayer) { ++ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory(); ++ } ++ return new InteractionResultWrapper(EnumInteractionResult.FAIL, itemstack); ++ } ++ } ++ + if (!entityhuman.abilities.canInstantlyBuild) { + itemstack.subtract(1); + } + + world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.bj, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemEnderPearl.j.nextFloat() * 0.4F + 0.8F)); + entityhuman.di().a(this, 20); +- if (!world.isClientSide) { +- EntityEnderPearl entityenderpearl = new EntityEnderPearl(world, entityhuman); +- +- entityenderpearl.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F); +- world.addEntity(entityenderpearl); +- } ++ // CraftBukkit end + + entityhuman.b(StatisticList.b((Item) this)); + return new InteractionResultWrapper(EnumInteractionResult.SUCCESS, itemstack);