From b3297c2fa4aba2cfaed25bf8eaa92eafba05c96c Mon Sep 17 00:00:00 2001 From: Evert Date: Thu, 5 Apr 2018 08:57:30 +0300 Subject: [PATCH] Register casts, rework some API --- metal_melter/caster.lua | 28 +++++++++++++++------------- tinkering/pattern.lua | 22 ++++++++++++++++++++++ tinkering/register.lua | 19 ++++++++++++++++++- 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/metal_melter/caster.lua b/metal_melter/caster.lua index f792c16..f018417 100644 --- a/metal_melter/caster.lua +++ b/metal_melter/caster.lua @@ -11,9 +11,9 @@ metal_caster.max_metal = 16000 metal_caster.spec = metal_melter.spec metal_caster.casts = { - ingot_cast = {name = "Ingot Cast", result = "ingot", cost = metal_caster.spec.ingot, typenames = {"ingot"}}, - lump_cast = {name = "Lump Cast", result = "lump", cost = metal_caster.spec.lump, typenames = {"lump"}}, - gem_cast = {name = "Gem Cast", result = "crystal", cost = metal_caster.spec.crystal, typenames = {"crystal", "gem"}} + ingot = {description = "Ingot", result = "ingot", cost = metal_caster.spec.ingot, typenames = {"ingot"}}, + lump = {description = "Lump", result = "lump", cost = metal_caster.spec.lump, typenames = {"lump"}}, + gem = {description = "Gem", result = "crystal", cost = metal_caster.spec.crystal, typenames = {"crystal", "gem"}} } local metal_cache = {} @@ -203,6 +203,8 @@ local function get_cast_for(item) break end end + + print(typename, cast) return typename, cast end @@ -228,8 +230,8 @@ end local function get_cast_for_name(name) for index, value in pairs(metal_caster.casts) do - local mod = value.mod or "metal_melter" - if name == mod..":"..index then + local mod = value.mod_name or "metal_melter" + if name == mod..":"..index.."_cast" then return index end end @@ -333,8 +335,8 @@ local function caster_node_timer(pos, elapsed) local coolant_cost = result_cost / 4 if metal_count >= result_cost and coolant_count >= coolant_cost then local mtype, ctype = get_cast_for(caststack) - if mtype then - local cmod = metal_caster.casts[ctype].mod or "metal_melter" + if mtype and ctype then + local cmod = metal_caster.casts[ctype].mod_name or "metal_melter" local stack = ItemStack(cmod..":"..ctype) local output_stack = inv:get_stack("output", 1) local cast_stack = inv:get_stack("cast", 1) @@ -404,14 +406,14 @@ end -- Register a new cast function metal_caster.register_cast(name, data) - local modname = data.mod or "metal_melter" - local castname = modname..":"..name + local mod = data.mod_name or "metal_melter" + local castname = mod..":"..name.."_cast" minetest.register_craftitem(castname, { - description = data.name, - inventory_image = "caster_"..name..".png", - stack_max = 1, - groups = {cast=1} + description = data.description.." Cast", + inventory_image = "caster_"..name.."_cast.png", + stack_max = 1, + groups = {cast=1} }) if not metal_caster.casts[name] then diff --git a/tinkering/pattern.lua b/tinkering/pattern.lua index e69de29..26c55ea 100644 --- a/tinkering/pattern.lua +++ b/tinkering/pattern.lua @@ -0,0 +1,22 @@ +tinkering.pattern = {} + +-- Register a new pattern +function tinkering.register_pattern(name, data) + local mod = data.mod_name or "tinkering" + local desc = data.description + + tinkering.pattern[name] = data + + minetest.register_craftitem(mod..":"..name.."_pattern", { + description = desc.." Pattern", + inventory_image = "tinkering_"..name.."_pattern.png", + groups = {pattern=1} + }) +end + +-- Create blank pattern +minetest.register_craftitem("tinkering:blank_pattern", { + description = "Blank Pattern", + inventory_image = "tinkering_blank_pattern.png", + groups = {pattern=1} +}) diff --git a/tinkering/register.lua b/tinkering/register.lua index bd47e24..ea4063d 100644 --- a/tinkering/register.lua +++ b/tinkering/register.lua @@ -91,6 +91,24 @@ function tinkering.register_component(name, data) tinkering.components[name] = data end + local comp_desc = data.description:sub(4) + + -- Register cast + metal_melter.set_spec(name, metal_caster.spec.cast) + metal_caster.register_cast(name, { + description = comp_desc, + mod_name = mod, + result = name, + cost = metal_caster.spec.cast, + typenames = {name} + }) + + -- Register pattern + tinkering.register_pattern(name, { + description = comp_desc, + mod_name = mod + }) + -- Register components for all materials for m, s in pairs(tinkering.materials) do local component = m.."_"..name @@ -103,7 +121,6 @@ function tinkering.register_component(name, data) }) -- Make all components meltable - metal_melter.set_spec(name, metal_caster.spec.cast) metal_melter.register_melt(mod..":"..component, m, name) end end