From 1439eb4fc5d790a6bc895376f2e5724db4145c23 Mon Sep 17 00:00:00 2001 From: Leo Spratt Date: Thu, 26 Aug 2021 23:22:54 +0100 Subject: [PATCH] add energy values to nodes --- constructor.lua | 3 +- deconstructor.lua | 4 +- energy.lua | 206 ++++++++++++++++++++++++++++++++++++++++++++++ init.lua | 5 ++ 4 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 energy.lua diff --git a/constructor.lua b/constructor.lua index 6306f86..b9ad5c7 100644 --- a/constructor.lua +++ b/constructor.lua @@ -36,8 +36,7 @@ local function on_timer(pos, elapsed) end -- make sure orb has enough charge local orb_charge = fuel_stack:get_meta():get_int("stored_charge") or 0 - -- TODO specific charge required depending on node - orb_charge = orb_charge - 1 + orb_charge = orb_charge - get_item_energy(src_stack:get_name()) if orb_charge < 0 then break end diff --git a/deconstructor.lua b/deconstructor.lua index 00f4ae2..a5818fd 100644 --- a/deconstructor.lua +++ b/deconstructor.lua @@ -25,14 +25,14 @@ local function on_timer(pos, elapsed) if not inv:is_empty("dst") and not inv:is_empty("fuel") then -- remove one item from fuel inventory local fuel_stack = inv:get_stack("fuel", 1) + local energy_value = get_item_energy(fuel_stack:get_name()) fuel_stack:set_count(fuel_stack:get_count() - 1) inv:set_stack("fuel", 1, fuel_stack) -- only get 1 orb as we can only use one local dest_orb = inv:get_stack("dst", 1) local stored = dest_orb:get_meta():get_int("stored_charge") or 0 - -- TODO give a specific stored charge depending on node - stored = stored + 1 + stored = stored + energy_value dest_orb:get_meta():set_int("stored_charge", stored) inv:set_stack("dst", 1, dest_orb) diff --git a/energy.lua b/energy.lua new file mode 100644 index 0000000..a3eafb0 --- /dev/null +++ b/energy.lua @@ -0,0 +1,206 @@ +-- TODO add more items from minetest_game +-- Names listed are in the order shown in the minetest_game repo +local energy_values = { + ["default"] = { + --- Nodes + -- Stone + stone = 1, + cobble = 2, + stonebrick = 3, + stone_block = 3, + mossycobble = 3, + + desert_stone = 3, + desert_cobble = 3, + desert_stonebrick = 3, + desert_stone_block = 3, + + sandstone = 2, + sandstonebrick = 3, + sandstone_block = 3, + desert_sandstone = 2, + desert_sandstone_brick = 3, + desert_sandstone_block = 3, + silver_sandstone = 2, + silver_sandstone_brick = 3, + silver_sandstone_block = 3, + + obsidian = 10, + obsidianbrick = 11, + obsidian_block = 11, + + -- Soft / Non-Stone, + dirt = 1, + dirt_with_grass = 1, + dirt_with_grass_footsteps = 1, + dirt_with_dry_grass = 1, + dirt_with_snow = 1, + dirt_with_rainforest_litter = 1, + dirt_with_coniferous_litter = 1, + dry_dirt = 1, + dry_dirt_with_dry_grass = 1, + + permafrost = 1, + permafrost_with_stones = 1, + permafrost_with_moss = 1, + + sand = 1, + desert_sand = 1, + silver_sand = 1, + + gravel = 1, + + clay = 3, + + snow = 1, + snowblock = 1, + ice = 1, + cave_ice = 1, + + -- Trees, + tree = 2, + wood = 2, + leaves = 1, + sapling = 3, + apple = 5, + + jungletree = 2, + junglewood = 2, + jungleleaves = 1, + junglesapling = 2, + emergent_jungle_sapling = 2, + + pine_tree = 2, + pine_wood = 2, + pine_needles = 2, + pine_sapling = 3, + + acacia_tree = 1, + acacia_wood = 2, + acacia_leaves = 2, + acacia_sapling = 3, + + aspen_tree = 2, + aspen_wood = 2, + aspen_leaves = 1, + aspen_sapling = 3, + + -- Ores, + stone_with_coal = 5, + coalblock = 5, + + stone_with_iron = 5, + steelblock = 5, + + stone_with_copper = 5, + copperblock = 5, + + stone_with_tin = 5, + tinblock = 5, + + bronzeblock = 5, + + stone_with_gold = 5, + goldblock = 5, + + stone_with_mese = 5, + mese = 5, + + stone_with_diamond = 17, + diamondblock = 17, + + -- Plantlife, + cactus = 2, + large_cactus_seedling = 1, + + papyrus = 1, + dry_shrub = 1, + junglegrass = 1, + + grass_1 = 1, + grass_2 = 1, + grass_3 = 1, + grass_4 = 1, + grass_5 = 1, + + dry_grass_1 = 1, + dry_grass_2 = 1, + dry_grass_3 = 1, + dry_grass_4 = 1, + dry_grass_5 = 1, + + fern_1 = 1, + fern_2 = 1, + fern_3 = 1, + + marram_grass_1 = 1, + marram_grass_2 = 1, + marram_grass_3 = 1, + + bush_stem = 1, + bush_leaves = 1, + bush_sapling = 1, + acacia_bush_stem = 1, + acacia_bush_leaves = 1, + acacia_bush_sapling = 1, + pine_bush_stem = 1, + pine_bush_needles = 1, + pine_bush_sapling = 1, + blueberry_bush_leaves_with_berries = 1, + blueberry_bush_leaves = 1, + blueberry_bush_sapling = 1, + + sand_with_kelp = 1, + + -- Corals, + coral_green = 2, + coral_pink = 2, + coral_cyan = 2, + coral_brown = 2, + coral_orange = 2, + coral_skeleton = 2, + + -- Tools / "Advanced" crafting / Non-"natural", + bookshelf = 9, + + sign_wall_wood = 4, + sign_wall_steel = 4, + + ladder_wood = 4, + ladder_steel = 4, + + fence_wood = 4, + fence_acacia_wood = 4, + fence_junglewood = 4, + fence_pine_wood = 4, + fence_aspen_wood = 4, + + fence_rail_wood = 4, + fence_rail_acacia_wood = 4, + fence_rail_junglewood = 4, + fence_rail_pine_wood = 4, + fence_rail_aspen_wood = 4, + + glass = 9, + obsidian_glass = 10, + + brick = 8, + + meselamp = 15, + mese_post_light = 4, + mese_post_light_acacia_wood = 4, + mese_post_light_junglewood = 4, + mese_post_light_pine_wood = 4, + mese_post_light_aspen_wood = 4, + }, +} + +-- load energy values into known items +for modname, itemlist in pairs(energy_values) do + for itemname, energy_value in pairs(itemlist) do + minetest.override_item(modname..":"..itemname, { + description = minetest.registered_items[modname..":"..itemname].description.."\nEnergy Value: "..energy_value, + energy_value = energy_value, + }) + end +end diff --git a/init.lua b/init.lua index 636ba71..eedb49f 100644 --- a/init.lua +++ b/init.lua @@ -1,5 +1,10 @@ local default_path = minetest.get_modpath("element_exchange") +function get_item_energy(name) + return minetest.registered_items[name].energy_value or 1 +end + dofile(default_path.."/constructor.lua") dofile(default_path.."/deconstructor.lua") +dofile(default_path.."/energy.lua") dofile(default_path.."/orb.lua")