PyuTestCore.make_item("pyutest_core:magic_shards", "Magic Shards", {}, "magic-shards.png")
minetest.override_item("pyutest_core:crying_obsidian_block", {
  drop = {
    max_items = 1,
    items = {
      {
        rarity = 3.2,
        items = {"pyutest_core:magic_shards 3"}
      },

      {
        items = {"pyutest_core:crying_obsidian_block"}
      }
    }
  }
})

PyuTestCore.make_spellbook = function (nsname, desc, color, craftitem, action)
  if action == nil then
    action = function(_, _, _)end
  end

  PyuTestCore.make_item(nsname, desc, {}, "spellbook.png", {
    stack_max = 1,
    color = color,
    on_use = function (itemstack, user, pointed_thing)
      local pos = user:get_pos()
      minetest.sound_play({name = "spellbook_action", gain = 0.75}, {pos = pos})
      action(itemstack, user, pointed_thing)
    end
  })

  minetest.register_craft({
    output = nsname,
    recipe = {
      {"", "pyutest_core:magic_shards", ""},
      {"pyutest_core:magic_shards", craftitem, "pyutest_core:magic_shards"},
      {"", "pyutest_core:magic_shards", ""}
    }
  })
end

PyuTestCore.make_spellbook("pyutest_core:explosions_spellbook", "Spellbook of Explosions", "gray", "pyutest_core:bomb", function (itemstack, user)
  PyuTestCore.create_explosion(user:get_pos(), 3, false, 7, user)
end)

PyuTestCore.make_spellbook("pyutest_core:fire_spellbook", "Spellbook of Fire", "crimson", "pyutest_core:hellstone_block", function (itemstack, user)
  local range = 2

  local function replace(pos)
    local node = minetest.get_node_or_nil(pos)
    if node == nil then return end
    if node.name ~= "air" then return end
    local pos2 = vector.new(pos.x, pos.y - 1, pos.z)
    node = minetest.get_node_or_nil(pos)
    if node == nil then return end
    if node.name ~= "air" then return end

    minetest.set_node(pos, {name = "pyutest_core:fire"})
  end

  for dx = -range, range do
    for dz = -range, range do
      local pos = user:get_pos()
      replace({x = pos.x + dx, y = pos.y, z = pos.z + dz})
    end
  end
end)


PyuTestCore.make_item("pyutest_core:enchanted_shard", "Enchanted Shard", {}, "shard.png", {
  color = "indigo",
})

minetest.register_craft({
  output = "pyutest_core:enchanted_shard 2",
  recipe = {
    {"pyutest_core:magic_shards", "pyutest_core:diamond_shard", "pyutest_core:magic_shards"},
    {"pyutest_core:emerald_shard", "pyutest_core:magic_shards", "pyutest_core:emerald_shard"},
    {"pyutest_core:magic_shards", "pyutest_core:diamond_shard", "pyutest_core:magic_shards"}
  }
})

PyuTestCore.make_tool("pyutest_core:enchanted_pickaxe", "Enchanted Pickaxe", {}, "enchanted-pickaxe.png", {
  stack_max = 1,
  tool_capabilities = {
    groupcaps = {
      block = {
        times = {
          [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.035,
          [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.35,
          [PyuTestCore.BLOCK_BREAKABLE_CHOPPY] = 0.45,
          [PyuTestCore.BLOCK_BREAKABLE_MIDDLE] = 0.45,
          [PyuTestCore.BLOCK_BREAKABLE_LONG] = 0.8,
          [PyuTestCore.BLOCK_BREAKABLE_VERYLONG] = 3,
          [PyuTestCore.BLOCK_BREAKABLE_FOREVER] = 7
        },
        uses = 3600,
      }
    },
    punch_attack_uses = 1200,
    damage_groups = {fleshy = 4}
  }
})

minetest.register_craft({
  output = "pyutest_core:enchanted_pickaxe",
  recipe = {
    {"pyutest_core:enchanted_shard", "pyutest_core:enchanted_shard", "pyutest_core:enchanted_shard"},
    {"", "pyutest_core:stick", ""},
    {"", "pyutest_core:stick", ""}
  }
})

PyuTestCore.make_sword("pyutest_core:enchanted_sword", "Enchanted Sword", "enchanted-sword.png", 15, 3600, 0.6)


minetest.register_craft({
  output = "pyutest_core:enchanted_sword",
  recipe = {
    {"pyutest_core:enchanted_shard"},
    {"pyutest_core:enchanted_shard"},
    {"pyutest_core:stick"}
  }
})
