add energy values to nodes

This commit is contained in:
Leo Spratt 2021-08-26 23:22:54 +01:00
parent 75ccbdf5aa
commit 1439eb4fc5
4 changed files with 214 additions and 4 deletions

@ -36,8 +36,7 @@ local function on_timer(pos, elapsed)
end end
-- make sure orb has enough charge -- make sure orb has enough charge
local orb_charge = fuel_stack:get_meta():get_int("stored_charge") or 0 local orb_charge = fuel_stack:get_meta():get_int("stored_charge") or 0
-- TODO specific charge required depending on node orb_charge = orb_charge - get_item_energy(src_stack:get_name())
orb_charge = orb_charge - 1
if orb_charge < 0 then if orb_charge < 0 then
break break
end end

@ -25,14 +25,14 @@ local function on_timer(pos, elapsed)
if not inv:is_empty("dst") and not inv:is_empty("fuel") then if not inv:is_empty("dst") and not inv:is_empty("fuel") then
-- remove one item from fuel inventory -- remove one item from fuel inventory
local fuel_stack = inv:get_stack("fuel", 1) 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) fuel_stack:set_count(fuel_stack:get_count() - 1)
inv:set_stack("fuel", 1, fuel_stack) inv:set_stack("fuel", 1, fuel_stack)
-- only get 1 orb as we can only use one -- only get 1 orb as we can only use one
local dest_orb = inv:get_stack("dst", 1) local dest_orb = inv:get_stack("dst", 1)
local stored = dest_orb:get_meta():get_int("stored_charge") or 0 local stored = dest_orb:get_meta():get_int("stored_charge") or 0
-- TODO give a specific stored charge depending on node stored = stored + energy_value
stored = stored + 1
dest_orb:get_meta():set_int("stored_charge", stored) dest_orb:get_meta():set_int("stored_charge", stored)
inv:set_stack("dst", 1, dest_orb) inv:set_stack("dst", 1, dest_orb)

206
energy.lua Normal file

@ -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

@ -1,5 +1,10 @@
local default_path = minetest.get_modpath("element_exchange") 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.."/constructor.lua")
dofile(default_path.."/deconstructor.lua") dofile(default_path.."/deconstructor.lua")
dofile(default_path.."/energy.lua")
dofile(default_path.."/orb.lua") dofile(default_path.."/orb.lua")