From d695ab165982f7a15e54885adc084810abfaa22b Mon Sep 17 00:00:00 2001 From: ThePython Date: Sat, 25 Mar 2023 10:27:13 -0700 Subject: [PATCH] Energy tables incomplete, probably bugs --- .cdb.json | 10 +++++----- README.md | 14 +++++++------- config.lua | 2 +- constructor.lua | 23 +++++++++++++++-------- deconstructor.lua | 20 +++++++++++++------- energy.lua | 44 +++++++++++++++++++++++++++++++------------- energy_collector.lua | 24 +++++++++++++++++------- init.lua | 11 ++++++++++- mod.conf | 7 +++---- orb.lua | 20 +++++++++++++++----- settingtypes.txt | 2 +- 11 files changed, 118 insertions(+), 59 deletions(-) diff --git a/.cdb.json b/.cdb.json index 658a5dc..ae61bc7 100644 --- a/.cdb.json +++ b/.cdb.json @@ -1,7 +1,7 @@ { "type": "MOD", - "title": "Element Exchange", - "name": "element_exchange", + "title": "ExchangeClone", + "name": "exchangeclone", "tags": [ "magic", "technology" @@ -10,7 +10,7 @@ "media_license": "GPL-3.0-or-later", "short_description": "Exchange nodes into other nodes", "dev_state": "ACTIVELY_DEVELOPED", - "repo": "https://github.com/enchant97/minetest_element_exchange.git", - "website": "https://github.com/enchant97/minetest_element_exchange", - "issue_tracker": "https://github.com/enchant97/minetest_element_exchange/issues" + "repo": "https://github.com/thepython10110/exchangeclone", + "website": "https://thepython10110.github.io", + "issue_tracker": "https://github.com/thepython10110/exchangeclone/issues" } diff --git a/README.md b/README.md index 570a888..2ca95b9 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Element Exchange -[![ContentDB](https://content.minetest.net/packages/enchant97/element_exchange/shields/downloads/)](https://content.minetest.net/packages/enchant97/element_exchange/) -![GitHub license](https://img.shields.io/github/license/enchant97/minetest_element_exchange) -![GitHub issues](https://img.shields.io/github/issues/enchant97/minetest_element_exchange) +[![ContentDB](https://content.minetest.net/packages/thepython10110/exchangeclone/shields/downloads/)](https://content.minetest.net/packages/thepython10110/exchangeclone/) +![GitHub license](https://img.shields.io/github/license/thepython10110/minetest_exchangeclone) +![GitHub issues](https://img.shields.io/github/issues/thepython10110/minetest_exchangeclone) -A [Minetest](https://www.minetest.net/) mod to exchange nodes into other nodes. This is mod is inspired by the "Equivalent Exchange" mod for Minecraft. +A [Minetest](https://www.minetest.net/) mod to exchange nodes into other nodes. This is mod is inspired by the "Equivalent Exchange" mod for Minecraft, and forked and modified from [Element Exchange](https://github.com/enchant97/minetest_element_exchange). In other words, 90% of the code is not mine. ![In Game Screenshot](screenshot.png) @@ -14,9 +14,9 @@ A [Minetest](https://www.minetest.net/) mod to exchange nodes into other nodes. - Deconstructor that can extract energy from a node ## Config -You can change the default values in the minetest settings under `mods > element_exchange`. +You can change the default values in the minetest settings under `mods > exchangeclone`. -## License +## Original License Copyright (C) 2021 Leo Spratt This program is free software: you can redistribute it and/or modify @@ -30,4 +30,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program. If not, see . +along with this program. If not, see . \ No newline at end of file diff --git a/config.lua b/config.lua index ab7097f..ae2f862 100644 --- a/config.lua +++ b/config.lua @@ -1 +1 @@ -COLLECTOR_INTERVAL = minetest.settings:get("element_exchange.collector_interval") or 20 +COLLECTOR_INTERVAL = minetest.settings:get("exchangeclone.collector_interval") or 20 diff --git a/constructor.lua b/constructor.lua index 61727aa..8aed3af 100644 --- a/constructor.lua +++ b/constructor.lua @@ -1,3 +1,5 @@ + + function get_element_constructor_formspec() local formspec = { "size[8,9]", @@ -80,7 +82,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if listname == "fuel" then - if stack:get_name() == "element_exchange:exchange_orb" then + if stack:get_name() == "exchangeclone:exchange_orb" then return stack:get_count() else return 0 @@ -109,12 +111,12 @@ local function on_blast(pos) default.get_inventory_drops(pos, "fuel", drops) default.get_inventory_drops(pos, "src", drops) default.get_inventory_drops(pos, "dst", drops) - drops[#drops+1] = "element_exchange:element_constructor" + drops[#drops+1] = "exchangeclone:element_constructor" minetest.remove_node(pos) return drops end -minetest.register_node("element_exchange:element_constructor", { +minetest.register_node("exchangeclone:element_constructor", { description = "Element Constructor", tiles = { "ee_constructor_up.png", @@ -144,12 +146,17 @@ minetest.register_node("element_exchange:element_constructor", { allow_metadata_inventory_take = allow_metadata_inventory_take, }) +local recipe_ingredient = "default:pick_diamond" + +if exchangeclone.mineclone then + recipe_ingredient = "mcl_tools:pick_diamond" +end minetest.register_craft({ type = "shaped", - output = "element_exchange:element_constructor", + output = "exchangeclone:element_constructor", recipe = { - {"", "element_exchange:exchange_orb",""}, - {"element_exchange:exchange_orb", "default:pick_diamond", "element_exchange:exchange_orb"}, - {"", "element_exchange:exchange_orb", ""} + {"", "exchangeclone:exchange_orb",""}, + {"exchangeclone:exchange_orb", recipe_ingredient, "exchangeclone:exchange_orb"}, + {"", "exchangeclone:exchange_orb", ""} } -}) +}) \ No newline at end of file diff --git a/deconstructor.lua b/deconstructor.lua index f4ffca5..6bbcb4e 100644 --- a/deconstructor.lua +++ b/deconstructor.lua @@ -60,7 +60,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if listname == "dst" then - if stack:get_name() == "element_exchange:exchange_orb" then + if stack:get_name() == "exchangeclone:exchange_orb" then return stack:get_count() else return 0 @@ -88,12 +88,12 @@ local function on_blast(pos) local drops = {} default.get_inventory_drops(pos, "fuel", drops) default.get_inventory_drops(pos, "dst", drops) - drops[#drops+1] = "element_exchange:element_deconstructor" + drops[#drops+1] = "exchangeclone:element_deconstructor" minetest.remove_node(pos) return drops end -minetest.register_node("element_exchange:element_deconstructor", { +minetest.register_node("exchangeclone:element_deconstructor", { description = "Element Deconstructor", tiles = { "ee_deconstructor_up.png", @@ -123,12 +123,18 @@ minetest.register_node("element_exchange:element_deconstructor", { allow_metadata_inventory_take = allow_metadata_inventory_take, }) +local recipe_ingredient = "default:furnace" + +if exchangeclone.mineclone then + recipe_ingredient = "mcl_furnaces:furnace" +end + minetest.register_craft({ type = "shaped", - output = "element_exchange:element_deconstructor", + output = "exchangeclone:element_deconstructor", recipe = { - {"", "element_exchange:exchange_orb",""}, - {"element_exchange:exchange_orb", "default:furnace", "element_exchange:exchange_orb"}, - {"", "element_exchange:exchange_orb", ""} + {"", "exchangeclone:exchange_orb",""}, + {"exchangeclone:exchange_orb", recipe_ingredient, "exchangeclone:exchange_orb"}, + {"", "exchangeclone:exchange_orb", ""} } }) diff --git a/energy.lua b/energy.lua index bea2282..2328ca5 100644 --- a/energy.lua +++ b/energy.lua @@ -4,8 +4,8 @@ local energy_values = { ["default"] = { --- Nodes -- Stone - stone = 1, - cobble = 2, + stone = 2, + cobble = 1, stonebrick = 3, stone_block = 3, mossycobble = 3, @@ -87,27 +87,27 @@ local energy_values = { -- Ores, stone_with_coal = 5, - coalblock = 5, + coalblock = 36, stone_with_iron = 5, - steelblock = 5, + steelblock = 90, stone_with_copper = 5, - copperblock = 5, + copperblock = 90, stone_with_tin = 5, - tinblock = 5, + tinblock = 90, - bronzeblock = 5, + bronzeblock = 63, stone_with_gold = 5, - goldblock = 5, + goldblock = 108, stone_with_mese = 5, - mese = 5, + mese = 270, stone_with_diamond = 17, - diamondblock = 17, + diamondblock = 198, -- Plantlife, cactus = 2, @@ -209,7 +209,7 @@ local energy_values = { gold_lump = 5, iron_lump = 5, mese_crystal = 30, - mese_crystal_fragment = 19, + mese_crystal_fragment = 3, obsidian_shard = 7, paper = 4, steel_ingot = 10, @@ -218,7 +218,7 @@ local energy_values = { tin_lump = 4, --- Furnace - furnace = 4, + furnace = 8, --- Tools -- Picks @@ -265,11 +265,29 @@ local energy_values = { sword_teleport = 20, sword_water = 5, }, + ["mcl_core"] = { + --Nodes + --Stone + stone = 2, + cobble = 1, + stonebrick = 3, + stonebrickmossy = 3, + stonebrickcracked = 3, + stonebrickcarved = 3, + stone_smooth = 3, + diorite = 1, + andesite = 1, + granite = 1, + mossycobble = 3, + + stone_with_diamond = 17, + diamondblock = 17, + } } -- load energy values into known items for modname, itemlist in pairs(energy_values) do - if minetest.get_modpath(modname) then + if minetest.get_modpath(modname) then for itemname, energy_value in pairs(itemlist) do minetest.override_item(modname..":"..itemname, { description = minetest.registered_items[modname..":"..itemname].description.."\nEnergy Value: "..energy_value, diff --git a/energy_collector.lua b/energy_collector.lua index 0dc0b3a..ae4d6a8 100644 --- a/energy_collector.lua +++ b/energy_collector.lua @@ -53,7 +53,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if listname == "dst" then - if stack:get_name() == "element_exchange:exchange_orb" then + if stack:get_name() == "exchangeclone:exchange_orb" then return stack:get_count() else return 0 @@ -78,12 +78,12 @@ end local function on_blast(pos) local drops = {} default.get_inventory_drops(pos, "dst", drops) - drops[#drops+1] = "element_exchange:energy_collector" + drops[#drops+1] = "exchangeclone:energy_collector" minetest.remove_node(pos) return drops end -minetest.register_node("element_exchange:energy_collector", { +minetest.register_node("exchangeclone:energy_collector", { description = "Energy Collector", tiles = { "ee_energy_collector_up.png", @@ -113,12 +113,22 @@ minetest.register_node("element_exchange:energy_collector", { allow_metadata_inventory_take = allow_metadata_inventory_take, }) +local recipe_item_1 = "default:steel_block" +local recipe_item_2 = "default:obsidian_glass" +local recipe_item_3 = "default:chest" + +if exchangeclone.mineclone then + recipe_item_1 = "mcl_core:ironblock" + recipe_item_2 = "mcl_core:glass" + recipe_item_3 = "mcl_chests:chest" +end + minetest.register_craft({ type = "shaped", - output = "element_exchange:energy_collector", + output = "exchangeclone:energy_collector", recipe = { - {"default:obsidian_glass", "default:obsidian_glass","default:obsidian_glass"}, - {"element_exchange:exchange_orb", "default:chest", "element_exchange:exchange_orb"}, - {"default:steelblock", "default:steelblock", "default:steelblock"} + {recipe_item_2, recipe_item_2, recipe_item_2}, + {"exchangeclone:exchange_orb", recipe_item_3, "exchangeclone:exchange_orb"}, + {recipe_item_1, recipe_item_1, recipe_item_1} } }) diff --git a/init.lua b/init.lua index 8130b95..d494521 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,13 @@ -local default_path = minetest.get_modpath("element_exchange") +exchangeclone = {} +if (not minetest.get_modpath("mcl_core")) and (not minetest.get_modpath("mcl_core")) then + error("ExchangeClone requires 'default' or 'mcl_core,' but Minetest doesn't let me mark one or the other as a dependency.") +elseif minetest.get_modpath("mcl_core") then + exchangeclone["mineclone"] = true +else + exchangeclone["mineclone"] = false +end + +local default_path = minetest.get_modpath("exchangeclone") function get_item_energy(name) return minetest.registered_items[name].energy_value or 1 diff --git a/mod.conf b/mod.conf index 82927a0..65fc733 100644 --- a/mod.conf +++ b/mod.conf @@ -1,5 +1,4 @@ -name = element_exchange +name = exchangeclone description = Exchange nodes into other nodes -min_minetest_version = 5.4 -depends=default -optional_depends=moreswords +min_minetest_version = 5.5 +optional_depends=mcl_core, default, moreswords diff --git a/orb.lua b/orb.lua index 16ef81c..3c51c2c 100644 --- a/orb.lua +++ b/orb.lua @@ -4,18 +4,28 @@ function read_orb_charge(itemstack, user, pointed_thing) return itemstack end -minetest.register_tool("element_exchange:exchange_orb", { +minetest.register_tool("exchangeclone:exchange_orb", { description = "Exchange Orb", inventory_image = "ee_exchange_orb.png", on_use = read_orb_charge, }) +local recipe_item_1 = "default:steel_ingot" +local recipe_item_2 = "default:diamond" +local recipe_item_3 = "default:glass" + +if exchangeclone.mineclone then + recipe_item_1 = "mcl_core:iron_ingot" + recipe_item_2 = "mcl_core:diamond" + recipe_item_3 = "mcl_core:glass" +end + minetest.register_craft({ type = "shaped", - output = "element_exchange:exchange_orb", + output = "exchangeclone:exchange_orb", recipe = { - {"default:glass", "default:diamond","default:glass"}, - {"default:diamond", "default:steel_ingot", "default:diamond"}, - {"default:glass", "default:diamond", "default:glass"} + {recipe_item_3, recipe_item_2, recipe_item_3}, + {recipe_item_2, recipe_item_1, recipe_item_2}, + {recipe_item_3, recipe_item_2, recipe_item_3} } }) diff --git a/settingtypes.txt b/settingtypes.txt index 93b7a28..0beefa3 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1,2 +1,2 @@ # How fast the energy collector gathers energy from the light -element_exchange.collector_interval (Collector Gather Interval) int 20 +exchangeclone.collector_interval (Collector Gather Interval) int 20