summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/BlockCactus.java
diff options
context:
space:
mode:
authorAndrew Ardill <andrew.ardill@gmail.com>2011-01-12 16:48:19 +1100
committerErik Broes <erikbroes@grum.nl>2011-01-16 14:14:30 +0100
commitceaf94d5bb761b54249d22de08226167319099be (patch)
tree0feb93042e96e0a5b3f74717e3b71ddb75a91069 /src/main/java/net/minecraft/server/BlockCactus.java
parent807de6ee22f665196adc48498a27223317973958 (diff)
downloadcraftbukkit-ceaf94d5bb761b54249d22de08226167319099be.tar
craftbukkit-ceaf94d5bb761b54249d22de08226167319099be.tar.gz
craftbukkit-ceaf94d5bb761b54249d22de08226167319099be.tar.lz
craftbukkit-ceaf94d5bb761b54249d22de08226167319099be.tar.xz
craftbukkit-ceaf94d5bb761b54249d22de08226167319099be.zip
Implementation of the EntityDamage*Events.
Many files were added to enable the correct hooking of these events, and a new event EntityDamageByProjectileEvent. EntityDamageByProjectileEvent adds the ability to get the projectile entity (such as an egg) and also set if the projectile 'bounces'. Only two projectiles currently respond to bouncing, Arrow and Fish - were if the fish bounces it means the fish is not hooked. Bouncing is independent of any damage caused via the event. In addition, the changes to EntityDamageEvent that enable setting post-event damage were implemented in all hooks. Finally, a bug in CraftArrow was fixed, where the constructor was not declared public.
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockCactus.java')
-rw-r--r--src/main/java/net/minecraft/server/BlockCactus.java21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 57d83c0e..2f0aa35f 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -6,6 +6,7 @@ import org.bukkit.craftbukkit.block.CraftBlock;
import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageEvent;
// CraftBukkit end
@@ -96,21 +97,19 @@ public class BlockCactus extends Block {
public void a(World world, int i, int j, int k, Entity entity) {
// CraftBukkit start - ENTITY_DAMAGEBY_BLOCK event
- CraftEntity toPassIn = null;
- if (entity instanceof EntityPlayerMP) {
- toPassIn = new CraftPlayer(((WorldServer) world).getServer(), (EntityPlayerMP) entity);
- } else if (entity instanceof EntityLiving) {
- toPassIn = new CraftLivingEntity(((WorldServer) world).getServer(), (EntityLiving) entity);
- }
- if(toPassIn != null) {
+ if(entity instanceof EntityLiving) {
+ CraftServer server = ((WorldServer) world).getServer();
+ CraftEntity toPassIn = new CraftLivingEntity(server, (EntityLiving) entity);
EntityDamageByBlockEvent edbbe = new EntityDamageByBlockEvent(((WorldServer) world).getWorld().getBlockAt(i, j, k), toPassIn, EntityDamageEvent.DamageCause.CONTACT, 1);
- ((WorldServer) world).getServer().getPluginManager().callEvent(edbbe);
+ server.getPluginManager().callEvent(edbbe);
- if (edbbe.isCancelled())
- return;
+ if (!edbbe.isCancelled()){
+ entity.a(((Entity) (null)), edbbe.getDamage());
+ }
+ return;
}
- // CraftBukkit end TODO: Other entities (when their respective classes are added) hitting a Cactus
+ // CraftBukkit end
entity.a(((Entity) (null)), 1);
}
}