minetest.register_abm({
   label = 'Floating stones',
   nodenames = {'epic:float_stone'},
   neighbors = {'air'},
   interval = 17,
   chance = 3,
   action = function(pos, node)
      local new_pos = ({x=pos.x, y=pos.y+1, z=pos.z})
      local abovenode = minetest.get_node(new_pos).name
      if abovenode == 'air' then
         local timer = minetest.get_node_timer(pos)
         timer:start(1)
      end
   end,
})

minetest.register_abm({
   label = 'Fire Embers',
   nodenames = {'default:lava_source', 'default:lava_flowing', 'fire:permanent_flame', 'fire:basic_flame'},
   interval = 13,
   chance = 7,
   action = function(pos, node)
      if minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}).name == 'air' then
         particles_embers(pos)
      end
   end
})

minetest.register_abm({
   label = 'sulfur formation',
   nodenames = {'default:stone'},
   neighbors = {'default:lava_source', 'default:lava_flowing'},
   interval = 20,
   chance = 60,
   action = function(pos, node)
      if pos.y < -100 then
         if minetest.find_node_near(pos, 3, {'epic:mineral_sulfur'}) ~= nil then
            return
         end
         minetest.set_node(pos, {name='epic:mineral_sulfur'})
      end
   end,
})

minetest.register_abm({
   label = 'lumberjack step removal',
   nodenames = {'lumberjack:step'},
   interval = 151,
   chance = 21,
   action = function(pos)
      minetest.remove_node(pos)
   end
})

minetest.register_abm({
   label = 'Glow sapphire growth',
   nodenames = {'caverealms:glow_crystal'},
   neighbors = {'caverealms:glow_ore'},
   interval = 30,
   chance = 17,
   action = function(pos, node)
      local pos1 = {x=pos.x+1, y=pos.y-1, z=pos.z+1}
      local pos0 = {x=pos.x-1, y=pos.y-1, z=pos.z-1}
      local can_replace = minetest.find_nodes_in_area(pos0, pos1, 'default:lava_source')
      local replace_num = #can_replace
      if replace_num ~= 8 then
         return
      end
      local height = 0
      while node.name == "caverealms:glow_crystal" and height < 4 do
         height = height + 1
         pos.y = pos.y + 1
         node = minetest.get_node(pos)
      end
      if height == 4 or node.name ~= 'air' then
         return
      end
      minetest.set_node(pos, {name = 'caverealms:glow_crystal'})
      return true
   end
})

minetest.register_abm({
   label = 'Glow amethyst growth',
   nodenames = {'caverealms:glow_amethyst'},
   neighbors = {'caverealms:glow_amethyst_ore'},
   interval = 30,
   chance = 17,
   action = function(pos, node)
      local pos1 = {x=pos.x+1, y=pos.y-1, z=pos.z+1}
      local pos0 = {x=pos.x-1, y=pos.y-1, z=pos.z-1}
      local can_replace = minetest.find_nodes_in_area(pos0, pos1, 'default:lava_source')
      local replace_num = #can_replace
      if replace_num ~= 8 then
         return
      end
      local height = 0
      while node.name == "caverealms:glow_amethyst" and height < 4 do
         height = height + 1
         pos.y = pos.y + 1
         node = minetest.get_node(pos)
      end
      if height == 4 or node.name ~= 'air' then
         return
      end
      minetest.set_node(pos, {name = 'caverealms:glow_amethyst'})
      return true
   end
})

minetest.register_abm({
   label = 'Glow sapphire growth',
   nodenames = {'caverealms:glow_emerald'},
   neighbors = {'caverealms:glow_emerald_ore'},
   interval = 30,
   chance = 17,
   action = function(pos, node)
      local pos1 = {x=pos.x+1, y=pos.y-1, z=pos.z+1}
      local pos0 = {x=pos.x-1, y=pos.y-1, z=pos.z-1}
      local can_replace = minetest.find_nodes_in_area(pos0, pos1, 'default:lava_source')
      local replace_num = #can_replace
      if replace_num ~= 8 then
         return
      end
      local height = 0
      while node.name == "caverealms:glow_emerald" and height < 4 do
         height = height + 1
         pos.y = pos.y + 1
         node = minetest.get_node(pos)
      end
      if height == 4 or node.name ~= 'air' then
         return
      end
      minetest.set_node(pos, {name = 'caverealms:glow_emerald'})
      return true
   end
})

minetest.register_abm({
   label = 'Glow ruby growth',
   nodenames = {'caverealms:glow_ruby'},
   neighbors = {'caverealms:glow_ruby_ore'},
   interval = 30,
   chance = 17,
   action = function(pos, node)
      local pos1 = {x=pos.x+1, y=pos.y-1, z=pos.z+1}
      local pos0 = {x=pos.x-1, y=pos.y-1, z=pos.z-1}
      local can_replace = minetest.find_nodes_in_area(pos0, pos1, 'default:lava_source')
      local replace_num = #can_replace
      if replace_num ~= 8 then
         return
      end
      local height = 0
      while node.name == 'caverealms:glow_ruby' and height < 4 do
         height = height + 1
         pos.y = pos.y + 1
         node = minetest.get_node(pos)
      end
      if height == 4 or node.name ~= 'air' then
         return
      end
      minetest.set_node(pos, {name = 'caverealms:glow_ruby'})
      return true
   end
})
