From cbebfa439fa1c7a261d19bc60796d62230ebf924 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 12 Mar 2016 14:52:07 -0500 Subject: [PATCH] SPIGOT-1849: Call EntityBlockFormEvent when an entity forms frosted ice using frost walker --- nms-patches/EnchantmentFrostWalker.patch | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 nms-patches/EnchantmentFrostWalker.patch diff --git a/nms-patches/EnchantmentFrostWalker.patch b/nms-patches/EnchantmentFrostWalker.patch new file mode 100644 index 0000000000..dafe38114c --- /dev/null +++ b/nms-patches/EnchantmentFrostWalker.patch @@ -0,0 +1,32 @@ +--- a/net/minecraft/server/EnchantmentFrostWalker.java ++++ b/net/minecraft/server/EnchantmentFrostWalker.java +@@ -1,5 +1,8 @@ + package net.minecraft.server; + ++import org.bukkit.craftbukkit.util.CraftMagicNumbers; ++import org.bukkit.event.block.EntityBlockFormEvent; ++ + import java.util.Iterator; + + public class EnchantmentFrostWalker extends Enchantment { +@@ -42,8 +45,18 @@ + IBlockData iblockdata1 = world.getType(blockposition_mutableblockposition1); + + if (iblockdata1.getMaterial() == Material.WATER && ((Integer) iblockdata1.get(BlockFluids.LEVEL)).intValue() == 0 && world.a(Blocks.de, blockposition_mutableblockposition1, false, EnumDirection.DOWN, (Entity) null, (ItemStack) null)) { +- world.setTypeUpdate(blockposition_mutableblockposition1, Blocks.de.getBlockData()); +- world.a(blockposition_mutableblockposition1.h(), Blocks.de, MathHelper.nextInt(entityliving.getRandom(), 60, 120)); ++ // CraftBukkit Start - Call EntityBlockFormEvent for Frost Walker ++ org.bukkit.block.BlockState blockState = world.getWorld().getBlockAt(blockposition_mutableblockposition1.getX(), blockposition_mutableblockposition1.getY(), blockposition_mutableblockposition1.getZ()).getState(); ++ blockState.setType(CraftMagicNumbers.getMaterial(Blocks.de)); // PAIL - Rename de->FROSTED_ICE ++ ++ EntityBlockFormEvent event = new EntityBlockFormEvent(entityliving.bukkitEntity, blockState.getBlock(), blockState); ++ world.getServer().getPluginManager().callEvent(event); ++ ++ if (!event.isCancelled()) { ++ blockState.update(true); ++ world.a(blockposition_mutableblockposition1.h(), Blocks.de, MathHelper.nextInt(entityliving.getRandom(), 60, 120)); ++ } ++ // CraftBukkit End + } + } + }