summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/BlockCactus.java
diff options
context:
space:
mode:
authort00thpick1 <t00thpick1dirko@gmail.com>2014-06-19 14:38:45 -0400
committerWesley Wolfe <wesley.d.wolfe+git@gmail.com>2014-06-22 15:23:16 -0500
commit6f21d3ca8fb02001dd10f49019cfb05ed914a873 (patch)
tree304ff9a4e85d2ba38a61e9b4ead339266ddbbbd6 /src/main/java/net/minecraft/server/BlockCactus.java
parentbed3f7f8f54305c94356691d6b8ec9b65a1a5d4a (diff)
downloadcraftbukkit-6f21d3ca8fb02001dd10f49019cfb05ed914a873.tar
craftbukkit-6f21d3ca8fb02001dd10f49019cfb05ed914a873.tar.gz
craftbukkit-6f21d3ca8fb02001dd10f49019cfb05ed914a873.tar.lz
craftbukkit-6f21d3ca8fb02001dd10f49019cfb05ed914a873.tar.xz
craftbukkit-6f21d3ca8fb02001dd10f49019cfb05ed914a873.zip
[Bleeding] Implement new damage api. Fixes BUKKIT-5326, BUKKIT-3878.
This commit centralizes event handling to where damage is actually applied to the entity to avoid bugs that have resulted from nodamageticks, modifications to damage after the event has been called, and similar mishaps. This also implements new API for getting and setting of modifications made to the damage amount actually applied to the entity. This is done by storing the change in the damage amount as each modifier is applied by vanilla code. The method that actually damages the armor worn by an entity has been relocated beneath the event called as to not apply durability loss when the event has been cancelled.
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockCactus.java')
-rw-r--r--src/main/java/net/minecraft/server/BlockCactus.java22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 57eb59d6..e920c6f4 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -2,7 +2,7 @@ package net.minecraft.server;
import java.util.Random;
-import org.bukkit.event.entity.EntityDamageByBlockEvent; // CraftBukkit
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
public class BlockCactus extends Block {
@@ -24,7 +24,7 @@ public class BlockCactus extends Block {
int i1 = world.getData(i, j, k);
if (i1 == 15) {
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
+ CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
world.setData(i, j, k, 0, 4);
this.doPhysics(world, i, j + 1, k, this);
} else {
@@ -79,22 +79,8 @@ public class BlockCactus extends Block {
}
public void a(World world, int i, int j, int k, Entity entity) {
- // CraftBukkit start - EntityDamageByBlock event
- if (entity instanceof EntityLiving) {
- org.bukkit.block.Block damager = world.getWorld().getBlockAt(i, j, k);
- org.bukkit.entity.Entity damagee = (entity == null) ? null : entity.getBukkitEntity();
-
- EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(damager, damagee, org.bukkit.event.entity.EntityDamageEvent.DamageCause.CONTACT, 1D);
- world.getServer().getPluginManager().callEvent(event);
-
- if (!event.isCancelled()) {
- damagee.setLastDamageCause(event);
- entity.damageEntity(DamageSource.CACTUS, (float) event.getDamage());
- }
- return;
- }
- // CraftBukkit end
-
+ CraftEventFactory.blockDamage = world.getWorld().getBlockAt(i, j, k); // CraftBukkit
entity.damageEntity(DamageSource.CACTUS, 1.0F);
+ CraftEventFactory.blockDamage = null; // CraftBukkit
}
}