Energy tables incomplete, probably bugs

This commit is contained in:
ThePython 2023-03-25 10:27:13 -07:00
parent bcfb72543a
commit d695ab1659
11 changed files with 118 additions and 59 deletions

View File

@ -1,7 +1,7 @@
{ {
"type": "MOD", "type": "MOD",
"title": "Element Exchange", "title": "ExchangeClone",
"name": "element_exchange", "name": "exchangeclone",
"tags": [ "tags": [
"magic", "magic",
"technology" "technology"
@ -10,7 +10,7 @@
"media_license": "GPL-3.0-or-later", "media_license": "GPL-3.0-or-later",
"short_description": "Exchange nodes into other nodes", "short_description": "Exchange nodes into other nodes",
"dev_state": "ACTIVELY_DEVELOPED", "dev_state": "ACTIVELY_DEVELOPED",
"repo": "https://github.com/enchant97/minetest_element_exchange.git", "repo": "https://github.com/thepython10110/exchangeclone",
"website": "https://github.com/enchant97/minetest_element_exchange", "website": "https://thepython10110.github.io",
"issue_tracker": "https://github.com/enchant97/minetest_element_exchange/issues" "issue_tracker": "https://github.com/thepython10110/exchangeclone/issues"
} }

View File

@ -1,9 +1,9 @@
# Element Exchange # Element Exchange
[![ContentDB](https://content.minetest.net/packages/enchant97/element_exchange/shields/downloads/)](https://content.minetest.net/packages/enchant97/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/enchant97/minetest_element_exchange) ![GitHub license](https://img.shields.io/github/license/thepython10110/minetest_exchangeclone)
![GitHub issues](https://img.shields.io/github/issues/enchant97/minetest_element_exchange) ![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) ![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 - Deconstructor that can extract energy from a node
## Config ## 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 Copyright (C) 2021 Leo Spratt
This program is free software: you can redistribute it and/or modify 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. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.

View File

@ -1 +1 @@
COLLECTOR_INTERVAL = minetest.settings:get("element_exchange.collector_interval") or 20 COLLECTOR_INTERVAL = minetest.settings:get("exchangeclone.collector_interval") or 20

View File

@ -1,3 +1,5 @@
function get_element_constructor_formspec() function get_element_constructor_formspec()
local formspec = { local formspec = {
"size[8,9]", "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 meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if listname == "fuel" then 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() return stack:get_count()
else else
return 0 return 0
@ -109,12 +111,12 @@ local function on_blast(pos)
default.get_inventory_drops(pos, "fuel", drops) default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "src", drops) default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "dst", 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) minetest.remove_node(pos)
return drops return drops
end end
minetest.register_node("element_exchange:element_constructor", { minetest.register_node("exchangeclone:element_constructor", {
description = "Element Constructor", description = "Element Constructor",
tiles = { tiles = {
"ee_constructor_up.png", "ee_constructor_up.png",
@ -144,12 +146,17 @@ minetest.register_node("element_exchange:element_constructor", {
allow_metadata_inventory_take = allow_metadata_inventory_take, 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({ minetest.register_craft({
type = "shaped", type = "shaped",
output = "element_exchange:element_constructor", output = "exchangeclone:element_constructor",
recipe = { recipe = {
{"", "element_exchange:exchange_orb",""}, {"", "exchangeclone:exchange_orb",""},
{"element_exchange:exchange_orb", "default:pick_diamond", "element_exchange:exchange_orb"}, {"exchangeclone:exchange_orb", recipe_ingredient, "exchangeclone:exchange_orb"},
{"", "element_exchange:exchange_orb", ""} {"", "exchangeclone:exchange_orb", ""}
} }
}) })

View File

@ -60,7 +60,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if listname == "dst" then 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() return stack:get_count()
else else
return 0 return 0
@ -88,12 +88,12 @@ local function on_blast(pos)
local drops = {} local drops = {}
default.get_inventory_drops(pos, "fuel", drops) default.get_inventory_drops(pos, "fuel", drops)
default.get_inventory_drops(pos, "dst", 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) minetest.remove_node(pos)
return drops return drops
end end
minetest.register_node("element_exchange:element_deconstructor", { minetest.register_node("exchangeclone:element_deconstructor", {
description = "Element Deconstructor", description = "Element Deconstructor",
tiles = { tiles = {
"ee_deconstructor_up.png", "ee_deconstructor_up.png",
@ -123,12 +123,18 @@ minetest.register_node("element_exchange:element_deconstructor", {
allow_metadata_inventory_take = allow_metadata_inventory_take, 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({ minetest.register_craft({
type = "shaped", type = "shaped",
output = "element_exchange:element_deconstructor", output = "exchangeclone:element_deconstructor",
recipe = { recipe = {
{"", "element_exchange:exchange_orb",""}, {"", "exchangeclone:exchange_orb",""},
{"element_exchange:exchange_orb", "default:furnace", "element_exchange:exchange_orb"}, {"exchangeclone:exchange_orb", recipe_ingredient, "exchangeclone:exchange_orb"},
{"", "element_exchange:exchange_orb", ""} {"", "exchangeclone:exchange_orb", ""}
} }
}) })

View File

@ -4,8 +4,8 @@ local energy_values = {
["default"] = { ["default"] = {
--- Nodes --- Nodes
-- Stone -- Stone
stone = 1, stone = 2,
cobble = 2, cobble = 1,
stonebrick = 3, stonebrick = 3,
stone_block = 3, stone_block = 3,
mossycobble = 3, mossycobble = 3,
@ -87,27 +87,27 @@ local energy_values = {
-- Ores, -- Ores,
stone_with_coal = 5, stone_with_coal = 5,
coalblock = 5, coalblock = 36,
stone_with_iron = 5, stone_with_iron = 5,
steelblock = 5, steelblock = 90,
stone_with_copper = 5, stone_with_copper = 5,
copperblock = 5, copperblock = 90,
stone_with_tin = 5, stone_with_tin = 5,
tinblock = 5, tinblock = 90,
bronzeblock = 5, bronzeblock = 63,
stone_with_gold = 5, stone_with_gold = 5,
goldblock = 5, goldblock = 108,
stone_with_mese = 5, stone_with_mese = 5,
mese = 5, mese = 270,
stone_with_diamond = 17, stone_with_diamond = 17,
diamondblock = 17, diamondblock = 198,
-- Plantlife, -- Plantlife,
cactus = 2, cactus = 2,
@ -209,7 +209,7 @@ local energy_values = {
gold_lump = 5, gold_lump = 5,
iron_lump = 5, iron_lump = 5,
mese_crystal = 30, mese_crystal = 30,
mese_crystal_fragment = 19, mese_crystal_fragment = 3,
obsidian_shard = 7, obsidian_shard = 7,
paper = 4, paper = 4,
steel_ingot = 10, steel_ingot = 10,
@ -218,7 +218,7 @@ local energy_values = {
tin_lump = 4, tin_lump = 4,
--- Furnace --- Furnace
furnace = 4, furnace = 8,
--- Tools --- Tools
-- Picks -- Picks
@ -265,11 +265,29 @@ local energy_values = {
sword_teleport = 20, sword_teleport = 20,
sword_water = 5, 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 -- load energy values into known items
for modname, itemlist in pairs(energy_values) do 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 for itemname, energy_value in pairs(itemlist) do
minetest.override_item(modname..":"..itemname, { minetest.override_item(modname..":"..itemname, {
description = minetest.registered_items[modname..":"..itemname].description.."\nEnergy Value: "..energy_value, description = minetest.registered_items[modname..":"..itemname].description.."\nEnergy Value: "..energy_value,

View File

@ -53,7 +53,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
if listname == "dst" then 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() return stack:get_count()
else else
return 0 return 0
@ -78,12 +78,12 @@ end
local function on_blast(pos) local function on_blast(pos)
local drops = {} local drops = {}
default.get_inventory_drops(pos, "dst", 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) minetest.remove_node(pos)
return drops return drops
end end
minetest.register_node("element_exchange:energy_collector", { minetest.register_node("exchangeclone:energy_collector", {
description = "Energy Collector", description = "Energy Collector",
tiles = { tiles = {
"ee_energy_collector_up.png", "ee_energy_collector_up.png",
@ -113,12 +113,22 @@ minetest.register_node("element_exchange:energy_collector", {
allow_metadata_inventory_take = allow_metadata_inventory_take, 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({ minetest.register_craft({
type = "shaped", type = "shaped",
output = "element_exchange:energy_collector", output = "exchangeclone:energy_collector",
recipe = { recipe = {
{"default:obsidian_glass", "default:obsidian_glass","default:obsidian_glass"}, {recipe_item_2, recipe_item_2, recipe_item_2},
{"element_exchange:exchange_orb", "default:chest", "element_exchange:exchange_orb"}, {"exchangeclone:exchange_orb", recipe_item_3, "exchangeclone:exchange_orb"},
{"default:steelblock", "default:steelblock", "default:steelblock"} {recipe_item_1, recipe_item_1, recipe_item_1}
} }
}) })

View File

@ -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) function get_item_energy(name)
return minetest.registered_items[name].energy_value or 1 return minetest.registered_items[name].energy_value or 1

View File

@ -1,5 +1,4 @@
name = element_exchange name = exchangeclone
description = Exchange nodes into other nodes description = Exchange nodes into other nodes
min_minetest_version = 5.4 min_minetest_version = 5.5
depends=default optional_depends=mcl_core, default, moreswords
optional_depends=moreswords

20
orb.lua
View File

@ -4,18 +4,28 @@ function read_orb_charge(itemstack, user, pointed_thing)
return itemstack return itemstack
end end
minetest.register_tool("element_exchange:exchange_orb", { minetest.register_tool("exchangeclone:exchange_orb", {
description = "Exchange Orb", description = "Exchange Orb",
inventory_image = "ee_exchange_orb.png", inventory_image = "ee_exchange_orb.png",
on_use = read_orb_charge, 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({ minetest.register_craft({
type = "shaped", type = "shaped",
output = "element_exchange:exchange_orb", output = "exchangeclone:exchange_orb",
recipe = { recipe = {
{"default:glass", "default:diamond","default:glass"}, {recipe_item_3, recipe_item_2, recipe_item_3},
{"default:diamond", "default:steel_ingot", "default:diamond"}, {recipe_item_2, recipe_item_1, recipe_item_2},
{"default:glass", "default:diamond", "default:glass"} {recipe_item_3, recipe_item_2, recipe_item_3}
} }
}) })

View File

@ -1,2 +1,2 @@
# How fast the energy collector gathers energy from the light # 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