--- a/net/minecraft/world/level/gameevent/GameEventDispatcher.java +++ b/net/minecraft/world/level/gameevent/GameEventDispatcher.java @@ -11,6 +11,13 @@ import net.minecraft.world.level.chunk.Chunk; import net.minecraft.world.phys.Vec3D; +// CraftBukkit start +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.CraftGameEvent; +import org.bukkit.craftbukkit.util.CraftLocation; +import org.bukkit.event.world.GenericGameEvent; +// CraftBukkit end + public class GameEventDispatcher { private final WorldServer level; @@ -22,6 +29,14 @@ public void post(GameEvent gameevent, Vec3D vec3d, GameEvent.a gameevent_a) { int i = gameevent.getNotificationRadius(); BlockPosition blockposition = BlockPosition.containing(vec3d); + // CraftBukkit start + GenericGameEvent event = new GenericGameEvent(CraftGameEvent.minecraftToBukkit(gameevent), CraftLocation.toBukkit(blockposition, level.getWorld()), (gameevent_a.sourceEntity() == null) ? null : gameevent_a.sourceEntity().getBukkitEntity(), i, !Bukkit.isPrimaryThread()); + level.getCraftServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + i = event.getRadius(); + // CraftBukkit end int j = SectionPosition.blockToSectionCoord(blockposition.getX() - i); int k = SectionPosition.blockToSectionCoord(blockposition.getY() - i); int l = SectionPosition.blockToSectionCoord(blockposition.getZ() - i);