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",
"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"
}

View File

@ -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 <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()
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", ""}
}
})
})

View File

@ -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", ""}
}
})

View File

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

View File

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

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)
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
min_minetest_version = 5.4
depends=default
optional_depends=moreswords
min_minetest_version = 5.5
optional_depends=mcl_core, default, moreswords

20
orb.lua
View File

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

View File

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