Program: 12750
Project: 12750
Buggy source:
@Override public boolean onBlockActivated(World world,int x,int y,int z,EntityPlayer player,int par4,float f1,float f2,float f3){
  if (world.isRemote) {
    return true;
  }
 else {
    if ((world.getBlockMetadata(x,y,z) & -8) == 0) {
      TileEntityCoffin te=(TileEntityCoffin)world.getTileEntity(x,y,z);
      x=te.otherX;
      y=te.otherY;
      z=te.otherZ;
    }
    if (world.provider.canRespawnHere() && world.getBiomeGenForCoords(x,z) != BiomeGenBase.hell) {
      if ((world.getBlockMetadata(x,y,z) & 4) != 0) {
        player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        return true;
      }
      EntityPlayer.EnumStatus enumstatus=VampirePlayer.get(player).sleepInCoffinAt(x,y,z);
      if (enumstatus == EntityPlayer.EnumStatus.OK) {
        setBedOccupied(world,x,y,z,player,true);
        return true;
      }
 else {
        if (enumstatus == EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW) {
          player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        }
 else         if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) {
          player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        }
        return true;
      }
    }
 else {
      double d2=x + 0.5D;
      double d0=y + 0.5D;
      double d1=z + 0.5D;
      world.setBlockToAir(x,y,z);
      if (world.getBlock(x,y,z) == this) {
        world.setBlockToAir(x,y,z);
        d2=(d2 + x + 0.5D) / 2.0D;
        d0=(d0 + y + 0.5D) / 2.0D;
        d1=(d1 + z + 0.5D) / 2.0D;
      }
      world.newExplosion((Entity)null,x + 0.5F,y + 0.5F,z + 0.5F,5.0F,true,true);
      return true;
    }
  }
}

Fixed version (ground truth):
@Override public boolean onBlockActivated(World world,int x,int y,int z,EntityPlayer player,int par4,float f1,float f2,float f3){
  if (world.isRemote) {
    return true;
  }
 else {
    if ((world.getBlockMetadata(x,y,z) & -8) == 0) {
      TileEntityCoffin te=(TileEntityCoffin)world.getTileEntity(x,y,z);
      x=te.otherX;
      y=te.otherY;
      z=te.otherZ;
    }
    if (world.provider.canRespawnHere() && world.getBiomeGenForCoords(x,z) != BiomeGenBase.hell) {
      if ((world.getBlockMetadata(x,y,z) & 4) != 0) {
        player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        return true;
      }
      EntityPlayer.EnumStatus enumstatus=VampirePlayer.get(player).sleepInCoffinAt(x,y,z);
      if (enumstatus == EntityPlayer.EnumStatus.OK) {
        setBedOccupied(world,x,y,z,player,true);
        ((TileEntityCoffin)world.getTileEntity(x,y,z)).markDirty();
        return true;
      }
 else {
        if (enumstatus == EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW) {
          player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        }
 else         if (enumstatus == EntityPlayer.EnumStatus.NOT_SAFE) {
          player.addChatComponentMessage(new ChatComponentTranslation("String_Node_Str",new Object[0]));
        }
        return true;
      }
    }
 else {
      double d2=x + 0.5D;
      double d0=y + 0.5D;
      double d1=z + 0.5D;
      world.setBlockToAir(x,y,z);
      if (world.getBlock(x,y,z) == this) {
        world.setBlockToAir(x,y,z);
        d2=(d2 + x + 0.5D) / 2.0D;
        d0=(d0 + y + 0.5D) / 2.0D;
        d1=(d1 + z + 0.5D) / 2.0D;
      }
      world.newExplosion((Entity)null,x + 0.5F,y + 0.5F,z + 0.5F,5.0F,true,true);
      return true;
    }
  }
}