From 9cc83ce5cce550e7810fcb36a7e19c933f2c892b Mon Sep 17 00:00:00 2001 From: flux <25628292+fluxionary@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:47:36 -0700 Subject: [PATCH] make compatability stuff less complicated --- stairsplus/API.md | 27 ++++++++++++++++++- stairsplus/api/node.lua | 3 +++ stairsplus/{compat1 => compat}/i3.lua | 23 ++++++++++++---- stairsplus/{compat2 => compat}/init.lua | 8 +++--- .../{compat2 => compat}/old_moreblocks.lua | 0 stairsplus/{compat2 => compat}/stairs.lua | 0 .../{compat1 => compat}/unified_inventory.lua | 21 ++++++++++++--- stairsplus/compat1/init.lua | 5 ---- stairsplus/init.lua | 4 +-- 9 files changed, 69 insertions(+), 22 deletions(-) rename stairsplus/{compat1 => compat}/i3.lua (76%) rename stairsplus/{compat2 => compat}/init.lua (72%) rename stairsplus/{compat2 => compat}/old_moreblocks.lua (100%) rename stairsplus/{compat2 => compat}/stairs.lua (100%) rename stairsplus/{compat1 => compat}/unified_inventory.lua (85%) delete mode 100644 stairsplus/compat1/init.lua diff --git a/stairsplus/API.md b/stairsplus/API.md index 7a7a45a..fe48b53 100644 --- a/stairsplus/API.md +++ b/stairsplus/API.md @@ -285,7 +285,14 @@ For the creation of crafting stations which can be used to transform nodes into * `update_metadata = function(meta, inv)` A function which updates the node's metadata (optional) -# legacy API +## Compat API + +For compatability w/ other mods + +* `function stairsplus.compat.override_stairs(name, node, overrides, meta)` + Override stairs registered w/ the `stairs` mod, and replace them w/ stairsplus-compatible nodes. + +# Legacy API Methods from the previous "moreblocks" version of stairsplus which are still provided so as not to break compatability with older mods. @@ -300,7 +307,25 @@ compatability with older mods. sounds = moreblocks.node_sound_wood_defaults(), }) ``` +* `stairsplus:register_micro(modname, subname, recipeitem, fields)` +* `stairsplus:register_panel(modname, subname, recipeitem, fields)` +* `stairsplus:register_slab(modname, subname, recipeitem, fields)` +* `stairsplus:register_slope(modname, subname, recipeitem, fields)` +* `stairsplus:register_stair(modname, subname, recipeitem, fields)` +* `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)` * `stairsplus:register_alias_all(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_micro(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_panel(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_slab(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_slope(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_stair(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_custom_subset_alias(subset, modname_old, subname_old, modname_new, subname_new)` * `stairsplus:register_alias_force_all(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_force_micro(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_force_panel(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_force_slab(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_force_slope(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_alias_force_stair(modname_old, subname_old, modname_new, subname_new)` +* `stairsplus:register_custom_subset_alias(subset, modname_old, subname_old, modname_new, subname_new)` diff --git a/stairsplus/api/node.lua b/stairsplus/api/node.lua index df2dce4..8920a16 100644 --- a/stairsplus/api/node.lua +++ b/stairsplus/api/node.lua @@ -14,6 +14,7 @@ api.shapes_by_node = {} api.node_by_shaped_node = {} api.shape_by_shaped_node = {} +api.registered_singles = {} api.registered_on_register_singles = {} function api.register_on_register_single(func) @@ -227,6 +228,8 @@ function api.register_single(node, shape, overrides, meta) shapes[shape] = true api.shapes_by_node[node] = shapes + table.insert(api.registered_singles, {node, shaped_name}) + for _, func in ipairs(api.registered_on_register_singles) do func(node, shaped_name) end diff --git a/stairsplus/compat1/i3.lua b/stairsplus/compat/i3.lua similarity index 76% rename from stairsplus/compat1/i3.lua rename to stairsplus/compat/i3.lua index 7959101..0e6e601 100644 --- a/stairsplus/compat1/i3.lua +++ b/stairsplus/compat/i3.lua @@ -11,7 +11,7 @@ i3.register_craft_type("stairsplus:craft_schema", { icon = "stairsplus_saw_button.png", }) -i3.register_craft_type("stairsplus:craft_schema", { +i3.register_craft_type("stairsplus:circular_saw", { description = "Stairs+ circular saw", icon = "stairsplus_saw_button.png", }) @@ -44,7 +44,7 @@ local function convert_schema_recipe_item(item) end end -api.register_on_register_craft_schema(function(schema) +local function on_register_craft_schema(schema) local recipe = table.copy(schema) recipe.output = convert_schema_recipe_item(recipe.output) @@ -77,14 +77,27 @@ api.register_on_register_craft_schema(function(schema) result = recipe.output, items = recipe.recipe, }) -end) +end -api.register_on_register_single(function(node, shaped_name) +for _, schema in ipairs(api.registered_recipe_schemas) do + on_register_craft_schema(schema) +end + +api.register_on_register_craft_schema(on_register_craft_schema) + +local function on_register_single(node, shaped_name) i3.register_craft({ type = "stairsplus:circular_saw", result = shaped_name, items = {node}, }) -end) +end + +for _, single in ipairs(api.registered_singles) do + local node, shaped_name = unpack(single) + on_register_single(node, shaped_name) +end + +api.register_on_register_single(on_register_single) diff --git a/stairsplus/compat2/init.lua b/stairsplus/compat/init.lua similarity index 72% rename from stairsplus/compat2/init.lua rename to stairsplus/compat/init.lua index 591d480..2d55bc9 100644 --- a/stairsplus/compat2/init.lua +++ b/stairsplus/compat/init.lua @@ -17,9 +17,9 @@ stairsplus.compat = { end, } -stairsplus.dofile("compat2", "stairs") -stairsplus.dofile("compat2", "old_moreblocks") +stairsplus.dofile("compat", "i3") +stairsplus.dofile("compat", "unified_inventory") --- stairsplus.dofile("compat", "inventory_managers") --- unified_inventory, sfinv, i3 +stairsplus.dofile("compat", "stairs") +stairsplus.dofile("compat", "old_moreblocks") diff --git a/stairsplus/compat2/old_moreblocks.lua b/stairsplus/compat/old_moreblocks.lua similarity index 100% rename from stairsplus/compat2/old_moreblocks.lua rename to stairsplus/compat/old_moreblocks.lua diff --git a/stairsplus/compat2/stairs.lua b/stairsplus/compat/stairs.lua similarity index 100% rename from stairsplus/compat2/stairs.lua rename to stairsplus/compat/stairs.lua diff --git a/stairsplus/compat1/unified_inventory.lua b/stairsplus/compat/unified_inventory.lua similarity index 85% rename from stairsplus/compat1/unified_inventory.lua rename to stairsplus/compat/unified_inventory.lua index 397c8ac..ed70330 100644 --- a/stairsplus/compat1/unified_inventory.lua +++ b/stairsplus/compat/unified_inventory.lua @@ -72,7 +72,7 @@ local function convert_schema_recipe_item(item) end end -api.register_on_register_craft_schema(function(schema) +local function on_register_craft_schema(schema) local recipe = table.copy(schema) recipe.output = convert_schema_recipe_item(recipe.output) @@ -104,9 +104,15 @@ api.register_on_register_craft_schema(function(schema) items = recipe.recipe, width = 3, }) -end) +end -api.register_on_register_single(function(node, shaped_name) +for _, schema in ipairs(api.registered_recipe_schemas) do + on_register_craft_schema(schema) +end + +api.register_on_register_craft_schema(on_register_craft_schema) + +local function on_register_single(node, shaped_name) unified_inventory.register_craft({ output = shaped_name, type = "stairsplus:circular_saw", @@ -116,6 +122,13 @@ api.register_on_register_single(function(node, shaped_name) unified_inventory.add_category_item("stairsplus:cuttable", node) unified_inventory.add_category_item("stairsplus:cut_node", shaped_name) -end) +end + +for _, single in ipairs(api.registered_singles) do + local node, shaped_name = unpack(single) + on_register_single(node, shaped_name) +end + +api.register_on_register_single(on_register_single) diff --git a/stairsplus/compat1/init.lua b/stairsplus/compat1/init.lua deleted file mode 100644 index 53e1c44..0000000 --- a/stairsplus/compat1/init.lua +++ /dev/null @@ -1,5 +0,0 @@ --- compatability stuff for after the API is created, but before we start using it - -stairsplus.dofile("compat1", "i3") -stairsplus.dofile("compat1", "unified_inventory") - diff --git a/stairsplus/init.lua b/stairsplus/init.lua index 4f279a6..f6f8da8 100644 --- a/stairsplus/init.lua +++ b/stairsplus/init.lua @@ -33,8 +33,6 @@ stairsplus.dofile("util") stairsplus.dofile("api", "init") -stairsplus.dofile("compat1", "init") - stairsplus.dofile("shapes", "init") stairsplus.dofile("groups", "init") stairsplus.dofile("craft_schemas", "init") @@ -42,6 +40,6 @@ stairsplus.dofile("craft_schemas", "init") stairsplus.dofile("resources", "init") stairsplus.dofile("circular_saw") -stairsplus.dofile("compat2", "init") +stairsplus.dofile("compat", "init") stairsplus.dofile("aliases")