--- ../src-base/minecraft/net/minecraft/entity/monster/EntitySkeleton.java
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntitySkeleton.java
@@ -36,6 +36,8 @@
 import net.minecraft.world.World;
 import net.minecraft.world.WorldProviderHell;
 
+import org.bukkit.event.entity.EntityCombustEvent; // CraftBukkit
+
 public class EntitySkeleton extends EntityMob implements IRangedAttackMob
 {
     private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 20, 60, 15.0F);
@@ -148,7 +150,16 @@
 
                 if (flag)
                 {
-                    this.setFire(8);
+                    // CraftBukkit start
+                    EntityCombustEvent event = new EntityCombustEvent(this.getBukkitEntity(), 8);
+                    this.worldObj.getServer().getPluginManager().callEvent(event);
+
+                    if (!event.isCancelled())
+                    {
+                        this.setFire(event.getDuration());
+                    }
+
+                    // CraftBukkit end
                 }
             }
         }
@@ -312,8 +323,23 @@
             entityarrow.setFire(100);
         }
 
+        // CraftBukkit start
+        org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getHeldItem(), entityarrow, 0.8F);
+
+        if (event.isCancelled())
+        {
+            event.getProjectile().remove();
+            return;
+        }
+
+        if (event.getProjectile() == entityarrow.getBukkitEntity())
+        {
+            worldObj.spawnEntityInWorld(entityarrow);
+        }
+
+        // CraftBukkit end
         this.playSound("random.bow", 1.0F, 1.0F / (this.getRNG().nextFloat() * 0.4F + 0.8F));
-        this.worldObj.spawnEntityInWorld(entityarrow);
+        // this.worldObj.spawnEntityInWorld(entityarrow); // CraftBukkit - moved up
     }
 
     public int getSkeletonType()
