local width = (exchangeclone.mcl and 9) or 8 local upgrader_formspec = "size["..tostring(width)..", 7]".. "label[0.5,0.5;Upgrader]".. "label["..tostring(width/3-0.5)..",0.5;Upgrade]".. "list[context;fuel;"..tostring(width/3-0.5)..",1;1,1]".. "label["..tostring(width/2-0.5)..",0.5;Tool/Armor]".. "list[context;src;"..tostring(width/2-0.5)..",1;1,1]".. "label["..tostring(2*width/3-0.5)..",0.5;Output]".. "list[context;dst;"..tostring(2*width/3-0.5)..",1;1,1]".. exchangeclone.inventory_formspec(0,2.75).. "listring[current_player;main]".. "listring[context;src]".. "listring[current_player;main]".. "listring[context;fuel]".. "listring[current_player;main]".. "listring[context;dst]".. "listring[current_player;main]" if exchangeclone.mcl then upgrader_formspec = upgrader_formspec.. mcl_formspec.get_itemslot_bg(width/3-0.5,1,1,1).. mcl_formspec.get_itemslot_bg(width/2-0.5,1,1,1).. mcl_formspec.get_itemslot_bg(2*width/3-0.5,1,1,1) end function exchangeclone.enchant(itemstack, enchantment, level) local enchantments = mcl_enchanting.get_enchantments(itemstack) or {} if enchantments[enchantment] and enchantments[enchantment] == level then return false end enchantments[enchantment] = level mcl_enchanting.set_enchantments(itemstack, enchantments) return itemstack end function exchangeclone.register_upgrade(itemstring, name, modifier, recipe, enchantment, level, upgradable_items) minetest.register_craftitem(itemstring, { description = name, wield_image = "exchangeclone_upgrade.png"..modifier, inventory_image = "exchangeclone_upgrade.png"..modifier, groups = {exchangeclone_upgrade = 1}, enchantment = enchantment, level = level, upgradable_items = upgradable_items }) minetest.register_craft({ output = itemstring, recipe = recipe, }) end minetest.register_craft({ type = "fuel", recipe = "group:exchangeclone_upgrade", time = 10000 }) local function upgrader_action(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local upgrade = inv:get_stack("fuel", 1) local tool = inv:get_stack("src", 1) local dst = inv:get_stack("dst", 1) if (not dst:is_empty()) or upgrade:is_empty() or tool:is_empty() then return end local upgrade_def = upgrade:get_definition() if not upgrade_def.upgradable_items[tool:get_name()] then local found = false for item, _ in pairs(upgrade_def.upgradable_items) do if item:sub(1,6) == "group:" and (minetest.get_item_group(tool:get_name(), item:sub(7,-1)) > 0) then found = true break end end if not found then return end end local new_tool = exchangeclone.enchant(tool, upgrade_def.enchantment, upgrade_def.level) if not new_tool then return end -- If the tool already has that enchantment inv:set_stack("dst", 1, new_tool) tool:set_count(tool:get_count() - 1) if tool:get_count() == 0 then tool = ItemStack("") end inv:set_stack("src", 1, tool) upgrade:set_count(upgrade:get_count() - 1) if upgrade:get_count() == 0 then upgrade = ItemStack("") end inv:set_stack("fuel", 1, upgrade) end local function allow_metadata_inventory_put(pos, listname, index, stack, player) if player and player.get_player_name and minetest.is_protected(pos, player:get_player_name()) then return 0 end if listname == "fuel" then if minetest.get_item_group(stack:get_name(), "exchangeclone_upgrade") > 0 then return stack:get_count() else return 0 end elseif listname == "src" then if minetest.get_item_group(stack:get_name(), "exchangeclone_upgradable") > 0 then return stack:get_count() else return 0 end elseif listname == "dst" then return 0 end end local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local stack = inv:get_stack(from_list, from_index) return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) end local function allow_metadata_inventory_take(pos, listname, index, stack, player) if minetest.is_protected(pos, player:get_player_name()) then return 0 end return stack:get_count() end local after_dig_node = function(pos, oldnode, oldmetadata, player) if exchangeclone.mcl then local meta = minetest.get_meta(pos) local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for _, listname in ipairs({"fuel", "dst", "src"}) do local stack = inv:get_stack(listname, 1) if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} minetest.add_item(p, stack) end end meta:from_table(meta2) end end local function on_blast(pos) local drops = {} exchangeclone.get_inventory_drops(pos, "src", drops) exchangeclone.get_inventory_drops(pos, "fuel", drops) exchangeclone.get_inventory_drops(pos, "dst", drops) minetest.remove_node(pos) return drops end local function can_dig(pos, player) if exchangeclone.mcl then return true end local meta = minetest.get_meta(pos); local inv = meta:get_inventory() return inv:is_empty("src") and inv:is_empty("fuel") and inv:is_empty("dst") end local function get_level(level) if exchangeclone.mcl then return nil else return level end end minetest.register_node("exchangeclone:upgrader", { description = "Upgrader", tiles = { "exchangeclone_upgrader_top.png", "exchangeclone_upgrader_bottom.png", "exchangeclone_upgrader_side.png", }, on_construct = function(pos) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() inv:set_size("fuel", 1) inv:set_size("src", 1) inv:set_size("dst", 1) meta:set_string("infotext", "Upgrader") meta:set_string("formspec", upgrader_formspec) end, groups = {pickaxey=5, material_stone=1, cracky = 3, container = 4, level = get_level(4), tubedevice = 1, tubedevice_receiver = 1}, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, allow_metadata_inventory_put = allow_metadata_inventory_put, on_metadata_inventory_move = upgrader_action, on_metadata_inventory_take = upgrader_action, on_metadata_inventory_put = upgrader_action, on_blast = on_blast, after_dig_node = after_dig_node, can_dig = can_dig, _mcl_blast_resistance = 1500, _mcl_hardness = 75, }) if exchangeclone.pipeworks then local function get_list(direction) return (direction.y == 0 and "src") or "fuel" end minetest.override_item("exchangeclone:upgrader", {tube = { input_inventory = "dst", connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}, insert_object = function(pos, node, stack, direction) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local result = inv:add_item(get_list(direction), stack) if result then local func = minetest.registered_items[node.name].on_metadata_inventory_put if func then func(pos) end end return result end, can_insert = function(pos, node, stack, direction) if allow_metadata_inventory_put(pos, get_list(direction), 1, stack) > 0 then return true end end }}) end minetest.register_craft({ output = "exchangeclone:upgrader", recipe = { {"exchangeclone:dark_matter_block", "mcl_deepslate:tuff", "exchangeclone:dark_matter_block"}, -- Tuff has to be useful SOMEHOW... {"mcl_deepslate:tuff", "exchangeclone:philosophers_stone", "mcl_deepslate:tuff"}, {"exchangeclone:red_matter_block", "mcl_deepslate:tuff", "exchangeclone:red_matter_block"} }, replacements = {{"exchangeclone:philosophers_stone", "exchangeclone:philosophers_stone"}} }) minetest.register_craftitem("exchangeclone:blank_upgrade", { description = "Blank Upgrade", wield_image = "exchangeclone_upgrade.png", inventory_image = "exchangeclone_upgrade.png", }) minetest.register_craft({ output = "exchangeclone:blank_upgrade", recipe = { {"mcl_copper:copper_ingot", "mcl_deepslate:tuff", "mcl_copper:copper_ingot"}, -- Copper and tuff because they're useless. {"mcl_deepslate:tuff", "exchangeclone:philosophers_stone", "mcl_deepslate:tuff"}, {"mcl_copper:copper_ingot", "mcl_deepslate:tuff", "mcl_copper:copper_ingot"} }, replacements = {{"exchangeclone:philosophers_stone", "exchangeclone:philosophers_stone"}} }) exchangeclone.register_upgrade( "exchangeclone:fire_aspect_1_upgrade", "Fire Aspect I Upgrade", "^[multiply:#ff0000", { {"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"}, {"mcl_nether:magma", "exchangeclone:blank_upgrade", "mcl_nether:magma"}, {"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"}, }, "fire_aspect", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:fire_aspect_2_upgrade", "Fire Aspect II Upgrade", "^[multiply:#ffaa00", { {"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"}, {"mcl_nether:magma", "exchangeclone:fire_aspect_1_upgrade", "mcl_nether:magma"}, {"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"}, }, "fire_aspect", 2, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:knockback_1_upgrade", "Knockback I Upgrade", "^[multiply:#777777", { {"exchangeclone:dark_matter", "mcl_core:slimeblock", "exchangeclone:dark_matter"}, {"mcl_core:slimeblock", "exchangeclone:blank_upgrade", "mcl_core:slimeblock"}, {"exchangeclone:dark_matter", "mcl_core:slimeblock", "exchangeclone:dark_matter"}, }, "knockback", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:knockback_2_upgrade", "Knockback II Upgrade", "^[multiply:#aaaaaa", { {"exchangeclone:dark_matter", "mcl_core:slimeblock", "exchangeclone:dark_matter"}, {"mcl_core:slimeblock", "exchangeclone:knockback_1_upgrade", "mcl_core:slimeblock"}, {"exchangeclone:dark_matter", "mcl_core:slimeblock", "exchangeclone:dark_matter"}, }, "knockback", 2, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:looting_1_upgrade", "Looting I Upgrade", "^[multiply:#33aa00", { {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, {"mcl_mobitems:blaze_rod", "exchangeclone:blank_upgrade", "mcl_mobitems:blaze_rod"}, {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, }, "looting", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:looting_2_upgrade", "Looting II Upgrade", "^[multiply:#77ff00", { {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, {"mcl_mobitems:blaze_rod", "exchangeclone:looting_1_upgrade", "mcl_mobitems:blaze_rod"}, {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, }, "looting", 2, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:looting_3_upgrade", "Looting III Upgrade", "^[multiply:#ffff00", { {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, {"mcl_mobitems:blaze_rod", "exchangeclone:looting_2_upgrade", "mcl_mobitems:blaze_rod"}, {"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"}, }, "looting", 3, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:red_katar"] = true, ["exchangeclone:red_katar_3x3"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:thorns_1_upgrade", "Thorns I Upgrade", "^[multiply:#773300", { {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, {"mcl_core:cactus", "exchangeclone:blank_upgrade", "mcl_core:cactus"}, {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, }, "thorns", 1, { ["group:dark_matter_armor"] = true, ["group:red_matter_armor"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:thorns_2_upgrade", "Thorns II Upgrade", "^[multiply:#441100", { {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, {"mcl_core:cactus", "exchangeclone:thorns_1_upgrade", "mcl_core:cactus"}, {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, }, "thorns", 2, { ["group:dark_matter_armor"] = true, ["group:red_matter_armor"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:thorns_3_upgrade", "Thorns III Upgrade", "^[multiply:#220500", { {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, {"mcl_core:cactus", "exchangeclone:thorns_2_upgrade", "mcl_core:cactus"}, {"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"}, }, "thorns", 3, { ["group:dark_matter_armor"] = true, ["group:red_matter_armor"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:frost_walker_1_upgrade", "Frost Walker I Upgrade", "^[multiply:#77aaff", { {"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"}, {"mcl_core:packed_ice", "exchangeclone:blank_upgrade", "mcl_core:packed_ice"}, {"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"}, }, "frost_walker", 1, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:frost_walker_2_upgrade", "Frost Walker II Upgrade", "^[multiply:#77ffff", { {"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"}, {"mcl_core:packed_ice", "exchangeclone:frost_walker_1_upgrade", "mcl_core:packed_ice"}, {"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"}, }, "frost_walker", 2, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:depth_strider_1_upgrade", "Depth Strider I Upgrade", "^[multiply:#000066", { {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, {"mcl_fishing:salmon_raw", "exchangeclone:blank_upgrade", "mcl_fishing:salmon_raw"}, {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, }, "depth_strider", 1, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:depth_strider_2_upgrade", "Depth Strider II Upgrade", "^[multiply:#0000aa", { {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, {"mcl_fishing:salmon_raw", "exchangeclone:depth_strider_1_upgrade", "mcl_fishing:salmon_raw"}, {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, }, "depth_strider", 2, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:depth_strider_3_upgrade", "Depth Strider III Upgrade", "^[multiply:#0000ff", { {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, {"mcl_fishing:salmon_raw", "exchangeclone:depth_strider_2_upgrade", "mcl_fishing:salmon_raw"}, {"exchangeclone:dark_matter", "mcl_fishing:salmon_raw", "exchangeclone:dark_matter"}, }, "depth_strider", 3, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:soul_speed_1_upgrade", "Soul Speed I Upgrade", "^[brighten^[invert:rgb^[brighten^[multiply:#181400", { {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, {"mcl_blackstone:soul_soil", "exchangeclone:blank_upgrade", "mcl_blackstone:soul_soil"}, {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, }, "soul_speed", 1, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:soul_speed_2_upgrade", "Soul Speed II Upgrade", "^[brighten^[invert^[brighten:rgb^[multiply:#2c2000", { {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, {"mcl_blackstone:soul_soil", "exchangeclone:soul_speed_1_upgrade", "mcl_blackstone:soul_soil"}, {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, }, "soul_speed", 2, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:soul_speed_3_upgrade", "Soul Speed III Upgrade", "^[brighten^[invert^[brighten^[multiply:#352700", { {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, {"mcl_blackstone:soul_soil", "exchangeclone:soul_speed_2_upgrade", "mcl_blackstone:soul_soil"}, {"exchangeclone:dark_matter", "mcl_blackstone:soul_soil", "exchangeclone:dark_matter"}, }, "soul_speed", 3, { ["exchangeclone:boots_dark_matter"] = true, ["exchangeclone:boots_red_matter"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:silk_touch_upgrade", "Silk Touch Upgrade", "^[brighten", { {"exchangeclone:dark_matter", "mcl_core:cobweb", "exchangeclone:dark_matter"}, {"mcl_core:cobweb", "exchangeclone:blank_upgrade", "mcl_core:cobweb"}, {"exchangeclone:dark_matter", "mcl_core:cobweb", "exchangeclone:dark_matter"}, }, "silk_touch", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:dark_matter_shovel"] = true, ["exchangeclone:red_matter_shovel"] = true, ["exchangeclone:dark_matter_shears"] = true, ["exchangeclone:red_matter_shears"] = true, ["group:dark_matter_pickaxe"] = true, ["group:red_matter_pickaxe"] = true, ["group:dark_matter_hoe"] = true, ["group:red_matter_hoe"] = true, ["group:dark_matter_hammer"] = true, ["group:red_matter_hammer"] = true, ["group:red_katar"] = true, ["group:red_morningstar"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:fortune_1_upgrade", "Fortune I Upgrade", "^[multiply:#ff00ff", { {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, {"mcl_core:diamond", "exchangeclone:blank_upgrade", "mcl_core:diamond"}, {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, }, "fortune", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:dark_matter_shovel"] = true, ["exchangeclone:red_matter_shovel"] = true, ["exchangeclone:dark_matter_shears"] = true, ["exchangeclone:red_matter_shears"] = true, ["group:dark_matter_pickaxe"] = true, ["group:red_matter_pickaxe"] = true, ["group:dark_matter_hoe"] = true, ["group:red_matter_hoe"] = true, ["group:dark_matter_hammer"] = true, ["group:red_matter_hammer"] = true, ["group:red_katar"] = true, ["group:red_morningstar"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:fortune_2_upgrade", "Fortune II Upgrade", "^[multiply:#aa00ff", { {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, {"mcl_core:diamond", "exchangeclone:fortune_1_upgrade", "mcl_core:diamond"}, {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, }, "fortune", 2, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:dark_matter_shovel"] = true, ["exchangeclone:red_matter_shovel"] = true, ["exchangeclone:dark_matter_shears"] = true, ["exchangeclone:red_matter_shears"] = true, ["group:dark_matter_pickaxe"] = true, ["group:red_matter_pickaxe"] = true, ["group:dark_matter_hoe"] = true, ["group:red_matter_hoe"] = true, ["group:dark_matter_hammer"] = true, ["group:red_matter_hammer"] = true, ["group:red_katar"] = true, ["group:red_morningstar"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:fortune_3_upgrade", "Fortune III Upgrade", "^[multiply:#7700ff", { {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, {"mcl_core:diamond", "exchangeclone:fortune_2_upgrade", "mcl_core:diamond"}, {"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"}, }, "fortune", 3, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:dark_matter_shovel"] = true, ["exchangeclone:red_matter_shovel"] = true, ["exchangeclone:dark_matter_shears"] = true, ["exchangeclone:red_matter_shears"] = true, ["group:dark_matter_pickaxe"] = true, ["group:red_matter_pickaxe"] = true, ["group:dark_matter_hoe"] = true, ["group:red_matter_hoe"] = true, ["group:dark_matter_hammer"] = true, ["group:red_matter_hammer"] = true, ["group:red_katar"] = true, ["group:red_morningstar"] = true, } ) exchangeclone.register_upgrade( "exchangeclone:curse_of_vanishing_upgrade", "Curse of Vanishing \"Upgrade\"", "^[invert:rgb", { {"exchangeclone:dark_matter", "xpanes:pane_silver_flat", "exchangeclone:dark_matter"}, {"xpanes:pane_silver_flat", "exchangeclone:blank_upgrade", "xpanes:pane_silver_flat"}, {"exchangeclone:dark_matter", "xpanes:pane_silver_flat", "exchangeclone:dark_matter"}, }, "curse_of_vanishing", 1, { ["exchangeclone:dark_matter_sword"] = true, ["exchangeclone:red_matter_sword"] = true, ["exchangeclone:dark_matter_axe"] = true, ["exchangeclone:red_matter_axe"] = true, ["exchangeclone:dark_matter_shovel"] = true, ["exchangeclone:red_matter_shovel"] = true, ["exchangeclone:dark_matter_shears"] = true, ["exchangeclone:red_matter_shears"] = true, ["group:dark_matter_pickaxe"] = true, ["group:red_matter_pickaxe"] = true, ["group:dark_matter_hoe"] = true, ["group:red_matter_hoe"] = true, ["group:dark_matter_hammer"] = true, ["group:red_matter_hammer"] = true, ["group:red_katar"] = true, ["group:red_morningstar"] = true, ["group:dark_matter_armor"] = true, ["group:red_matter_armor"] = true, } )