From 868eaf571cb168a8b2f2e128bb5eba6ed4505206 Mon Sep 17 00:00:00 2001 From: zml2008 Date: Sat, 10 Mar 2012 21:56:55 -0800 Subject: [Bleeding] Call a LAVA BlockIgniteEvent in another place in BlockStationary. Fixes BUKKIT-970 Also adds CraftEventFactory.callEvent(Event), which returns the event called. Currently only used for n.m.s.BlockStationary's lava BlockIgniteEvent calls. --- src/main/java/net/minecraft/server/BlockStationary.java | 15 ++++++++++----- .../org/bukkit/craftbukkit/event/CraftEventFactory.java | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main/java/net/minecraft/server/BlockStationary.java b/src/main/java/net/minecraft/server/BlockStationary.java index d4f276c9..bbf87e01 100644 --- a/src/main/java/net/minecraft/server/BlockStationary.java +++ b/src/main/java/net/minecraft/server/BlockStationary.java @@ -56,12 +56,8 @@ public class BlockStationary extends BlockFluids { if (this.j(world, i - 1, j, k) || this.j(world, i + 1, j, k) || this.j(world, i, j, k - 1) || this.j(world, i, j, k + 1) || this.j(world, i, j - 1, k) || this.j(world, i, j + 1, k)) { // CraftBukkit start - prevent lava putting something on fire. org.bukkit.block.Block block = bworld.getBlockAt(i, j, k); - if (block.getTypeId() != Block.FIRE.id) { - BlockIgniteEvent event = new BlockIgniteEvent(block, igniteCause, null); - world.getServer().getPluginManager().callEvent(event); - - if (event.isCancelled()) { + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEvent(new BlockIgniteEvent(block, igniteCause, null)).isCancelled()) { continue; } } @@ -83,6 +79,15 @@ public class BlockStationary extends BlockFluids { i = i1 + random.nextInt(3) - 1; k = j1 + random.nextInt(3) - 1; if (world.isEmpty(i, j + 1, k) && this.j(world, i, j, k)) { + // CraftBukkit start - prevent lava putting something on fire. + org.bukkit.block.Block block = bworld.getBlockAt(i, j + 1, k); + if (block.getTypeId() != Block.FIRE.id) { + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEvent(new BlockIgniteEvent(block, igniteCause, null)).isCancelled()) { + continue; + } + } + // CraftBukkit end + world.setTypeId(i, j + 1, k, Block.FIRE.id); } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index d6550e81..66dbef78 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -47,6 +47,7 @@ import org.bukkit.entity.PigZombie; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.ThrownPotion; +import org.bukkit.event.Event; import org.bukkit.event.block.*; import org.bukkit.event.entity.*; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; @@ -72,6 +73,11 @@ public class CraftEventFactory { return distanceFromSpawn > spawnSize; } + public static T callEvent(T event) { + Bukkit.getServer().getPluginManager().callEvent(event); + return event; + } + /** * Block place methods */ -- cgit v1.2.3