Skip to content

Refactoring and fixing wrench registrations #242

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Nov 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 4 additions & 37 deletions wrench/support.lua → wrench/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,6 @@ wrench.META_TYPE_FLOAT = 1
wrench.META_TYPE_STRING = 2
wrench.META_TYPE_INT = 3

local STRING, FLOAT =
wrench.META_TYPE_STRING,
wrench.META_TYPE_FLOAT

wrench.registered_nodes = {
["default:chest"] = {
lists = {"main"},
},
["default:chest_locked"] = {
lists = {"main"},
metas = {owner = STRING,
infotext = STRING},
owned = true,
},
["default:furnace"] = {
lists = {"fuel", "src", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
},
["default:furnace_active"] = {
lists = {"fuel", "src", "dst"},
metas = {infotext = STRING,
fuel_totaltime = FLOAT,
fuel_time = FLOAT,
src_totaltime = FLOAT,
src_time = FLOAT},
store_meta_always = true,
},
["default:sign_wall"] = {
metas = {infotext = STRING,
text = STRING},
},
}

function wrench:original_name(name)
for key, value in pairs(self.registered_nodes) do
if name == value.name then
Expand All @@ -65,7 +28,11 @@ function wrench:original_name(name)
end

function wrench:register_node(name, def)
assert(type(name) == "string", "wrench:register_node invalid type for name")
assert(type(def) == "table", "wrench:register_node invalid type for def")
if minetest.registered_nodes[name] then
self.registered_nodes[name] = def
else
minetest.log("warning", "Attempt to register unknown node for wrench: "..tostring(name))
end
end
45 changes: 0 additions & 45 deletions wrench/drawers.lua

This file was deleted.

20 changes: 16 additions & 4 deletions wrench/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,24 @@ available to survival-mode players.

local LATEST_SERIALIZATION_VERSION = 1

wrench = {}
wrench = {
registered_nodes = {}
}

local modpath = minetest.get_modpath(minetest.get_current_modname())
dofile(modpath.."/support.lua")
dofile(modpath.."/technic.lua")
dofile(modpath.."/drawers.lua")
dofile(modpath.."/api.lua")

local function register_mod_nodes(modname)
if minetest.get_modpath(modname) then
dofile(modpath.."/nodes/"..modname..".lua")
end
end

register_mod_nodes("default")
register_mod_nodes("technic")
register_mod_nodes("technic_cnc")
register_mod_nodes("technic_chests")
register_mod_nodes("drawers")

-- Boilerplate to support localized strings if intllib mod is installed.
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
Expand Down
3 changes: 1 addition & 2 deletions wrench/mod.conf
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
name = wrench
depends = default
optional_depends = technic, technic_chests, technic_worldgen, intllib, drawers
optional_depends = technic, technic_chests, technic_worldgen, intllib, drawers, default
52 changes: 52 additions & 0 deletions wrench/nodes/default.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

-- Register nodes from default / minetest_game

wrench:register_node("default:chest", {
lists = {"main"},
})

wrench:register_node("default:chest_locked", {
lists = {"main"},
metas = {
owner = wrench.META_TYPE_STRING,
infotext = wrench.META_TYPE_STRING
},
owned = true,
})

wrench:register_node("default:furnace", {
lists = {"fuel", "src", "dst"},
metas = {
infotext = wrench.META_TYPE_STRING,
fuel_totaltime = wrench.META_TYPE_FLOAT,
fuel_time = wrench.META_TYPE_FLOAT,
src_totaltime = wrench.META_TYPE_FLOAT,
src_time = wrench.META_TYPE_FLOAT
},
})

wrench:register_node("default:furnace_active", {
lists = {"fuel", "src", "dst"},
metas = {
infotext = wrench.META_TYPE_STRING,
fuel_totaltime = wrench.META_TYPE_FLOAT,
fuel_time = wrench.META_TYPE_FLOAT,
src_totaltime = wrench.META_TYPE_FLOAT,
src_time = wrench.META_TYPE_FLOAT
},
store_meta_always = true,
})

wrench:register_node("default:sign_wall_wood", {
metas = {
infotext = wrench.META_TYPE_STRING,
text = wrench.META_TYPE_STRING
},
})

wrench:register_node("default:sign_wall_steel", {
metas = {
infotext = wrench.META_TYPE_STRING,
text = wrench.META_TYPE_STRING
},
})
42 changes: 42 additions & 0 deletions wrench/nodes/drawers.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

-- Register wrench support for drawers mod nodes

local INT, STRING = wrench.META_TYPE_INT, wrench.META_TYPE_STRING

-- assemble definitions for drawer type 1,2 and 4
for _, drawer_type in ipairs({1,2,4}) do

local def = {
lists = {"upgrades"},
metas = {},
after_place = drawers.spawn_visuals
}

for i=1,drawer_type do

local suffix
if drawer_type == 1 then
-- no suffix for base type
suffix = ""
else
-- index as suffix
suffix = i
end

def.metas["name" .. suffix] = STRING
def.metas["count" .. suffix] = INT
def.metas["max_count" .. suffix] = INT
def.metas["base_stack_max" .. suffix] = INT
def.metas["entity_infotext" .. suffix] = STRING
def.metas["stack_max_factor" .. suffix] = INT
def.metas["meta_itemstack" .. suffix] = INT
def.metas["itemstack_wear" .. suffix] = INT
end

wrench:register_node("drawers:wood" .. drawer_type, def)
wrench:register_node("drawers:acacia_wood" .. drawer_type, def)
wrench:register_node("drawers:aspen_wood" .. drawer_type, def)
wrench:register_node("drawers:junglewood" .. drawer_type, def)
wrench:register_node("drawers:pine_wood" .. drawer_type, def)

end
93 changes: 93 additions & 0 deletions wrench/nodes/technic.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@

-- Register wrench support for technic mod machines and other containers

local machine_invlist = {"src", "dst"}
local machine_invlist_upgrades = {"src", "dst", "upgrade1", "upgrade2"}

local function register_machine_node(nodename, tier)
local lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist
local metas = {
infotext = wrench.META_TYPE_STRING,
formspec = wrench.META_TYPE_STRING,
[tier.."_EU_demand"] = wrench.META_TYPE_INT,
[tier.."_EU_input"] = wrench.META_TYPE_INT,
tube_time = tier ~= "LV" and wrench.META_TYPE_INT or nil,
src_time = wrench.META_TYPE_INT,
}
wrench:register_node(nodename, {lists = lists, metas = metas})
end

-- base_machines table row format: name = { extra meta fields }
local defaults = { tiers = {"LV", "MV", "HV"} }
local base_machines = {
electric_furnace = defaults,
grinder = defaults,
compressor = defaults,
alloy_furnace = {tiers = {"LV", "MV"}},
extractor = {tiers = {"LV", "MV"}},
centrifuge = {tiers = {"MV"}},
freezer = {tiers = {"MV"}},
}

for name, data in pairs(base_machines) do
for _,tier in ipairs(data.tiers) do
local nodename = "technic:"..tier:lower().."_"..name
register_machine_node(nodename, tier)
if minetest.registered_nodes[nodename.."_active"] then
register_machine_node(nodename.."_active", tier)
end
end
end

---------------------------------------------------------------------
-- Special nodes

wrench:register_node("technic:coal_alloy_furnace", {
lists = {"fuel", "src", "dst"},
metas = {
infotext = wrench.META_TYPE_STRING,
fuel_totaltime = wrench.META_TYPE_FLOAT,
fuel_time = wrench.META_TYPE_FLOAT,
src_totaltime = wrench.META_TYPE_FLOAT,
src_time = wrench.META_TYPE_FLOAT
},
})

wrench:register_node("technic:coal_alloy_furnace_active", {
lists = {"fuel", "src", "dst"},
metas = {
infotext = wrench.META_TYPE_STRING,
fuel_totaltime = wrench.META_TYPE_FLOAT,
fuel_time = wrench.META_TYPE_FLOAT,
src_totaltime = wrench.META_TYPE_FLOAT,
src_time = wrench.META_TYPE_FLOAT
},
})

wrench:register_node("technic:tool_workshop", {
lists = {"src", "upgrade1", "upgrade2"},
metas = {
infotext = wrench.META_TYPE_STRING,
formspec = wrench.META_TYPE_STRING,
MV_EU_demand = wrench.META_TYPE_INT,
MV_EU_input = wrench.META_TYPE_INT,
tube_time = wrench.META_TYPE_INT
},
})

for tier, _ in pairs(technic.machines) do
for i = 0, 8 do
wrench:register_node("technic:"..tier:lower().."_battery_box"..i, {
lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist,
metas = {
infotext = wrench.META_TYPE_STRING,
formspec = wrench.META_TYPE_STRING,
[tier.."_EU_demand"] = wrench.META_TYPE_INT,
[tier.."_EU_supply"] = wrench.META_TYPE_INT,
[tier.."_EU_input"] = wrench.META_TYPE_INT,
internal_EU_charge = wrench.META_TYPE_INT,
last_side_shown = wrench.META_TYPE_INT
},
})
end
end
Loading