From 2ec340d4e6d66ea1f32ef4151d2387439429ddcf Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sun, 26 Nov 2023 12:42:06 +0100 Subject: [PATCH] built on 26/11/2023 12:42:06 --- .../.github/workflows/luacheck.yml | 13 + basic_materials/.gitmodules | 3 + basic_materials/.luacheckrc | 31 +- basic_materials/README.md | 30 + basic_materials/aliases.lua | 34 ++ basic_materials/craftitems.lua | 188 ++++++ basic_materials/crafts.lua | 573 ++++++++++++++++++ basic_materials/electrical-electronic.lua | 86 --- basic_materials/init.lua | 11 +- basic_materials/metals.lua | 300 --------- basic_materials/misc.lua | 126 ---- basic_materials/mod.conf | 3 +- basic_materials/nodes.lua | 59 ++ basic_materials/plastics.lua | 56 -- basic_materials/sound_api_core/.luacheckrc | 5 + basic_materials/sound_api_core/LICENSE | 19 + basic_materials/sound_api_core/init.lua | 276 +++++++++ .../textures/basic_materials_aluminum_bar.png | Bin 0 -> 337 bytes .../basic_materials_aluminum_strip.png | Bin 0 -> 383 bytes .../basic_materials_aluminum_wire.png | Bin 0 -> 258 bytes .../basic_materials_carbon_steel_bar.png | Bin 0 -> 292 bytes .../textures/basic_materials_gold_strip.png | Bin 0 -> 358 bytes .../textures/basic_materials_lead_strip.png | Bin 0 -> 366 bytes .../basic_materials_stainless_steel_bar.png | Bin 0 -> 336 bytes .../basic_materials_stainless_steel_strip.png | Bin 0 -> 382 bytes .../basic_materials_stainless_steel_wire.png | Bin 0 -> 280 bytes doclib/formspec.lua | 32 +- minecart/manual.lua | 10 +- techage/collider/magnet.lua | 3 +- techage/manuals/ta4_lua_controller_EN.md | 62 +- tubelib2/internal2.lua | 10 + unified_inventory/init.lua | 4 +- unified_inventory/settingtypes.txt | 33 +- 33 files changed, 1304 insertions(+), 663 deletions(-) create mode 100644 basic_materials/.github/workflows/luacheck.yml create mode 100644 basic_materials/.gitmodules create mode 100644 basic_materials/README.md create mode 100644 basic_materials/aliases.lua create mode 100644 basic_materials/craftitems.lua create mode 100644 basic_materials/crafts.lua delete mode 100644 basic_materials/electrical-electronic.lua delete mode 100644 basic_materials/metals.lua delete mode 100644 basic_materials/misc.lua create mode 100644 basic_materials/nodes.lua delete mode 100644 basic_materials/plastics.lua create mode 100644 basic_materials/sound_api_core/.luacheckrc create mode 100644 basic_materials/sound_api_core/LICENSE create mode 100644 basic_materials/sound_api_core/init.lua create mode 100644 basic_materials/textures/basic_materials_aluminum_bar.png create mode 100644 basic_materials/textures/basic_materials_aluminum_strip.png create mode 100644 basic_materials/textures/basic_materials_aluminum_wire.png create mode 100644 basic_materials/textures/basic_materials_carbon_steel_bar.png create mode 100644 basic_materials/textures/basic_materials_gold_strip.png create mode 100644 basic_materials/textures/basic_materials_lead_strip.png create mode 100644 basic_materials/textures/basic_materials_stainless_steel_bar.png create mode 100644 basic_materials/textures/basic_materials_stainless_steel_strip.png create mode 100644 basic_materials/textures/basic_materials_stainless_steel_wire.png diff --git a/basic_materials/.github/workflows/luacheck.yml b/basic_materials/.github/workflows/luacheck.yml new file mode 100644 index 0000000..a13efa9 --- /dev/null +++ b/basic_materials/.github/workflows/luacheck.yml @@ -0,0 +1,13 @@ +name: luacheck +on: [push, pull_request] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: apt + run: sudo apt-get install -y luarocks + - name: luacheck install + run: luarocks install --local luacheck + - name: luacheck run + run: $HOME/.luarocks/bin/luacheck ./ diff --git a/basic_materials/.gitmodules b/basic_materials/.gitmodules new file mode 100644 index 0000000..55d4b48 --- /dev/null +++ b/basic_materials/.gitmodules @@ -0,0 +1,3 @@ +[submodule "sound_api_core"] + path = sound_api_core + url = https://github.com/mt-mods/sound_api_core.git diff --git a/basic_materials/.luacheckrc b/basic_materials/.luacheckrc index 55879b0..c1a52ae 100644 --- a/basic_materials/.luacheckrc +++ b/basic_materials/.luacheckrc @@ -1,30 +1,7 @@ -std = "lua51+minetest" -unused_args = false -allow_defined_top = true -max_line_length = 999 - -stds.minetest = { - read_globals = { - "DIR_DELIM", - "minetest", - "core", - "dump", - "vector", - "nodeupdate", - "VoxelManip", - "VoxelArea", - "PseudoRandom", - "ItemStack", - "default", - table = { - fields = { - "copy", - }, - }, - } +globals = { + "minetest", "basic_materials", "crafting", } read_globals = { - "default", - "moreores", -} + "default", +} \ No newline at end of file diff --git a/basic_materials/README.md b/basic_materials/README.md new file mode 100644 index 0000000..faa3446 --- /dev/null +++ b/basic_materials/README.md @@ -0,0 +1,30 @@ +# Basic Materials mod + +mod that adds basic material nodes and items + +## Install + +### Option 1: use content tab in minetest + +* click the content tab +* search for basic materials +* click install on basic materials + +### Option 2: download from [ContentDB](https://content.minetest.net/packages/VanessaE/basic_materials/) + +* click the above link or search for basic materials on ContentDB +* select the download button on the basic materials page +* extract the zip downloaded from the previous step +* place in your mods folder + +### Option 3: use git + +* `git clone https://github.com/mt-mods/basic_materials.git` +* `cd basic_materials` +* `git submodule init` +* `git submodule update` + +to update please use the following commands starting inside the mod directory + +* `git submodule sync` +* `git submodule update` \ No newline at end of file diff --git a/basic_materials/aliases.lua b/basic_materials/aliases.lua new file mode 100644 index 0000000..30185f4 --- /dev/null +++ b/basic_materials/aliases.lua @@ -0,0 +1,34 @@ +minetest.register_alias("homedecor:plastic_sheeting", "basic_materials:plastic_sheet") +minetest.register_alias("homedecor:plastic_strips", "basic_materials:plastic_strip") +minetest.register_alias("homedecor:empty_spool", "basic_materials:empty_spool") +minetest.register_alias("homedecor:oil_extract", "basic_materials:oil_extract") +minetest.register_alias("homedecor:paraffin", "basic_materials:paraffin") +minetest.register_alias("homedecor:plastic_base", "basic_materials:paraffin") +minetest.register_alias("homedecor:terracotta_base", "basic_materials:terracotta_base") +minetest.register_alias("gloopblocks:wet_cement", "basic_materials:wet_cement") +minetest.register_alias("gloopblocks:cement", "basic_materials:cement_block") +minetest.register_alias("technic:concrete", "basic_materials:concrete_block") +minetest.register_alias("homedecor:ic", "basic_materials:ic") +minetest.register_alias("homedecor:motor", "basic_materials:motor") +minetest.register_alias("technic:motor", "basic_materials:motor") +minetest.register_alias("homedecor:heating_element", "basic_materials:heating_element") +minetest.register_alias("homedecor:power_crystal", "basic_materials:energy_crystal_simple") +minetest.register_alias("homedecor:copper_wire", "basic_materials:copper_wire") +minetest.register_alias("technic:fine_copper_wire", "basic_materials:copper_wire") +minetest.register_alias("technic:fine_silver_wire", "basic_materials:silver_wire") +minetest.register_alias("technic:fine_gold_wire", "basic_materials:gold_wire") +minetest.register_alias("homedecor:steel_wire", "basic_materials:steel_wire") +minetest.register_alias("homedecor:brass_ingot", "basic_materials:brass_ingot") +minetest.register_alias("technic:brass_ingot", "basic_materials:brass_ingot") +minetest.register_alias("technic:brass_block", "basic_materials:brass_block") +minetest.register_alias("homedecor:copper_strip", "basic_materials:copper_strip") +minetest.register_alias("homedecor:steel_strip", "basic_materials:steel_strip") +minetest.register_alias("homedecor:chainlink_brass", "basic_materials:chainlink_brass") +minetest.register_alias("chains:chain", "basic_materials:chain_steel") +minetest.register_alias("chains:chain_brass", "basic_materials:chain_brass") +minetest.register_alias("pipeworks:gear", "basic_materials:gear_steel") +minetest.register_alias("technic:rebar", "basic_materials:steel_bar") + +minetest.register_alias_force("mesecons_materials:silicon", "basic_materials:silicon") +minetest.register_alias_force("glooptest:chainlink", "basic_materials:chainlink_steel") +minetest.register_alias_force("homedecor:chainlink_steel", "basic_materials:chainlink_steel") \ No newline at end of file diff --git a/basic_materials/craftitems.lua b/basic_materials/craftitems.lua new file mode 100644 index 0000000..0040c67 --- /dev/null +++ b/basic_materials/craftitems.lua @@ -0,0 +1,188 @@ +local S = minetest.get_translator("basic_materials") + +minetest.register_craftitem("basic_materials:plastic_sheet", { + description = S("Plastic sheet"), + inventory_image = "basic_materials_plastic_sheet.png", +}) + +minetest.register_craftitem("basic_materials:plastic_strip", { + description = S("Plastic strips"), + groups = { strip = 1 }, + inventory_image = "basic_materials_plastic_strip.png", +}) + +minetest.register_craftitem("basic_materials:empty_spool", { + description = S("Empty wire spool"), + inventory_image = "basic_materials_empty_spool.png" +}) + +minetest.register_craftitem("basic_materials:oil_extract", { + description = S("Oil extract"), + inventory_image = "basic_materials_oil_extract.png", +}) + +minetest.register_craftitem("basic_materials:paraffin", { + description = S("Unprocessed paraffin"), + inventory_image = "basic_materials_paraffin.png", +}) + +minetest.register_craftitem("basic_materials:terracotta_base", { + description = S("Uncooked Terracotta Base"), + inventory_image = "basic_materials_terracotta_base.png", +}) + +minetest.register_craftitem("basic_materials:wet_cement", { + description = S("Wet Cement"), + inventory_image = "basic_materials_wet_cement.png", +}) + +minetest.register_craftitem("basic_materials:silicon", { + description = S("Silicon lump"), + inventory_image = "basic_materials_silicon.png", +}) + +minetest.register_craftitem("basic_materials:ic", { + description = S("Simple Integrated Circuit"), + inventory_image = "basic_materials_ic.png", +}) + +minetest.register_craftitem("basic_materials:motor", { + description = S("Simple Motor"), + inventory_image = "basic_materials_motor.png", +}) + +minetest.register_craftitem("basic_materials:heating_element", { + description = S("Heating element"), + inventory_image = "basic_materials_heating_element.png", +}) + +minetest.register_craftitem("basic_materials:energy_crystal_simple", { + description = S("Simple energy crystal"), + inventory_image = "basic_materials_energy_crystal.png", +}) + +minetest.register_craftitem("basic_materials:steel_wire", { + description = S("Spool of steel wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_steel_wire.png" +}) + +minetest.register_craftitem("basic_materials:copper_wire", { + description = S("Spool of copper wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_copper_wire.png" +}) + +minetest.register_craftitem("basic_materials:silver_wire", { + description = S("Spool of silver wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_silver_wire.png" +}) + +minetest.register_craftitem("basic_materials:gold_wire", { + description = S("Spool of gold wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_gold_wire.png" +}) + +minetest.register_craftitem("basic_materials:stainless_steel_wire", { + description = S("Spool of stainless steel wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_stainless_steel_wire.png" +}) + +minetest.register_craftitem("basic_materials:aluminum_wire", { + description = S("Spool of aluminum wire"), + groups = { wire = 1 }, + inventory_image = "basic_materials_aluminum_wire.png" +}) + +minetest.register_craftitem("basic_materials:steel_strip", { + description = S("Steel Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_steel_strip.png" +}) + +minetest.register_craftitem("basic_materials:copper_strip", { + description = S("Copper Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_copper_strip.png" +}) + +minetest.register_craftitem("basic_materials:lead_strip", { + description = S("Lead Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_lead_strip.png" +}) + +minetest.register_craftitem("basic_materials:gold_strip", { + description = S("Gold Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_gold_strip.png" +}) + +minetest.register_craftitem("basic_materials:stainless_steel_strip", { + description = S("Stainless Steel Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_stainless_steel_strip.png" +}) + +minetest.register_craftitem("basic_materials:aluminum_strip", { + description = S("Aluminum Strip"), + groups = { strip = 1 }, + inventory_image = "basic_materials_aluminum_strip.png" +}) + +minetest.register_craftitem("basic_materials:steel_bar", { + description = S("Steel Bar"), + inventory_image = "basic_materials_steel_bar.png", +}) + +minetest.register_craftitem("basic_materials:carbon_steel_bar", { + description = S("Carbon Steel Bar"), + inventory_image = "basic_materials_carbon_steel_bar.png", +}) + +minetest.register_craftitem("basic_materials:stainless_steel_bar", { + description = S("Stainless Steel Bar"), + inventory_image = "basic_materials_stainless_steel_bar.png", +}) + +minetest.register_craftitem("basic_materials:aluminum_bar", { + description = S("Aluminum Bar"), + inventory_image = "basic_materials_aluminum_bar.png", +}) + +minetest.register_craftitem("basic_materials:chainlink_brass", { + description = S("Chainlinks (brass)"), + groups = { chainlinks = 1 }, + inventory_image = "basic_materials_chainlink_brass.png" +}) + +minetest.register_craftitem("basic_materials:chainlink_steel", { + description = S("Chainlinks (steel)"), + groups = { chainlinks = 1 }, + inventory_image = "basic_materials_chainlink_steel.png" +}) + +minetest.register_craftitem("basic_materials:brass_ingot", { + description = S("Brass Ingot"), + inventory_image = "basic_materials_brass_ingot.png", +}) + +minetest.register_craftitem("basic_materials:gear_steel", { + description = S("Steel gear"), + inventory_image = "basic_materials_gear_steel.png" +}) + +minetest.register_craftitem("basic_materials:padlock", { + description = S("Padlock"), + inventory_image = "basic_materials_padlock.png" +}) + +if minetest.get_modpath("hades_materials") then + minetest.register_alias_force("basic_materials:plastic_sheet", "hades_materials:plastic_sheeting") + minetest.register_alias_force("basic_materials:paraffin", "hades_materials:plastic_base") + minetest.register_alias_force("basic_materials:silicon", "hades_materials:silicon") +end + diff --git a/basic_materials/crafts.lua b/basic_materials/crafts.lua new file mode 100644 index 0000000..8526c9a --- /dev/null +++ b/basic_materials/crafts.lua @@ -0,0 +1,573 @@ +local materials = { + dirt = "default:dirt", + sand = "default:sand", + gravel = "default:gravel", + copper_ingot = "default:copper_ingot", + steel_ingot = "default:steel_ingot", + gold_ingot = "default:gold_ingot", + tin_ingot = "default:tin_ingot", + mese_crystal_fragment = "default:mese_crystal_fragment", + torch = "default:torch", + diamond = "default:diamond", + clay_lump = "default:clay_lump", + water_bucket = "bucket:bucket_water", + empty_bucket = "bucket:bucket_empty", + dye_dark_grey = "dye:dark_grey", + silicon = "mesecons_materials:silicon", +} + +if minetest.get_modpath("moreores") then + materials.silver_ingot = "moreores:silver_ingot" +end + +if minetest.get_modpath("technic") then + materials.lead_ingot = "technic:lead_ingot" + materials.carbon_steel_ingot = "technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "technic:stainless_steel_ingot" +end + +if minetest.get_modpath("aloz") then + materials.aluminum_ingot = "aloz:aluminum_ingot" +end + +if minetest.get_modpath("techage") then + materials.aluminum_ingot = "techage:aluminum" +end + +if minetest.get_modpath("mcl_core") then + materials = { + dirt = "mcl_core:dirt", + sand = "mcl_core:sand", + gravel = "mcl_core:gravel", + steel_ingot = "mcl_core:iron_ingot", + gold_ingot = "mcl_core:gold_ingot", + mese_crystal_fragment = "mesecons:redstone", + torch = "mcl_torches:torch", + diamond = "mcl_core:diamond", + clay_lump = "mcl_core:clay_lump", + water_bucket = "mcl_buckets:bucket_water", + empty_bucket = "mcl_buckets:bucket_empty", + dye_dark_grey = "mcl_dye:dark_grey", + -- Use iron where no equivalent + copper_ingot = "mcl_core:iron_ingot", + tin_ingot = "mcl_core:iron_ingot", + silver_ingot = "mcl_core:iron_ingot", + silicon = "mesecons_materials:silicon", + } +elseif minetest.get_modpath("fl_ores") and minetest.get_modpath("fl_stone") then + materials = { + dirt = "fl_topsoil:dirt", + sand = "fl_stone:sand", + gravel = "fl_topsoil:gravel", + steel_ingot = "fl_ores:iron_ingot", + gold_ingot = "fl_ores:gold_ingot", + mese_crystal_fragment = "fl_ores:iron_ingot", + torch = "fl_light_sources:torch", + diamond = "fl_ores:diamond", + clay_lump = "fl_bricks:clay_lump", + water_bucket = "fl_bucket:bucket_water", + empty_bucket = "fl_bucket:bucket", + dye_dark_grey = "fl_dyes:dark_grey_dye", + copper_ingot = "fl_ores:copper_ingot", + tin_ingot = "fl_ores:tin_ingot", + silver_ingot = "fl_ores:iron_ingot", + silicon = "mesecons_materials:silicon", + } +elseif minetest.get_modpath("rp_default") then + materials = { + dirt = "rp_default:dirt", + sand = "rp_default:sand", + gravel = "rp_default:gravel", + steel_ingot = "rp_default:ingot_steel", + gold_ingot = "rp_default:ingot_gold", + mese_crystal_fragment = "rp_default:ingot_steel", + torch = "rp_default:torch", + diamond = "rp_default:pearl", + clay_lump = "rp_default:ingot_steel", + water_bucket = "rp_default:swamp_dirt", + empty_bucket = "rp_default:dirt", + dye_dark_grey = "rp_default:ingot_steel", + copper_ingot = "rp_default:ingot_copper", + tin_ingot = "rp_default:ingot_tin", + silver_ingot = "rp_default:ingot_steel", + silicon = "rp_default:ingot_steel", + } +elseif minetest.get_modpath("hades_core") then + materials = { + dirt = "hades_core:dirt", + sand = "hades_core:fertile_sand", + gravel = "hades_core:gravel", + steel_ingot = "hades_core:steel_ingot", + gold_ingot = "hades_core:gold_ingot", + mese_crystal_fragment = "hades_core:mese_crystal_fragment", + torch = "hades_torches:torch", + diamond = "hades_core:diamond", + clay_lump = "hades_core:clay_lump", + dye_dark_grey = "hades_dye:dark_grey", + copper_ingot = "hades_core:copper_ingot", + tin_ingot = "hades_core:tin_ingot", + --[[ + Since hades doesnt have buckets or water for the user, + using dirt from near water to pull the water out + ]] + water_bucket = "hades_core:dirt", + empty_bucket = "hades_core:fertile_sand", + -- Set this to steel unless hadesextraores is present + silver_ingot = "hades_core:steel_ingot", + silicon = "hades_materials:silicon", + } + + if minetest.get_modpath("hades_bucket") then + materials["water_bucket"] = "hades_bucket:bucket_water" + materials["empty_bucket"] = "hades_bucket:bucket_empty" + end + if minetest.get_modpath("hades_extraores") then + materials["silver_ingot"] = "hades_extraores:silver_ingot" + materials["aluminum_ingot"] = "hades_extraores:aluminum_ingot" + end + if minetest.get_modpath("hades_technic") then + materials.lead_ingot = "hades_technic:lead_ingot" + materials.carbon_steel_ingot = "hades_technic:carbon_steel_ingot" + materials.stainless_steel_ingot = "hades_technic:stainless_steel_ingot" + end +end + +local have_hades_materials = minetest.get_modpath("hades_materials") + +local function compress_craft(input) + local buffer = {} + for _, item in pairs(input) do + if type(item)=="table" then + for _, inneritem in pairs(item) do + buffer[inneritem] = (buffer[inneritem] or 0) + 1 + end + elseif item ~= "" then + buffer[item] = (buffer[item] or 0) + 1 + end + end + + local output = {} + for item, count in pairs(buffer) do + output[#output + 1] = item .. " " .. count + end + return output +end + +local function register_craft(input) + if minetest.get_modpath("rp_crafting") then + local rp_craft = compress_craft(input.recipe) + if #rp_craft > crafting.MAX_INPUTS then + minetest.log("error", "[basic_materials] unable to register craft for " .. input.output) + return + end + + crafting.register_craft({ + output = input.output, + items = rp_craft + }) + else + minetest.register_craft(input) + end +end + +-- Craft recipes +register_craft({ + output = "basic_materials:chainlink_brass 12", + recipe = { + {"", "basic_materials:brass_ingot", "basic_materials:brass_ingot"}, + {"basic_materials:brass_ingot", "", "basic_materials:brass_ingot"}, + {"basic_materials:brass_ingot", "basic_materials:brass_ingot", ""}, + }, +}) + +register_craft({ + output = "basic_materials:chain_steel 2", + recipe = { + {"basic_materials:chainlink_steel"}, + {"basic_materials:chainlink_steel"}, + {"basic_materials:chainlink_steel"} + } +}) + +register_craft({ + output = "basic_materials:chain_brass 2", + recipe = { + {"basic_materials:chainlink_brass"}, + {"basic_materials:chainlink_brass"}, + {"basic_materials:chainlink_brass"} + } +}) + +register_craft( { + type = "shapeless", + output = "basic_materials:brass_ingot 9", + recipe = {"basic_materials:brass_block"}, +}) + +register_craft( { + output = "basic_materials:brass_block", + recipe = { + {"basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot"}, + {"basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot"}, + {"basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot"}, + }, +}) + +register_craft( { + output = "basic_materials:plastic_strip 9", + recipe = { + {"basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet"} + }, +}) + +register_craft( { + output = "basic_materials:empty_spool 3", + recipe = { + {"basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet"}, + {"", "basic_materials:plastic_sheet", ""}, + {"basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet"} + }, +}) + +if have_hades_materials then + minetest.clear_craft({ + type = "shapeless", + recipe = {"group:leaves", "group:leaves", "group:leaves", "group:leaves", "group:leaves", "group:leaves"} + }) +end + +register_craft({ + type = "shapeless", + output = "basic_materials:oil_extract 2", + recipe = {"group:leaves", "group:leaves", "group:leaves", "group:leaves", "group:leaves", "group:leaves"} +}) + +-- Cooking recipes +if not have_hades_materials then + minetest.register_craft({ + type = "cooking", + output = "basic_materials:plastic_sheet", + recipe = "basic_materials:paraffin", + }) +end + +minetest.register_craft({ + type = "cooking", + output = "basic_materials:paraffin", + recipe = "basic_materials:oil_extract", +}) + +minetest.register_craft({ + type = "cooking", + output = "basic_materials:cement_block", + recipe = "basic_materials:wet_cement", + cooktime = 8 +}) + +-- Fuel recipes +minetest.register_craft({ + type = "fuel", + recipe = "basic_materials:plastic_sheet", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "basic_materials:oil_extract", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "basic_materials:paraffin", + burntime = 30, +}) + +register_craft({ + output = "basic_materials:concrete_block 6", + recipe = { + {"group:sand", "basic_materials:wet_cement", materials.gravel}, + {"basic_materials:steel_bar", "basic_materials:wet_cement", "basic_materials:steel_bar"}, + {materials.gravel, "basic_materials:wet_cement", "group:sand"}, + } +}) + +register_craft( { + output = "basic_materials:motor 2", + recipe = { + {materials.mese_crystal_fragment, "basic_materials:copper_wire", "basic_materials:plastic_sheet"}, + {materials.copper_ingot, materials.steel_ingot, materials.steel_ingot}, + {materials.mese_crystal_fragment, "basic_materials:copper_wire", "basic_materials:plastic_sheet"} + }, + replacements = { + {"basic_materials:copper_wire", "basic_materials:empty_spool"}, + {"basic_materials:copper_wire", "basic_materials:empty_spool"}, + } +}) + +register_craft( { + output = "basic_materials:heating_element 2", + recipe = { + {materials.copper_ingot, materials.mese_crystal_fragment, materials.copper_ingot} + }, +}) + +register_craft({ + --type = "shapeless", + output = "basic_materials:energy_crystal_simple 2", + recipe = { + {materials.mese_crystal_fragment, materials.torch, materials.mese_crystal_fragment}, + {materials.diamond, materials.gold_ingot, materials.diamond} + }, +}) + +register_craft( { + output = "basic_materials:copper_wire 2", + type = "shapeless", + recipe = { + materials.copper_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, +}) + +register_craft( { + output = "basic_materials:gold_wire 2", + type = "shapeless", + recipe = { + materials.gold_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, +}) + +register_craft( { + output = "basic_materials:steel_wire 2", + type = "shapeless", + recipe = { + materials.steel_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, +}) + +if materials.stainless_steel_ingot then + register_craft( { + output = "basic_materials:stainless_steel_wire 2", + type = "shapeless", + recipe = { + materials.stainless_steel_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, + }) +end + +if materials.aluminum_ingot then + register_craft( { + output = "basic_materials:aluminum_wire 2", + type = "shapeless", + recipe = { + materials.aluminum_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, + }) +end + +register_craft( { + output = "basic_materials:steel_strip 12", + recipe = { + {"", materials.steel_ingot, ""}, + {materials.steel_ingot, "", ""}, + }, +}) + +register_craft( { + output = "basic_materials:copper_strip 12", + recipe = { + {"", materials.copper_ingot, ""}, + {materials.copper_ingot, "", ""}, + }, +}) + +register_craft( { + output = "basic_materials:gold_strip 12", + recipe = { + {"", materials.gold_ingot, ""}, + {materials.gold_ingot, "", ""}, + }, +}) + +if materials.lead_ingot then + register_craft( { + output = "basic_materials:lead_strip 12", + recipe = { + {"", materials.lead_ingot, ""}, + {materials.lead_ingot, "", ""}, + }, + }) +end + +if materials.stainless_steel_ingot then + register_craft( { + output = "basic_materials:stainless_steel_strip 12", + recipe = { + {"", materials.stainless_steel_ingot, ""}, + {materials.stainless_steel_ingot, "", ""}, + }, + }) +end + +if materials.aluminum_ingot then + register_craft( { + output = "basic_materials:aluminum_strip 12", + recipe = { + {"", materials.aluminum_ingot, ""}, + {materials.aluminum_ingot, "", ""}, + }, + }) +end + +register_craft( { + output = "basic_materials:steel_bar 6", + recipe = { + {"", "", materials.steel_ingot}, + {"", materials.steel_ingot, ""}, + {materials.steel_ingot, "", ""}, + }, +}) + +if materials.carbon_steel_ingot then + register_craft( { + output = "basic_materials:carbon_steel_bar 6", + recipe = { + {"", "", materials.carbon_steel_ingot}, + {"", materials.carbon_steel_ingot, ""}, + {materials.carbon_steel_ingot, "", ""}, + }, + }) +end + +if materials.stainless_steel_ingot then + register_craft( { + output = "basic_materials:stainless_steel_bar 6", + recipe = { + {"", "", materials.stainless_steel_ingot}, + {"", materials.stainless_steel_ingot, ""}, + {materials.stainless_steel_ingot, "", ""}, + }, + }) +end + +if materials.aluminum_ingot then + register_craft( { + output = "basic_materials:aluminum_bar 6", + recipe = { + {"", "", materials.aluminum_ingot}, + {"", materials.aluminum_ingot, ""}, + {materials.aluminum_ingot, "", ""}, + }, + }) +end + +register_craft( { + output = "basic_materials:padlock 2", + recipe = { + {"basic_materials:steel_bar"}, + {materials.steel_ingot}, + {materials.steel_ingot}, + }, +}) + +register_craft({ + output = "basic_materials:chainlink_steel 12", + recipe = { + {"", materials.steel_ingot, materials.steel_ingot}, + {materials.steel_ingot, "", materials.steel_ingot}, + {materials.steel_ingot, materials.steel_ingot, ""}, + }, +}) + +register_craft( { + output = "basic_materials:gear_steel 6", + recipe = { + {"", materials.steel_ingot, ""}, + {materials.steel_ingot,"basic_materials:chainlink_steel", materials.steel_ingot}, + {"", materials.steel_ingot, ""} + }, +}) + +register_craft( { + type = "shapeless", + output = "basic_materials:terracotta_base 8", + recipe = { + materials.water_bucket, + materials.clay_lump, + materials.gravel, + }, + replacements = {{materials.water_bucket, materials.empty_bucket}}, +}) + +register_craft({ + type = "shapeless", + output = "basic_materials:wet_cement 3", + recipe = { + materials.dirt, + materials.dye_dark_grey, + materials.dye_dark_grey, + materials.dye_dark_grey, + materials.water_bucket + }, + replacements = {{materials.water_bucket, materials.empty_bucket}}, +}) + +if not have_hades_materials then + register_craft( { + output = materials.silicon.." 4", + recipe = { + {materials.sand, materials.sand}, + {materials.sand, materials.steel_ingot}, + }, + }) +end + +register_craft( { + output = "basic_materials:ic 4", + recipe = { + {materials.silicon, materials.silicon}, + {materials.silicon, materials.copper_ingot}, + }, +}) + +-- Without moreores, there still should be a way to create brass. +register_craft( { + output = "basic_materials:brass_ingot 9", + recipe = { + {materials.copper_ingot, materials.tin_ingot, materials.copper_ingot}, + {materials.gold_ingot, materials.copper_ingot, materials.tin_ingot}, + {materials.copper_ingot, materials.tin_ingot, materials.copper_ingot}, + }, +}) + +if materials.silver_ingot then + register_craft( { + output = "basic_materials:silver_wire 2", + type = "shapeless", + recipe = { + materials.silver_ingot, + "basic_materials:empty_spool", + "basic_materials:empty_spool", + }, + }) + + register_craft( { + type = "shapeless", + output = "basic_materials:brass_ingot 3", + recipe = { + materials.copper_ingot, + materials.copper_ingot, + materials.silver_ingot, + }, + }) +end diff --git a/basic_materials/electrical-electronic.lua b/basic_materials/electrical-electronic.lua deleted file mode 100644 index 91fac4e..0000000 --- a/basic_materials/electrical-electronic.lua +++ /dev/null @@ -1,86 +0,0 @@ --- Translation support -local S = minetest.get_translator("basic_materials") - --- items - -minetest.register_craftitem("basic_materials:silicon", { - description = S("Silicon lump"), - inventory_image = "basic_materials_silicon.png", -}) - -minetest.register_craftitem("basic_materials:ic", { - description = S("Simple Integrated Circuit"), - inventory_image = "basic_materials_ic.png", -}) - -minetest.register_craftitem("basic_materials:motor", { - description = S("Simple Motor"), - inventory_image = "basic_materials_motor.png", -}) - -minetest.register_craftitem("basic_materials:heating_element", { - description = S("Heating element"), - inventory_image = "basic_materials_heating_element.png", -}) - -minetest.register_craftitem("basic_materials:energy_crystal_simple", { - description = S("Simple energy crystal"), - inventory_image = "basic_materials_energy_crystal.png", -}) - --- crafts - -minetest.register_craft( { - output = "mesecons_materials:silicon 4", - recipe = { - { "default:sand", "default:sand" }, - { "default:sand", "default:steel_ingot" }, - }, -}) - -minetest.register_craft( { - output = "basic_materials:ic 4", - recipe = { - { "mesecons_materials:silicon", "mesecons_materials:silicon" }, - { "mesecons_materials:silicon", "default:copper_ingot" }, - }, -}) - -minetest.register_craft( { - output = "basic_materials:motor 2", - recipe = { - { "default:mese_crystal_fragment", "basic_materials:copper_wire", "basic_materials:plastic_sheet" }, - { "default:copper_ingot", "default:steel_ingot", "default:steel_ingot" }, - { "default:mese_crystal_fragment", "basic_materials:copper_wire", "basic_materials:plastic_sheet" } - }, - replacements = { - { "basic_materials:copper_wire", "basic_materials:empty_spool" }, - { "basic_materials:copper_wire", "basic_materials:empty_spool" }, - } -}) - -minetest.register_craft( { - output = "basic_materials:heating_element 2", - recipe = { - { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" } - }, -}) - -minetest.register_craft({ - --type = "shapeless", - output = "basic_materials:energy_crystal_simple 2", - recipe = { - { "default:mese_crystal_fragment", "default:torch", "default:mese_crystal_fragment" }, - { "default:diamond", "default:gold_ingot", "default:diamond" } - }, -}) - --- aliases - -minetest.register_alias("homedecor:ic", "basic_materials:ic") -minetest.register_alias("homedecor:motor", "basic_materials:motor") -minetest.register_alias("technic:motor", "basic_materials:motor") -minetest.register_alias("homedecor:heating_element", "basic_materials:heating_element") -minetest.register_alias("homedecor:power_crystal", "basic_materials:energy_crystal_simple") - -minetest.register_alias_force("mesecons_materials:silicon", "basic_materials:silicon") diff --git a/basic_materials/init.lua b/basic_materials/init.lua index 348c059..ad5ea10 100644 --- a/basic_materials/init.lua +++ b/basic_materials/init.lua @@ -4,12 +4,11 @@ -- This mod supplies all those little random craft items that everyone always -- seems to need, such as metal bars (ala rebar), plastic, wire, and so on. -local modpath = minetest.get_modpath("basic_materials") - basic_materials = {} basic_materials.mod = { author = "Vanessa Dannenberg" } +basic_materials.modpath = minetest.get_modpath("basic_materials") -dofile(modpath.."/metals.lua") -dofile(modpath.."/plastics.lua") -dofile(modpath.."/electrical-electronic.lua") -dofile(modpath.."/misc.lua") +dofile(basic_materials.modpath .. "/nodes.lua") +dofile(basic_materials.modpath .. "/craftitems.lua") +dofile(basic_materials.modpath .. "/crafts.lua") +dofile(basic_materials.modpath .. "/aliases.lua") \ No newline at end of file diff --git a/basic_materials/metals.lua b/basic_materials/metals.lua deleted file mode 100644 index 0a3243b..0000000 --- a/basic_materials/metals.lua +++ /dev/null @@ -1,300 +0,0 @@ --- Translation support -local S = minetest.get_translator("basic_materials") - --- items - -minetest.register_craftitem("basic_materials:steel_wire", { - description = S("Spool of steel wire"), - groups = { wire = 1 }, - inventory_image = "basic_materials_steel_wire.png" -}) - -minetest.register_craftitem("basic_materials:copper_wire", { - description = S("Spool of copper wire"), - groups = { wire = 1 }, - inventory_image = "basic_materials_copper_wire.png" -}) - -minetest.register_craftitem("basic_materials:silver_wire", { - description = S("Spool of silver wire"), - groups = { wire = 1 }, - inventory_image = "basic_materials_silver_wire.png" -}) - -minetest.register_craftitem("basic_materials:gold_wire", { - description = S("Spool of gold wire"), - groups = { wire = 1 }, - inventory_image = "basic_materials_gold_wire.png" -}) - -minetest.register_craftitem("basic_materials:steel_strip", { - description = S("Steel Strip"), - groups = { strip = 1 }, - inventory_image = "basic_materials_steel_strip.png" -}) - -minetest.register_craftitem("basic_materials:copper_strip", { - description = S("Copper Strip"), - groups = { strip = 1 }, - inventory_image = "basic_materials_copper_strip.png" -}) - -minetest.register_craftitem("basic_materials:steel_bar", { - description = S("Steel Bar"), - inventory_image = "basic_materials_steel_bar.png", -}) - -minetest.register_craftitem("basic_materials:chainlink_brass", { - description = S("Chainlinks (brass)"), - groups = { chainlinks = 1 }, - inventory_image = "basic_materials_chainlink_brass.png" -}) - -minetest.register_craftitem("basic_materials:chainlink_steel", { - description = S("Chainlinks (steel)"), - groups = { chainlinks = 1 }, - inventory_image = "basic_materials_chainlink_steel.png" -}) - -minetest.register_craftitem("basic_materials:brass_ingot", { - description = S("Brass Ingot"), - inventory_image = "basic_materials_brass_ingot.png", -}) - -minetest.register_craftitem("basic_materials:gear_steel", { - description = S("Steel gear"), - inventory_image = "basic_materials_gear_steel.png" -}) - -minetest.register_craftitem("basic_materials:padlock", { - description = S("Padlock"), - inventory_image = "basic_materials_padlock.png" -}) - --- nodes - -local chains_sbox = { - type = "fixed", - fixed = { -0.1, -0.5, -0.1, 0.1, 0.5, 0.1 } -} - -minetest.register_node("basic_materials:chain_steel", { - description = S("Chain (steel, hanging)"), - drawtype = "mesh", - mesh = "basic_materials_chains.obj", - tiles = {"basic_materials_chain_steel.png"}, - walkable = false, - climbable = true, - sunlight_propagates = true, - paramtype = "light", - inventory_image = "basic_materials_chain_steel_inv.png", - groups = {cracky=3}, - selection_box = chains_sbox, -}) - -minetest.register_node("basic_materials:chain_brass", { - description = S("Chain (brass, hanging)"), - drawtype = "mesh", - mesh = "basic_materials_chains.obj", - tiles = {"basic_materials_chain_brass.png"}, - walkable = false, - climbable = true, - sunlight_propagates = true, - paramtype = "light", - inventory_image = "basic_materials_chain_brass_inv.png", - groups = {cracky=3}, - selection_box = chains_sbox, -}) - -minetest.register_node("basic_materials:brass_block", { - description = S("Brass Block"), - tiles = { "basic_materials_brass_block.png" }, - is_ground_content = false, - groups = {cracky=1, level=2}, - sounds = default.node_sound_metal_defaults() -}) - --- crafts - -minetest.register_craft( { - output = "basic_materials:copper_wire 2", - type = "shapeless", - recipe = { - "default:copper_ingot", - "basic_materials:empty_spool", - "basic_materials:empty_spool", - }, -}) - -minetest.register_craft( { - output = "basic_materials:silver_wire 2", - type = "shapeless", - recipe = { - "moreores:silver_ingot", - "basic_materials:empty_spool", - "basic_materials:empty_spool", - }, -}) - -minetest.register_craft( { - output = "basic_materials:gold_wire 2", - type = "shapeless", - recipe = { - "default:gold_ingot", - "basic_materials:empty_spool", - "basic_materials:empty_spool", - }, -}) - -minetest.register_craft( { - output = "basic_materials:steel_wire 2", - type = "shapeless", - recipe = { - "default:steel_ingot", - "basic_materials:empty_spool", - "basic_materials:empty_spool", - }, -}) - -minetest.register_craft( { - output = "basic_materials:steel_strip 12", - recipe = { - { "", "default:steel_ingot", "" }, - { "default:steel_ingot", "", "" }, - }, -}) - -minetest.register_craft( { - output = "basic_materials:copper_strip 12", - recipe = { - { "", "default:copper_ingot", "" }, - { "default:copper_ingot", "", "" }, - }, -}) - -minetest.register_craft( { - output = "basic_materials:steel_bar 6", - recipe = { - { "", "", "default:steel_ingot" }, - { "", "default:steel_ingot", "" }, - { "default:steel_ingot", "", "" }, - }, -}) - -minetest.register_craft( { - output = "basic_materials:padlock 2", - recipe = { - { "basic_materials:steel_bar" }, - { "default:steel_ingot" }, - { "default:steel_ingot" }, - }, -}) - -minetest.register_craft({ - output = "basic_materials:chainlink_steel 12", - recipe = { - {"", "default:steel_ingot", "default:steel_ingot"}, - { "default:steel_ingot", "", "default:steel_ingot" }, - { "default:steel_ingot", "default:steel_ingot", "" }, - }, -}) - -minetest.register_craft({ - output = "basic_materials:chainlink_brass 12", - recipe = { - {"", "basic_materials:brass_ingot", "basic_materials:brass_ingot"}, - { "basic_materials:brass_ingot", "", "basic_materials:brass_ingot" }, - { "basic_materials:brass_ingot", "basic_materials:brass_ingot", "" }, - }, -}) - -minetest.register_craft({ - output = 'basic_materials:chain_steel 2', - recipe = { - {"basic_materials:chainlink_steel"}, - {"basic_materials:chainlink_steel"}, - {"basic_materials:chainlink_steel"} - } -}) - -minetest.register_craft({ - output = 'basic_materials:chain_brass 2', - recipe = { - {"basic_materials:chainlink_brass"}, - {"basic_materials:chainlink_brass"}, - {"basic_materials:chainlink_brass"} - } -}) - -minetest.register_craft( { - output = "basic_materials:gear_steel 6", - recipe = { - { "", "default:steel_ingot", "" }, - { "default:steel_ingot","basic_materials:chainlink_steel", "default:steel_ingot" }, - { "", "default:steel_ingot", "" } - }, -}) - -minetest.register_craft( { - type = "shapeless", - output = "basic_materials:brass_ingot 3", - recipe = { - "default:copper_ingot", - "default:copper_ingot", - "moreores:silver_ingot", - }, -}) - -if not minetest.get_modpath("moreores") then - -- Without moreores, there still should be a way to create brass. - minetest.register_craft( { - output = "basic_materials:brass_ingot 9", - recipe = { - {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, - {"default:gold_ingot", "default:copper_ingot", "default:gold_ingot"}, - {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, - }, - }) -end - -minetest.register_craft( { - type = "shapeless", - output = "basic_materials:brass_ingot 9", - recipe = { "basic_materials:brass_block" }, -}) - -minetest.register_craft( { - output = "basic_materials:brass_block", - recipe = { - { "basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot" }, - { "basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot" }, - { "basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot" }, - }, -}) - --- aliases - -minetest.register_alias("homedecor:copper_wire", "basic_materials:copper_wire") -minetest.register_alias("technic:fine_copper_wire", "basic_materials:copper_wire") -minetest.register_alias("technic:fine_silver_wire", "basic_materials:silver_wire") -minetest.register_alias("technic:fine_gold_wire", "basic_materials:gold_wire") - -minetest.register_alias("homedecor:steel_wire", "basic_materials:steel_wire") - -minetest.register_alias("homedecor:brass_ingot", "basic_materials:brass_ingot") -minetest.register_alias("technic:brass_ingot", "basic_materials:brass_ingot") -minetest.register_alias("technic:brass_block", "basic_materials:brass_block") - -minetest.register_alias("homedecor:copper_strip", "basic_materials:copper_strip") -minetest.register_alias("homedecor:steel_strip", "basic_materials:steel_strip") - -minetest.register_alias_force("glooptest:chainlink", "basic_materials:chainlink_steel") -minetest.register_alias_force("homedecor:chainlink_steel", "basic_materials:chainlink_steel") -minetest.register_alias("homedecor:chainlink_brass", "basic_materials:chainlink_brass") -minetest.register_alias("chains:chain", "basic_materials:chain_steel") -minetest.register_alias("chains:chain_brass", "basic_materials:chain_brass") - -minetest.register_alias("pipeworks:gear", "basic_materials:gear_steel") - -minetest.register_alias("technic:rebar", "basic_materials:steel_bar") - diff --git a/basic_materials/misc.lua b/basic_materials/misc.lua deleted file mode 100644 index 0012897..0000000 --- a/basic_materials/misc.lua +++ /dev/null @@ -1,126 +0,0 @@ --- Translation support -local S = minetest.get_translator("basic_materials") - --- items - -minetest.register_craftitem("basic_materials:oil_extract", { - description = S("Oil extract"), - inventory_image = "basic_materials_oil_extract.png", -}) - -minetest.register_craftitem("basic_materials:paraffin", { - description = S("Unprocessed paraffin"), - inventory_image = "basic_materials_paraffin.png", -}) - -minetest.register_craftitem("basic_materials:terracotta_base", { - description = S("Uncooked Terracotta Base"), - inventory_image = "basic_materials_terracotta_base.png", -}) - -minetest.register_craftitem("basic_materials:wet_cement", { - description = S("Wet Cement"), - inventory_image = "basic_materials_wet_cement.png", -}) - --- nodes - -minetest.register_node("basic_materials:cement_block", { - description = S("Cement"), - tiles = {"basic_materials_cement_block.png"}, - is_ground_content = true, - groups = {cracky=2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("basic_materials:concrete_block", { - description = S("Concrete Block"), - tiles = {"basic_materials_concrete_block.png",}, - groups = {cracky=1, level=2, concrete=1}, - sounds = default.node_sound_stone_defaults(), -}) - --- crafts - -minetest.register_craft({ - type = "shapeless", - output = "basic_materials:oil_extract 2", - recipe = { - "group:leaves", - "group:leaves", - "group:leaves", - "group:leaves", - "group:leaves", - "group:leaves" - } -}) - -minetest.register_craft({ - type = "cooking", - output = "basic_materials:paraffin", - recipe = "basic_materials:oil_extract", -}) - -minetest.register_craft({ - type = "fuel", - recipe = "basic_materials:oil_extract", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "basic_materials:paraffin", - burntime = 30, -}) - -minetest.register_craft( { - type = "shapeless", - output = "basic_materials:terracotta_base 8", - recipe = { - "bucket:bucket_water", - "default:clay_lump", - "default:gravel", - }, - replacements = { {"bucket:bucket_water", "bucket:bucket_empty"}, }, -}) - -minetest.register_craft({ - type = "shapeless", - output = "basic_materials:wet_cement 3", - recipe = { - "default:dirt", - "dye:dark_grey", - "dye:dark_grey", - "dye:dark_grey", - "bucket:bucket_water" - }, - replacements = {{'bucket:bucket_water', 'bucket:bucket_empty'},}, -}) - -minetest.register_craft({ - type = "cooking", - output = "basic_materials:cement_block", - recipe = "basic_materials:wet_cement", - cooktime = 8 -}) - -minetest.register_craft({ - output = 'basic_materials:concrete_block 6', - recipe = { - {'group:sand', 'basic_materials:wet_cement', 'default:gravel'}, - {'basic_materials:steel_bar', 'basic_materials:wet_cement', 'basic_materials:steel_bar'}, - {'default:gravel', 'basic_materials:wet_cement', 'group:sand'}, - } -}) - --- aliases - -minetest.register_alias("homedecor:oil_extract", "basic_materials:oil_extract") -minetest.register_alias("homedecor:paraffin", "basic_materials:paraffin") -minetest.register_alias("homedecor:plastic_base", "basic_materials:paraffin") -minetest.register_alias("homedecor:terracotta_base", "basic_materials:terracotta_base") - -minetest.register_alias("gloopblocks:wet_cement", "basic_materials:wet_cement") -minetest.register_alias("gloopblocks:cement", "basic_materials:cement_block") - -minetest.register_alias("technic:concrete", "basic_materials:concrete_block") diff --git a/basic_materials/mod.conf b/basic_materials/mod.conf index 7234bfe..048bae0 100644 --- a/basic_materials/mod.conf +++ b/basic_materials/mod.conf @@ -1,4 +1,3 @@ name = basic_materials -depends = default -optional_depends = moreores +optional_depends = moreores, default, mesecons_materials, dye, bucket, fl_stone, fl_trees, mcl_sounds, hades_core, hades_sounds, hades_materials, hades_dye, hades_bucket, hades_extraores, hades_mesecons_materials, aloz, rp_crafting min_minetest_version = 5.2.0 diff --git a/basic_materials/nodes.lua b/basic_materials/nodes.lua new file mode 100644 index 0000000..ef10f43 --- /dev/null +++ b/basic_materials/nodes.lua @@ -0,0 +1,59 @@ +local S = minetest.get_translator("basic_materials") +local sound_api = dofile(basic_materials.modpath .. "/sound_api_core/init.lua") +local chains_sbox = {type = "fixed",fixed = { -0.1, -0.5, -0.1, 0.1, 0.5, 0.1 }} + +minetest.register_node("basic_materials:cement_block", { + description = S("Cement"), + tiles = {"basic_materials_cement_block.png"}, + is_ground_content = true, + groups = {cracky=2, dig_stone = 1, pickaxey=5}, + _mcl_hardness=1.6, + sounds = sound_api.node_sound_stone_defaults(), +}) + +minetest.register_node("basic_materials:concrete_block", { + description = S("Concrete Block"), + tiles = {"basic_materials_concrete_block.png",}, + groups = {cracky=1, concrete=1, dig_stone = 1, pickaxey=5}, + _mcl_hardness=1.6, + sounds = sound_api.node_sound_stone_defaults(), +}) + +minetest.register_node("basic_materials:chain_steel", { + description = S("Chain (steel, hanging)"), + drawtype = "mesh", + mesh = "basic_materials_chains.obj", + tiles = {"basic_materials_chain_steel.png"}, + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + inventory_image = "basic_materials_chain_steel_inv.png", + groups = {cracky=3, dig_stone = 1, pickaxey=5}, + _mcl_hardness=1.6, + selection_box = chains_sbox, +}) + +minetest.register_node("basic_materials:chain_brass", { + description = S("Chain (brass, hanging)"), + drawtype = "mesh", + mesh = "basic_materials_chains.obj", + tiles = {"basic_materials_chain_brass.png"}, + walkable = false, + climbable = true, + sunlight_propagates = true, + paramtype = "light", + inventory_image = "basic_materials_chain_brass_inv.png", + groups = {cracky=3, dig_stone = 1, pickaxey=5}, + _mcl_hardness=1.6, + selection_box = chains_sbox, +}) + +minetest.register_node("basic_materials:brass_block", { + description = S("Brass Block"), + tiles = { "basic_materials_brass_block.png" }, + is_ground_content = false, + groups = {cracky=1, dig_stone = 1, pickaxey=5}, + _mcl_hardness=1.6, + sounds = sound_api.node_sound_metal_defaults() +}) diff --git a/basic_materials/plastics.lua b/basic_materials/plastics.lua deleted file mode 100644 index e29af53..0000000 --- a/basic_materials/plastics.lua +++ /dev/null @@ -1,56 +0,0 @@ --- Translation support -local S = minetest.get_translator("basic_materials") - --- items - -minetest.register_craftitem("basic_materials:plastic_sheet", { - description = S("Plastic sheet"), - inventory_image = "basic_materials_plastic_sheet.png", -}) - -minetest.register_craftitem("basic_materials:plastic_strip", { - description = S("Plastic strips"), - groups = { strip = 1 }, - inventory_image = "basic_materials_plastic_strip.png", -}) - -minetest.register_craftitem("basic_materials:empty_spool", { - description = S("Empty wire spool"), - inventory_image = "basic_materials_empty_spool.png" -}) - --- crafts - -minetest.register_craft({ - type = "cooking", - output = "basic_materials:plastic_sheet", - recipe = "basic_materials:paraffin", -}) - -minetest.register_craft({ - type = "fuel", - recipe = "basic_materials:plastic_sheet", - burntime = 30, -}) - -minetest.register_craft( { - output = "basic_materials:plastic_strip 9", - recipe = { - { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" } - }, -}) - -minetest.register_craft( { - output = "basic_materials:empty_spool 3", - recipe = { - { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }, - { "", "basic_materials:plastic_sheet", "" }, - { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" } - }, -}) - --- aliases - -minetest.register_alias("homedecor:plastic_sheeting", "basic_materials:plastic_sheet") -minetest.register_alias("homedecor:plastic_strips", "basic_materials:plastic_strip") -minetest.register_alias("homedecor:empty_spool", "basic_materials:empty_spool") diff --git a/basic_materials/sound_api_core/.luacheckrc b/basic_materials/sound_api_core/.luacheckrc new file mode 100644 index 0000000..1bd7ddb --- /dev/null +++ b/basic_materials/sound_api_core/.luacheckrc @@ -0,0 +1,5 @@ +read_globals = { + "minetest", "mcl_sounds", "default", "ks_sounds", + "nodes_nature", "fl_stone", "fl_topsoil", "fl_trees", + "hades_sounds", +} \ No newline at end of file diff --git a/basic_materials/sound_api_core/LICENSE b/basic_materials/sound_api_core/LICENSE new file mode 100644 index 0000000..50e6e01 --- /dev/null +++ b/basic_materials/sound_api_core/LICENSE @@ -0,0 +1,19 @@ + +MIT Copyright 2021 wsor4035 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/basic_materials/sound_api_core/init.lua b/basic_materials/sound_api_core/init.lua new file mode 100644 index 0000000..a7db7dc --- /dev/null +++ b/basic_materials/sound_api_core/init.lua @@ -0,0 +1,276 @@ +local sound_api = {} + +--convert some games for api usage + +--ks_sounds conversion +--currently loggy and bedrock are ignored +local ks = {} + +function ks.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.generalnode_sounds.footstep + table.dug = table.dug or ks_sounds.generalnode_sounds.dug + table.dig = table.dig or ks_sounds.generalnode_sounds.dig + table.place = table.place or ks_sounds.generalnode_sounds.place + return table +end + +function ks.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.woodennode_sounds.footstep + table.dug = table.dug or ks_sounds.woodennode_sounds.dug + table.dig = table.dig or ks_sounds.woodennode_sounds.dig + table.place = table.place or ks_sounds.woodennode_sounds.place + ks.node_sound_defaults(table) + return table +end + +function ks.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.leafynode_sounds.footstep + table.dug = table.dug or ks_sounds.leafynode_sounds.dug + table.dig = table.dig or ks_sounds.leafynode_sounds.dig + table.place = table.place or ks_sounds.leafynode_sounds.place + ks.node_sound_defaults(table) + return table +end + +function ks.node_sound_snow_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.snowynode_sounds.footstep + table.dug = table.dug or ks_sounds.snowynode_sounds.dug + table.dig = table.dig or ks_sounds.snowynode_sounds.dig + table.place = table.place or ks_sounds.snowynode_sounds.place + ks.node_sound_defaults(table) + return table +end + + +--api +function sound_api.node_sound_default(table) + if minetest.get_modpath("default") then + return default.node_sound_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_default(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_defaults(table) + else + return table + end +end + +function sound_api.node_sound_stone_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_stone_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_stone_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_stone_defaults(table) + elseif minetest.get_modpath("fl_stone") then + return fl_stone.sounds.stone(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_stone_defaults(table) + else + return table + end +end + +function sound_api.node_sound_dirt_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_dirt_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_dirt_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_dirt_defaults(table) + --s/dirt/grass + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.grass(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_dirt_defaults(table) + else + return table + end +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(table) + if minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_grass_defaults(table) + else + return sound_api.node_sound_dirt_defaults(table) + end +end + +function sound_api.node_sound_sand_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_sand_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_sand_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_sand_defaults(table) + elseif minetest.get_modpath("fl_stone") then + return fl_stone.sounds.sand(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_sand_defaults(table) + else + return table + end +end + +function sound_api.node_sound_gravel_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_gravel_defaults(table) + --s/gravel/sand + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_sand_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_gravel_defaults(table) + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.gravel(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_gravel_defaults(table) + else + return table + end +end + +function sound_api.node_sound_wood_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_wood_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_wood_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_wood_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_wood_defaults(table) + elseif minetest.get_modpath("fl_trees") then + return fl_trees.sounds.wood(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_wood_defaults(table) + else + return table + end +end + +function sound_api.node_sound_leaves_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_leaves_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_leaves_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_leaves_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_leaves_defaults(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_leaves_defaults(table) + else + return table + end +end + +function sound_api.node_sound_glass_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_glass_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_glass_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_glass_defaults(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_glass_defaults(table) + else + return table + end +end + + +function sound_api.node_sound_ice_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_ice_defaults(table) + --s/ice/glass + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_glass_defaults(table) + --s/ice/glass + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_glass_defaults(table) + --s/ice/glass + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_glass_defaults(table) + else + return table + end +end + +function sound_api.node_sound_metal_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_metal_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_metal_defaults(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_metal_defaults(table) + else + return table + end +end + +function sound_api.node_sound_water_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_water_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_water_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_water_defaults(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_water_defaults(table) + else + return table + end +end + +function sound_api.node_sound_lava_defaults(table) + --s/lava/water + if minetest.get_modpath("default") then + return default.node_sound_water_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_lava_defaults(table) + --s/lava/water + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_water_defaults(table) + elseif minetest.get_modpath("hades_sounds") then + return hades_sounds.node_sound_lava_defaults(table) + else + return table + end +end + +function sound_api.node_sound_snow_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_snow_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_snow_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_snow_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_snow_defaults(table) + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.snow(table) + else + return table + end +end + +function sound_api.node_sound_wool_defaults(table) + --s/wool/default + if minetest.get_modpath("default") then + return default.node_sound_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_wool_defaults(table) + else + return table + end +end + +return sound_api \ No newline at end of file diff --git a/basic_materials/textures/basic_materials_aluminum_bar.png b/basic_materials/textures/basic_materials_aluminum_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..8d3e11e2ddc6ff1fdaf990c65ecd6034b67fb60e GIT binary patch literal 337 zcmV-X0j~auP)-aD$5N+2RKjw9N-$wSb?Gz>O(4;O)W^s05W$>aw7MGozmI7E= jU8}jCk7*c{@SoHt$||k3FH%Vd00000NkvXXu0mjfO(~MY literal 0 HcmV?d00001 diff --git a/basic_materials/textures/basic_materials_aluminum_strip.png b/basic_materials/textures/basic_materials_aluminum_strip.png new file mode 100644 index 0000000000000000000000000000000000000000..8957022ba7604dfa3ed572923e99160c4defe2cf GIT binary patch literal 383 zcmV-_0f7FAP)YU7zOZ?dvEQ{Eon3+mQI3N1+5^_!L6WVl==eVR8T0o z`3_xmaaib#QXf3a$L^fb!9lj-l~;qmr(LxFD;%KWAPjV0MGNlCLJWitl@x zWm;&|8+P%eXamR*01!gR^4&cyN|&hB++R0KDWUQqXj&8izyM%tXO{rLn&UY0$>etV z=5~QlGR`?y^r(*JOH&!qbudcMlRX68?)M+`GnYtg9Od(Sm8Zu<5CqKk+X^A1vzf_= dzvKt{_yn92TjwcAnxy~$002ovPDHLkV1k#2q+I|2 literal 0 HcmV?d00001 diff --git a/basic_materials/textures/basic_materials_aluminum_wire.png b/basic_materials/textures/basic_materials_aluminum_wire.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b3dc67e4e5d934cf059b80817ac03e03acaf59 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfN~j?e8Towf=D}U;TsAtiO9J<4rZkBknE& zJLkP#b;y+Oxzrlo7bY5Ab3UeY2{ub4rnoUo3GG}hd+zF-^UL#?vzfbWj(@N1`KkWH zvT@ZbtH^I&3szNSKk}Zs+4qy-!JK^z??UDN_%xR?)}MO8r5JYD@<);T3K F0RXvXXj%XO literal 0 HcmV?d00001 diff --git a/basic_materials/textures/basic_materials_carbon_steel_bar.png b/basic_materials/textures/basic_materials_carbon_steel_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c3531058fb6210ffb15c3424d8fc51fbb43470 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfG4JnjVeG8#K)~OqV&BzHr+coktUxt6a4u za*H__1&@c{?tQSDuV>rMYJUOy8~5fNG??6Y(d@Vc=cARu%;FC`+1+l-I3L-0KJrIW z^S_WsvbncEPB!*``uEAIqbhe~f7r>TKb+VcoZvK9$V>Co+rw9l^N)Sd+@Sj5!ULH& otDWJD1=Zz?+xVjy|993gKJi_d`#>hG3g}G+Pgg&ebxsLQ0Oy2wW&i*H literal 0 HcmV?d00001 diff --git a/basic_materials/textures/basic_materials_gold_strip.png b/basic_materials/textures/basic_materials_gold_strip.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe97a2b2c9028a2728a353f1a92f9b014d0786b GIT binary patch literal 358 zcmV-s0h#`ZP)Ka+|N_0FZ9JgLR&*g4AMbIBNIkj?Y;rC$rmvC z07eE@1CbaikqS+NXevUArY}hQ+{e(lLu2i4J;{~)4-EX90DRo0)kqlC2F3(+eZ@J8 zMQCoU+QN43_dM1poaD2#dj?*w6Y3jY1QSL~uzPSKsI3Do>QyneqT!HjxaQqUPW?V? zuC)($kDm4f;PG-&Me-4}jOaG<;93LI3Ogc@s*TYGslx@j! zs1eLQW_OK7@lw0m3jabOW&>u&fwSDOt@#07y+!WY^ZT@i?&8vswDRexcLp7J!lt zAf;6Itw*lP6+Ex~>t>}C(u`o+aR3BBwN}@wwK_o2(Dl=H`*kaxa5kiAYL1g&@HWtr zj)O3CLKQNb&%b}L$aX$|lFQ}JMniuy3_~#)PqYxGmz9e3m;BNKUwF)GP1|*?8~^|S M07*qoM6N<$f{d)7MgRZ+ literal 0 HcmV?d00001 diff --git a/basic_materials/textures/basic_materials_stainless_steel_bar.png b/basic_materials/textures/basic_materials_stainless_steel_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7425e13b6d65a9a5e24776535f67e6bad7cc15 GIT binary patch literal 336 zcmV-W0k8gvP)-2QoISl#0r`w z8#k=fKS!JG#Yk<9NkN?3kL8=$8TfB$B~2XOnCcem!nw>C_RrYe*){;qI`GSMiZ>h( zkMH@I&1h|)l{9IR5O^+O6eEP7+dH*dRnSVBLOl_9E=ii<*fs}8Csy@tHNlg|2S&cf z?cJENEWeT~)mG3-nrE#U`5s{u1FXQcKhR1VT@(!Z=fA=L_D^swGu+DyQYjHauz%RA zt?DepGM(VNSL90Z`u1L%ykbxdb{+VHQB0@PX@uc(gT=L*IxkBAEW&M*zZq<7ZdqXz i4m@<{U?lVqVpwVuaMpv7}~Biy$KC547#MfZxZ<2mk#!17L4=M~|h`+_l>z zk|{ksHCYu_$QyUEXS4ZyeZO2jEEbE;Ujkd38+vhJ9uE3sZQQJlelRyW&`2IU6Kk5m`sQ{JFS8p1P)zf-?-Mzh;@qJ$o29Jhen!_Jo c^xyA#1!*T|%brXw!TF*87IG4>3cbZ{%kMHmXMk?tqs;W1clH}|=58usIRpFcipePFRJRb}JV7GnMzCsAx literal 0 HcmV?d00001 diff --git a/doclib/formspec.lua b/doclib/formspec.lua index 3eeb139..d7fa4f1 100644 --- a/doclib/formspec.lua +++ b/doclib/formspec.lua @@ -134,22 +134,24 @@ local function formspec_plan(meta, manual) end function doclib.formspec(pos, mod, language, fields) - local manual = doclib.manual[mod][language] - local meta = M(pos) + if doclib.manual and doclib.manual[mod] and doclib.manual[mod][language] then + local manual = doclib.manual[mod][language] + local meta = M(pos) - if not fields then - meta:set_int("doclib_index", 1) - return formspec_help(meta, manual) - elseif fields.plan then - return formspec_plan(meta, manual) - elseif fields.back then - return formspec_help(meta, manual) - elseif fields.page then - local evt = minetest.explode_table_event(fields.page) - if evt.type == "CHG" then - local idx = tonumber(evt.row) - meta:set_int("doclib_index", idx) + if not fields then + meta:set_int("doclib_index", 1) + return formspec_help(meta, manual) + elseif fields.plan then + return formspec_plan(meta, manual) + elseif fields.back then + return formspec_help(meta, manual) + elseif fields.page then + local evt = minetest.explode_table_event(fields.page) + if evt.type == "CHG" then + local idx = tonumber(evt.row) + meta:set_int("doclib_index", idx) + end end + return formspec_help(meta, manual) end - return formspec_help(meta, manual) end diff --git a/minecart/manual.lua b/minecart/manual.lua index 5aef19d..a2569af 100644 --- a/minecart/manual.lua +++ b/minecart/manual.lua @@ -14,8 +14,8 @@ local MP = minetest.get_modpath("minecart") -if not minetest.global_exists("techage") and - minetest.global_exists("doclib") then +if not minetest.get_modpath("techage") and + minetest.get_modpath("doclib") then minetest.register_node("minecart:manual", { description = "Minecart Manual (EN)", @@ -122,7 +122,7 @@ if not minetest.global_exists("techage") and end minetest.register_on_mods_loaded(function() - if minetest.global_exists("techage") then + if minetest.get_modpath("techage") then -- Use the Techage Construction Board local content = dofile(MP.."/manual_EN.lua") @@ -130,7 +130,7 @@ minetest.register_on_mods_loaded(function() local content = dofile(MP.."/manual_DE.lua") doclib.add_to_manual("techage", "DE", content) - elseif minetest.global_exists("doclib") then + elseif minetest.get_modpath("doclib") then -- Create own manual book local settings = { @@ -146,4 +146,4 @@ minetest.register_on_mods_loaded(function() doclib.add_to_manual("minecart", "DE", content) end -end) \ No newline at end of file +end) diff --git a/techage/collider/magnet.lua b/techage/collider/magnet.lua index 84a400a..76e13ea 100644 --- a/techage/collider/magnet.lua +++ b/techage/collider/magnet.lua @@ -37,6 +37,7 @@ end local function handle_legacy_magnet(pos) if M(pos):get_string("version") ~= "V2" then if is_junction(pos, "B") and not is_junction(pos, "F") then + local node = techage.get_node_lvm(pos) node.param2 = (node.param2 + 2) % 4 minetest.swap_node(pos, node) end @@ -228,6 +229,7 @@ techage.register_node({"techage:ta4_magnet"}, { return pos2 end elseif topic == "enumerate" and payload then + handle_legacy_magnet(pos) payload = tonumber(payload) or 1 nvm.number = payload M(pos):set_string("infotext", S("TA4 Collider Magnet") .. " #" .. payload) @@ -240,7 +242,6 @@ techage.register_node({"techage:ta4_magnet"}, { return send_to_next(pos, in_dir, topic, payload) end elseif topic == "test" then - handle_legacy_magnet(pos) if payload and tonumber(payload) == nvm.number then if not nvm.liquid or not nvm.liquid.amount or nvm.liquid.amount < CAPACITY then return false, "no gas" diff --git a/techage/manuals/ta4_lua_controller_EN.md b/techage/manuals/ta4_lua_controller_EN.md index c6387bc..5b1b625 100644 --- a/techage/manuals/ta4_lua_controller_EN.md +++ b/techage/manuals/ta4_lua_controller_EN.md @@ -17,31 +17,41 @@ https://github.com/joe7575/techage/blob/master/manuals/ta4_lua_controller_EN.pdf ## Table of Contents -- [TA4 Lua Controller Blocks](#TA4-Lua-Controller-Blocks) - - [TA4 Lua Controller](#TA4-Lua-Controller) - - [Battery](#Battery) - - [TA4 Lua Server](#TA4-Lua-Server) - - [TA4 Lua Controller Terminal](#TA4-Lua-Controller-Terminal) - - [TA4 Sensor Chest](#TA4-Sensor-Chest) -- [Lua Functions and Environment](#Lua-Functions-and-Environment) - - [Lua Functions and Limitations](#Lua-Functions-and-Limitations) - - [Arrays, Stores, and Sets](#Arrays,-Stores,-and-Sets) - - [Initialization, Cyclic Task, and Events](#Initialization,-Cyclic-Task,-and-Events) -- [Lua Controller Functions](#Lua-Controller-Functions) - - [Controller local Functions](#Controller-local-Functions) - - [Techage Command Functions](#Techage-Command-Functions) - - [Server and Terminal Functions](#Server-and-Terminal-Functions) - - [Further Functions](#Further-Functions) -- [Example Scripts](#Example-Scripts) - - [Simple Counter](#Simple-Counter) - - [Hello World](#Hello-World) - - [For Loop with range(from, to)](#For-Loop-with-range(from,-to)) - - [Monitoring Chest & Furnace](#Monitoring-Chest-&-Furnace) - - [Simple Calculator](#Simple-Calculator) - - [Welcome Display](#Welcome-Display) - - [Sensor Chest](#Sensor-Chest) - - [Read the "TA4 4x Button"](#Read-the-TA4-4x-Button) - - [Emails](#Emails) +- [TA4 Lua Controller](#ta4-lua-controller) + - [Table of Contents](#table-of-contents) + - [TA4 Lua Controller Blocks](#ta4-lua-controller-blocks) + - [TA4 Lua Controller](#ta4-lua-controller-1) + - [Battery](#battery) + - [TA4 Lua Server](#ta4-lua-server) + - [TA4 Lua Controller Terminal](#ta4-lua-controller-terminal) + - [TA4 Sensor Chest](#ta4-sensor-chest) + - [Lua Functions and Environment](#lua-functions-and-environment) + - [Lua Functions and Limitations](#lua-functions-and-limitations) + - [Arrays, Stores, and Sets](#arrays-stores-and-sets) + - [Arrays](#arrays) + - [Stores](#stores) + - [Sets](#sets) + - [Initialization, Cyclic Task, and Events](#initialization-cyclic-task-and-events) + - [Initialization](#initialization) + - [Cyclic Task](#cyclic-task) + - [Events](#events) + - [Lua Controller Functions](#lua-controller-functions) + - [Controller local Functions](#controller-local-functions) + - [Input Example](#input-example) + - [Techage Command Functions](#techage-command-functions) + - [Server and Terminal Functions](#server-and-terminal-functions) + - [Communication between Lua Controllers](#communication-between-lua-controllers) + - [Further Functions](#further-functions) + - [Example Scripts](#example-scripts) + - [Simple Counter](#simple-counter) + - [Hello World](#hello-world) + - [For Loop with range(from, to)](#for-loop-with-rangefrom-to) + - [Monitoring Chest \& Furnace](#monitoring-chest--furnace) + - [Simple Calculator](#simple-calculator) + - [Welcome Display](#welcome-display) + - [Sensor Chest](#sensor-chest) + - [Read the "TA4 4x Button"](#read-the-ta4-4x-button) + - [Emails](#emails) @@ -333,7 +343,7 @@ In addition to Lua standard function the Lua Controller provides the following f - `$loopcycle(seconds)` - This function allows to change the call frequency of the controller loop() function, witch is per default one second. For more info, see "Cyclic Task" - `$events(bool)` - Enable/disable event handling. For more info, see "Events" - `$get_ms_time()` - Returns the time with millisecond precision -- `get_gametime()` - Returns the time, in seconds, since the world was created +- `$get_gametime()` - Returns the time, in seconds, since the world was created - `$time_as_str()` - Read the time of day (ingame) as text string in 24h format, like "18:45" - `$time_as_num()` - Read the time of day (ingame) as integer number in 24h format, like 1845 - `$get_input(num)` - Read an input value provided by an external block with the given number _num_. The block has to be configured with the number of the controller to be able to send status messages (on/off commands) to the controller. _num_ is the number (data type string) of the remote block, like "1234". diff --git a/tubelib2/internal2.lua b/tubelib2/internal2.lua index ff1ec85..69f97a2 100644 --- a/tubelib2/internal2.lua +++ b/tubelib2/internal2.lua @@ -326,6 +326,16 @@ function Tube:determine_tube_dirs(pos, preferred_pos, fdir) (self:connected(pos, tbl[2]) and 1 or 0) return tbl[1], tbl[2], math.min(2, num_tubes) end + + -- dir1, dir2 still unknown? + if fdir and #tbl < 2 then + -- Try to turn the node by 90 degrees + local dir1 = fdir < 5 and (fdir + 1) % 4 or fdir + local dir2 = dir1 < 5 and Turn180Deg[dir1] or dir1 + if dir1 ~= dir2 and allowed[dir1] and allowed[dir2] then + return dir1, dir2, 0 + end + end end -- Determine a tube side without connection, increment the number of connections diff --git a/unified_inventory/init.lua b/unified_inventory/init.lua index 8f91aca..35a2e83 100644 --- a/unified_inventory/init.lua +++ b/unified_inventory/init.lua @@ -194,5 +194,7 @@ end if minetest.settings:get_bool("unified_inventory_item_names") ~= false then dofile(modpath.."/item_names.lua") end -dofile(modpath.."/waypoints.lua") +if minetest.settings:get_bool("unified_inventory_waypoints") ~= false then + dofile(modpath.."/waypoints.lua") +end dofile(modpath.."/legacy.lua") -- mod compatibility diff --git a/unified_inventory/settingtypes.txt b/unified_inventory/settingtypes.txt index 83190a9..4fabbe5 100644 --- a/unified_inventory/settingtypes.txt +++ b/unified_inventory/settingtypes.txt @@ -1,23 +1,32 @@ -#Enabling lite mode enables a smaller and simpler version of the Unified -#Inventory, optimized for small displays. +# Reduced formspec layout, optimized for smaller displays. +# Note: This may also disable some features to free up visual space. unified_inventory_lite (Lite mode) bool false -#If enabled, bags will be made available which can be used to extend -#inventory storage size. +# Provides craftable bag items to extend the inventory space. unified_inventory_bags (Enable bags) bool true -#If enabled, the trash slot can be used by those without both creative -#and the give privilege. +# Shows the trash slot to everyone. +# When disabled, only players with the privilege "creative" or "give" will +# have this slot shown in their inventory. unified_inventory_trash (Enable trash) bool true -#If enabled, disabled buttons will be hidden instead of grayed out. +# Provides waypoints on a per-player basis to remember positions on the map. +unified_inventory_waypoints (Enable waypoints) bool true + +# If enabled, disabled buttons will be hidden instead of grayed out. unified_inventory_hide_disabled_buttons (Hide disabled buttons) bool false +# Automatically categorizes registered items based on their +# groups. This is based on a fuzzy match, thus is not 100% accurate. +unified_inventory_automatic_categorization (Categories: add items automatically) bool true -unified_inventory_automatic_categorization (Items automatically added to categories) bool true +# Shows the selected wielded item description in the HUD for a few seconds. +unified_inventory_item_names (Enable HUD item names) bool true -unified_inventory_item_names (Item names are shown above hotbar) bool true +# Trims the shown wielded item description to the first line. +unified_inventory_only_names (HUD item name: first line only) bool true -unified_inventory_only_names (Show only item name) bool true - -unified_inventory_max_item_name_length (Maximum length of an item name before it's truncated, 0 disables option) int 80 +# Hard character limit of the wielded item description. +# Crops the shown description to the specified length. +# 0 disables this functionality. +unified_inventory_max_item_name_length (HUD item names: character limit) int 80