diff options
Diffstat (limited to 'src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index f0d3f754..86820c23 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -54,6 +54,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.inventory.PrepareItemCraftEvent; import org.bukkit.event.player.*; import org.bukkit.event.server.ServerListPingEvent; @@ -337,7 +338,7 @@ public class CraftEventFactory { return event; } - public static void handleBlockSpreadEvent(Block block, Block source, net.minecraft.server.Block type, int data) { + public static boolean handleBlockSpreadEvent(Block block, Block source, net.minecraft.server.Block type, int data) { BlockState state = block.getState(); state.setTypeId(net.minecraft.server.Block.getId(type)); state.setRawData((byte) data); @@ -348,6 +349,7 @@ public class CraftEventFactory { if (!event.isCancelled()) { state.update(true); } + return !event.isCancelled(); } public static EntityDeathEvent callEntityDeathEvent(EntityLiving victim) { @@ -414,7 +416,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager == null) { event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.BLOCK_EXPLOSION, modifiers, modifierFunctions); - } else if (entity instanceof EntityEnderDragon && ((EntityEnderDragon) entity).target == damager) { + } else if (entity instanceof EntityEnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); } else { if (damager instanceof org.bukkit.entity.TNTPrimed) { @@ -483,6 +485,8 @@ public class CraftEventFactory { cause = DamageCause.LIGHTNING; } else if (source == DamageSource.FALL) { cause = DamageCause.FALL; + } else if (source == DamageSource.DRAGON_BREATH) { + cause = DamageCause.DRAGON_BREATH; } else { throw new AssertionError(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.translationIndex)); } @@ -604,7 +608,7 @@ public class CraftEventFactory { return event; } - public static void handleBlockGrowEvent(World world, int x, int y, int z, net.minecraft.server.Block type, int data) { + public static boolean handleBlockGrowEvent(World world, int x, int y, int z, net.minecraft.server.Block type, int data) { Block block = world.getWorld().getBlockAt(x, y, z); CraftBlockState state = (CraftBlockState) block.getState(); state.setTypeId(net.minecraft.server.Block.getId(type)); @@ -616,6 +620,8 @@ public class CraftEventFactory { if (!event.isCancelled()) { state.update(true); } + + return !event.isCancelled(); } public static FoodLevelChangeEvent callFoodLevelChangeEvent(EntityHuman entity, int level) { @@ -930,6 +936,7 @@ public class CraftEventFactory { case SPRINT_ONE_CM: case CROUCH_ONE_CM: case TIME_SINCE_DEATH: + case SNEAK_TIME: // Do not process event for these - too spammy return null; default: @@ -953,4 +960,11 @@ public class CraftEventFactory { firework.world.getServer().getPluginManager().callEvent(event); return event; } + + public static PrepareAnvilEvent callPrepareAnvilEvent(InventoryView view, ItemStack item) { + PrepareAnvilEvent event = new PrepareAnvilEvent(view, CraftItemStack.asCraftMirror(item).clone()); + event.getView().getPlayer().getServer().getPluginManager().callEvent(event); + event.getInventory().setItem(2, event.getResult()); + return event; + } } |