From c22275d88fe7940fe940d7a209c63e6d6ef71a22 Mon Sep 17 00:00:00 2001 From: ThePython Date: Wed, 29 Mar 2023 13:07:43 -0700 Subject: [PATCH] More changes (disabled 0-energy and more) --- constructor.lua | 43 +++++++++++++------------ deconstructor.lua | 26 ++++++++------- energy.lua | 81 ++++++++++++++++++++++++++++------------------- mod.conf | 1 + 4 files changed, 87 insertions(+), 64 deletions(-) diff --git a/constructor.lua b/constructor.lua index bc87337..eaaa4d3 100644 --- a/constructor.lua +++ b/constructor.lua @@ -69,27 +69,30 @@ 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 - orb_charge = orb_charge - get_item_energy(src_stack:get_name()) - if orb_charge < 0 then - break + local energy_cost = get_item_energy(src_stack:get_name()) + if energy_cost > 0 then + orb_charge = orb_charge - energy_cost + if orb_charge < 0 then + break + end + -- give orb new charge value + fuel_stack:get_meta():set_int("stored_charge", orb_charge) + fuel_stack:get_meta():set_string("description", "Exchange Orb\nCurrent Charge: "..tostring(orb_charge)) + inv:set_stack("fuel", 1, fuel_stack) + -- "convert" charge into a node at dst + if dst_stack:is_empty() then + -- create a new stack + dst_stack = ItemStack(src_stack:get_name()) + elseif dst_stack:get_count() >= 64 then + -- the max item count is limited to 64 + break + else + -- add one node into stack + dst_stack:set_count(dst_stack:get_count() + 1) + end + inv:set_stack("dst", 1, dst_stack) + update = true end - -- give orb new charge value - fuel_stack:get_meta():set_int("stored_charge", orb_charge) - fuel_stack:get_meta():set_string("description", "Exchange Orb\nCurrent Charge: "..tostring(orb_charge)) - inv:set_stack("fuel", 1, fuel_stack) - -- "convert" charge into a node at dst - if dst_stack:is_empty() then - -- create a new stack - dst_stack = ItemStack(src_stack:get_name()) - elseif dst_stack:get_count() >= 64 then - -- the max item count is limited to 64 - break - else - -- add one node into stack - dst_stack:set_count(dst_stack:get_count() + 1) - end - inv:set_stack("dst", 1, dst_stack) - update = true end end minetest.get_node_timer(pos):stop() diff --git a/deconstructor.lua b/deconstructor.lua index 1d8b11a..bd4bb2b 100644 --- a/deconstructor.lua +++ b/deconstructor.lua @@ -59,19 +59,21 @@ local function on_timer(pos, elapsed) else energy_value = get_item_energy(fuel_stack:get_name()) end - local wear = fuel_stack:get_wear() - if wear and wear ~= 0 then - energy_value = math.ceil(energy_value * (wear / 65536)) + if energy_value ~= 0 then + local wear = fuel_stack:get_wear() + if wear and wear ~= 0 then + energy_value = math.ceil(energy_value * (wear / 65536)) + end + fuel_stack:set_count(fuel_stack:get_count() - 1) + inv:set_stack("main", 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 + stored = stored + energy_value + dest_orb:get_meta():set_int("stored_charge", stored) + dest_orb:get_meta():set_string("description", "Exchange Orb\nCurrent Charge: "..tostring(stored)) + inv:set_stack("dst", 1, dest_orb) end - fuel_stack:set_count(fuel_stack:get_count() - 1) - inv:set_stack("main", 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 - stored = stored + energy_value - dest_orb:get_meta():set_int("stored_charge", stored) - dest_orb:get_meta():set_string("description", "Exchange Orb\nCurrent Charge: "..tostring(stored)) - inv:set_stack("dst", 1, dest_orb) update = true end diff --git a/energy.lua b/energy.lua index 5ea2f19..0b5ae5c 100644 --- a/energy.lua +++ b/energy.lua @@ -1,6 +1,8 @@ -- TODO add more items from minetest_game -- Names listed are in the order shown in the minetest_game repo local energy_values = { + ["group"] = { + }, ["default"] = { --- Nodes -- Stone @@ -269,6 +271,21 @@ local energy_values = { --Energy values taken from https://technicpack.fandom.com/wiki/Alchemical_Math --Didn't type out the ones with a value of 1, since that's the default + ["mcl_group"] = { + sandstone = 3, + stone_brick = 1, + wood = 8, + wood_slab = 4, + button = 2, + dye = 8, + fence_wood = 12, + wood_stairs = 12, + flower = 16, + pane = 0, + pressure_plate = 16, + trapdoor = 24, + fence_gate = 32, + }, ["mcl_core"] = { snow = 0, stone_with_coal = 0, @@ -285,6 +302,12 @@ local energy_values = { vine = 8, cobweb = 12, ladder = 14, + clay_lump = 16, + brick = 16, + charcoal_lump = 32, + }, + ["mcl_crafting_table"] = { + crafting_table = 32, }, ["mcl_bows"] = { arrow = 14, @@ -302,7 +325,14 @@ local energy_values = { furnace = 8 }, ["mcl_farming"] = { - hoe_stone = 10 + hoe_stone = 10, + hoe_stone_enchanted = 20, + hoe_wood = 24, + hoe_wood_enchanted = 48, + wheat_seeds = 16, + melon_seeds = 16, + melon = 16, + cookie = 22, }, ["mcl_stairs"] = { slab_redsandstone = 2, @@ -327,6 +357,7 @@ local energy_values = { ["mcl_nether"] = { nether_brick = 3, red_nether_brick = 3, + nether_wart_item = 24, }, ["mcl_fences"] = { nether_brick_fence = 4 @@ -349,22 +380,6 @@ local energy_values = { deepslate_with_emerald = 0 }, ["xpanes"] = { - pane_natural_flat = 0, - pane_white_flat = 0, - pane_black_flat = 0, - pane_brown_flat = 0, - pane_blue_flat = 0, - pane_cyan_flat = 0, - pane_gray_flat = 0, - pane_green_flat = 0, - pane_light_blue_flat = 0, - pane_lime_flat = 0, - pane_magenta_flat = 0, - pane_orange_flat = 0, - pane_pink_flat = 0, - pane_red_flat = 0, - pane_silver_flat = 0, - pane_yellow_flat = 0 }, ["mcl_brewing"] = { stand = 0 @@ -375,7 +390,7 @@ local energy_values = { ["mesecons_button"] = { }, ["mesecons_pressureplates"] = { - pressure_plate_stone_off = 2 + pressure_plate_stone_off = 2, }, ["mesecons_walllever"] = { wall_lever_off = 5 @@ -386,32 +401,27 @@ local energy_values = { nether_brick_fence_gate = 4 }, ["mcl_tools"] = { + sword_wood = 20, sword_stone = 6, shovel_stone = 9, pick_stone = 11, axe_stone = 11, + shovel_wood = 16, + sword_wood_enchanted = 40, sword_stone_enchanted = 12, shovel_stone_enchanted = 18, pick_stone_enchanted = 22, axe_stone_enchanted = 22, + shovel_wood_enchanted = 32, }, ["mcl_mobitems"] = { string = 12, + rotten_flesh = 24, + slimeball = 24, }, ["mcl_torches"] = { torch = 9, }, - ["group"] = { - sandstone = 3, - stone_brick = 1, - wood = 8, - wood_slab = 4, - button = 2, - dye = 8, - fence_wood = 12, - wood_stairs = 12, - flower = 16, - } } local function get_group_items(groups, allow_duplicates) @@ -448,13 +458,13 @@ minetest.register_on_mods_loaded(function() for modname, itemlist in pairs(energy_values) do if minetest.get_modpath(modname) then for itemname, energy_value in pairs(itemlist) do - minetest.log("Adding energy value ("..energy_value..") for "..modname..":"..itemname) + --minetest.log("Adding energy value ("..energy_value..") for "..modname..":"..itemname) minetest.override_item(modname..":"..itemname, { description = minetest.registered_items[modname..":"..itemname].description.."\nEnergy Value: "..energy_value, energy_value = energy_value, }) end - elseif modname == "group" then + elseif (modname == "mcl_group" and exchangeclone.mineclone) or (modname == "group" and not exchangeclone.mineclone) then local groupnames = {} for k,v in pairs(itemlist) do groupnames[#groupnames + 1] = k @@ -462,8 +472,15 @@ minetest.register_on_mods_loaded(function() local grouped_items = get_group_items(groupnames) for groupname, energy_value in pairs(itemlist) do for i, item in ipairs(grouped_items[groupname]) do + local description = minetest.registered_items[item].description + local already_has_value = description:find("Energy Value: (%d+)") + if already_has_value then + description = description:gsub("Energy Value: "..already_has_value, "Energy Value: "..energy_value) + else + description = minetest.registered_items[item].description.."\nEnergy Value: "..energy_value + end minetest.override_item(item, { - description = minetest.registered_items[item].description.."\nEnergy Value: "..energy_value, + description = description, energy_value = energy_value }) end diff --git a/mod.conf b/mod.conf index 65fc733..a7bc957 100644 --- a/mod.conf +++ b/mod.conf @@ -2,3 +2,4 @@ name = exchangeclone description = Exchange nodes into other nodes min_minetest_version = 5.5 optional_depends=mcl_core, default, moreswords +author = ThePython10110 \ No newline at end of file