From e519d3c6e09258f3f23d316cfd07d9cff7183f46 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Sun, 15 Sep 2024 19:42:47 +0200 Subject: [PATCH 01/15] add advtrains platform registration for `stripes` node --- .luacheckrc | 1 + mod.conf | 1 + nodes.json | 3 ++- nodes.lua | 6 ++++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.luacheckrc b/.luacheckrc index ab44472..08b730a 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -15,6 +15,7 @@ read_globals = { "dump", -- optional deps + "advtrains", "default", "stairsplus", "xpanes", diff --git a/mod.conf b/mod.conf index 8a4629e..460683e 100644 --- a/mod.conf +++ b/mod.conf @@ -1,6 +1,7 @@ name = scifi_nodes description = Minetest mod that adds scifi themed blocks, doors, materials, plants and other assets. optional_depends = """ +advtrains, default, xpanes, mesecons, diff --git a/nodes.json b/nodes.json index 668d05a..0f54545 100644 --- a/nodes.json +++ b/nodes.json @@ -58,7 +58,8 @@ }, "stripes": { "description": "hazard stripes", - "slat": true + "slat": true, + "advtrains_platform": true }, "rust": { "description": "rusty metal" diff --git a/nodes.lua b/nodes.lua index 940bc16..e42fb7b 100644 --- a/nodes.lua +++ b/nodes.lua @@ -1,6 +1,7 @@ local has_unifieddyes_mod = minetest.get_modpath("unifieddyes") local has_moreblocks_mod = minetest.get_modpath("moreblocks") local has_slats_mod = minetest.get_modpath("slats") +local has_advtrains_mod = minetest.get_modpath("advtrains") --nodes @@ -661,6 +662,11 @@ for name, def in pairs(nodes) do }) end + -- advtrains platform registration + if has_advtrains_mod and def.advtrains_platform then + advtrains.register_platform("scifi_nodes", "scifi_nodes:" .. name) + end + if has_slats_mod and def.slat then slats.register_slat( name, From 1159a02f76e647bc33f72b3dc63266c1d15b9145 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Sun, 15 Sep 2024 19:44:17 +0200 Subject: [PATCH 02/15] upgrade luacheck workflow and define std --- .github/workflows/luacheck.yml | 17 +++++------------ .luacheckrc | 10 ++-------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/.github/workflows/luacheck.yml b/.github/workflows/luacheck.yml index d00f53a..e930ebe 100644 --- a/.github/workflows/luacheck.yml +++ b/.github/workflows/luacheck.yml @@ -1,17 +1,10 @@ name: luacheck - on: [push, pull_request] - jobs: - build: - + luacheck: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - 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 ./ + - name: Checkout + uses: actions/checkout@main + - name: Luacheck + uses: lunarmodules/luacheck@master \ No newline at end of file diff --git a/.luacheckrc b/.luacheckrc index 08b730a..2dd9700 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,3 +1,5 @@ +std = "min+minetest" + unused_args = false max_line_length = 180 @@ -6,14 +8,6 @@ globals = { } read_globals = { - -- Stdlib - string = {fields = {"split"}}, - table = {fields = {"copy", "getn"}}, - - -- Minetest - "vector", "ItemStack", - "dump", - -- optional deps "advtrains", "default", From 93bdcda2ddc550d27090c299233389a161b0595c Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Sun, 15 Sep 2024 20:45:28 +0200 Subject: [PATCH 03/15] signs_api support and various large banner registrations --- .luacheckrc | 1 + mod.conf | 3 ++- nodes.json | 19 +++++++++++++------ nodes.lua | 20 ++++++++++++++++++++ 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 2dd9700..d8f740b 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -18,6 +18,7 @@ read_globals = { "mesecon", "unifieddyes", "letters", + "signs_api", "stealthnode", "slats", "mtt" diff --git a/mod.conf b/mod.conf index 460683e..8d7ace2 100644 --- a/mod.conf +++ b/mod.conf @@ -16,5 +16,6 @@ unifieddyes, letters, mesecons_stealthnode, mtt, -slats +slats, +signs_api """ diff --git a/nodes.json b/nodes.json index 0f54545..f172a89 100644 --- a/nodes.json +++ b/nodes.json @@ -8,7 +8,9 @@ "white2": { "description": "plastic", "colorable": true, - "sounds": "stone" + "sounds": "stone", + "signs_banner": true, + "signs_banner_color": "#000" }, "super_white": { "description": "Super Plastic", @@ -68,7 +70,8 @@ "description": "metal mesh" }, "black": { - "description": "black wall" + "description": "black wall", + "signs_banner": true }, "blackoct": { "description": "black octagon" @@ -89,7 +92,8 @@ "description": "blue bars" }, "bluemetal": { - "description": "blue metal" + "description": "blue metal", + "signs_banner": true }, "bluetile": { "description": "blue tile", @@ -148,7 +152,8 @@ "colorable": true }, "greenmetal": { - "description": "green metal wall" + "description": "green metal wall", + "signs_banner": true }, "greenmetal2": { "description": "green metal wall2" @@ -172,7 +177,8 @@ "description": "green pipes" }, "grey": { - "description": "grey wall" + "description": "grey wall", + "signs_banner": true }, "greybolts": { "description": "grey wall bolts" @@ -276,7 +282,8 @@ "slat": true }, "purple": { - "description": "Purple node" + "description": "Purple node", + "signs_banner": true }, "rock": { "description": "Moonstone", diff --git a/nodes.lua b/nodes.lua index e42fb7b..299f305 100644 --- a/nodes.lua +++ b/nodes.lua @@ -2,6 +2,7 @@ local has_unifieddyes_mod = minetest.get_modpath("unifieddyes") local has_moreblocks_mod = minetest.get_modpath("moreblocks") local has_slats_mod = minetest.get_modpath("slats") local has_advtrains_mod = minetest.get_modpath("advtrains") +local has_signs_api_mod = minetest.get_modpath("signs_api") --nodes @@ -667,6 +668,25 @@ for name, def in pairs(nodes) do advtrains.register_platform("scifi_nodes", "scifi_nodes:" .. name) end + if has_signs_api_mod and def.signs_banner then + signs_api.register_sign("scifi_nodes", name .. "_banner", { + depth = 1/16, + width = 5, + height = 1, + entity_fields = { + maxlines = 1, + color = def.signs_banner_color or "#fff", + }, + node_fields = { + visual_scale = 1, + description = name .. " banner", + tiles = tiles, + inventory_image = "scifi_nodes_" .. name .. ".png", + use_texture_alpha = "clip", + }, + }) + end + if has_slats_mod and def.slat then slats.register_slat( name, From 364211ebf1190cf80ed5452aaaadd713ef2d0903 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Mon, 16 Sep 2024 16:49:20 +0200 Subject: [PATCH 04/15] add `not_blocking_trains` to offset panes --- octagon_panes.lua | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/octagon_panes.lua b/octagon_panes.lua index 5a6f18c..82de190 100644 --- a/octagon_panes.lua +++ b/octagon_panes.lua @@ -25,7 +25,10 @@ local function register(basename, description, texture) type = "fixed", fixed = {{-0.5, -0.5, -0.25, 0.5, 0.5, 0.25}}, }, - groups = {cracky = 3, oddly_breakable_by_hand = 3}, + groups = { + cracky = 3, + oddly_breakable_by_hand = 3 + }, use_texture_alpha = "blend", sounds = scifi_nodes.node_sound_glass_defaults() }) @@ -50,7 +53,10 @@ local function register(basename, description, texture) type = "fixed", fixed = {{-0.5, -0.5, -0.25, 0.5, 1.5, 0.25}}, }, - groups = {cracky = 3, oddly_breakable_by_hand = 3}, + groups = { + cracky = 3, + oddly_breakable_by_hand = 3 + }, use_texture_alpha = "blend", sounds = scifi_nodes.node_sound_glass_defaults() }) @@ -75,7 +81,11 @@ local function register(basename, description, texture) type = "fixed", fixed = {{-0.5, -0.5, 0.75, 0.5, 0.5, 1.25}}, }, - groups = {cracky = 3, oddly_breakable_by_hand = 3}, + groups = { + cracky = 3, + oddly_breakable_by_hand = 3, + not_blocking_trains = 1 + }, use_texture_alpha = "blend", sounds = scifi_nodes.node_sound_glass_defaults() }) From 08c83f52cec3e5dc1e68e147a62aaf95bea5eca8 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Thu, 26 Sep 2024 19:35:28 +0200 Subject: [PATCH 05/15] remove duplicated white textures --- nodes.json | 6 ++++-- textures/scifi_nodes_super_white.png | Bin 83 -> 0 bytes textures/scifi_nodes_ultra_white.png | Bin 83 -> 0 bytes 3 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 textures/scifi_nodes_super_white.png delete mode 100644 textures/scifi_nodes_ultra_white.png diff --git a/nodes.json b/nodes.json index f172a89..4b23d5f 100644 --- a/nodes.json +++ b/nodes.json @@ -15,12 +15,14 @@ "super_white": { "description": "Super Plastic", "light": 11, - "sounds": "stone" + "sounds": "stone", + "texture_name": "white2" }, "ultra_white": { "description": "Ultra Plastic", "light": 14, - "sounds": "stone" + "sounds": "stone", + "texture_name": "white2" }, "engine": { "description": "Engine" diff --git a/textures/scifi_nodes_super_white.png b/textures/scifi_nodes_super_white.png deleted file mode 100644 index faf0ec13de983c2e28528138705425868155b239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pxOfx;Tb# c$R;ZY0yzc@j9kw>M1U*?Pgg&ebxsLQ0CUz5%m4rY diff --git a/textures/scifi_nodes_ultra_white.png b/textures/scifi_nodes_ultra_white.png deleted file mode 100644 index faf0ec13de983c2e28528138705425868155b239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pxOfx;Tb# c$R;ZY0yzc@j9kw>M1U*?Pgg&ebxsLQ0CUz5%m4rY From fbd56e67c915aa92f03cb4795be3e278f1f50372 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Thu, 26 Sep 2024 19:48:32 +0200 Subject: [PATCH 06/15] various cleanups --- .luacheckrc | 1 - chest.lua | 2 +- common.lua | 6 ++---- digicode.lua | 4 ++-- doors.lua | 8 ++++---- models.lua | 2 +- 6 files changed, 10 insertions(+), 13 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index d8f740b..5d14883 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,7 +1,6 @@ std = "min+minetest" unused_args = false -max_line_length = 180 globals = { "scifi_nodes" diff --git a/chest.lua b/chest.lua index 4ca91cd..2935a35 100644 --- a/chest.lua +++ b/chest.lua @@ -14,7 +14,7 @@ local chest_formspec = -- Helper functions local function drop_chest_stuff() - return function(pos, oldnode, oldmetadata, digger) + return function(pos, _, oldmetadata) local meta = minetest.get_meta(pos) meta:from_table(oldmetadata) local inv = meta:get_inventory() diff --git a/common.lua b/common.lua index 8bb7a3d..7eaa95a 100644 --- a/common.lua +++ b/common.lua @@ -1,7 +1,5 @@ - -scifi_nodes.get_switch_rules = function(param2) - +function scifi_nodes.get_switch_rules(param2) -- param2 = 2 local rules = { {x=1, y=-1, z=-1}, @@ -10,7 +8,7 @@ scifi_nodes.get_switch_rules = function(param2) {x=0, y=-1, z=1}, } --- Left and right when looking to +y ? + -- Left and right when looking to +y ? if param2 == 3 then rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right (rules)) elseif param2 == 4 then diff --git a/digicode.lua b/digicode.lua index 1a5fdcf..6e8d622 100644 --- a/digicode.lua +++ b/digicode.lua @@ -11,7 +11,7 @@ local digicode_context = {} -- after_place_node, use by digicode and palm_scanner -- placer is a player object -local function set_owner(pos, placer, itemstack, pointed_thing) +local function set_owner(pos, placer) local meta = minetest.get_meta(pos) meta:set_string("owner", placer:get_player_name()) meta:set_string("code", secret_code) @@ -48,7 +48,7 @@ local function update_code(pos, code) meta:set_string("code", code) end -local function show_digicode_formspec(pos, node, player, itemstack, pointed_thing) +local function show_digicode_formspec(pos, _, player) local meta = minetest.get_meta(pos) local owner = meta:get_string("owner") local current_code = meta:get_string("code") diff --git a/doors.lua b/doors.lua index 35ba558..8f317d6 100644 --- a/doors.lua +++ b/doors.lua @@ -120,7 +120,7 @@ for _, current_door in ipairs(doors) do return itemstack; end - local function afterdestruct(pos, oldnode) + local function afterdestruct(pos) minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"}) end @@ -173,12 +173,12 @@ for _, current_door in ipairs(doors) do timer:start(3) end - local function afterplace(pos, placer, itemstack, pointed_thing) + local function afterplace(pos) local node = minetest.get_node(pos) minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name=opened_top,param2=node.param2}) end - local function ontimer(pos, elapsed) + local function ontimer(pos) -- play sound minetest.sound_play(sound,{ max_hear_distance = 16, @@ -218,7 +218,7 @@ for _, current_door in ipairs(doors) do }, } - local function nodig(pos, digger) + local function nodig() return false end diff --git a/models.lua b/models.lua index dc54c82..98a4049 100644 --- a/models.lua +++ b/models.lua @@ -48,7 +48,7 @@ end -- register some blocks in stairsplus if available (part of moreblocks) scifi_nodes.register_slope("white2", "Plastic", {"scifi_nodes_white2.png",}, 0, "stone") scifi_nodes.register_slope("super_white", "Super Plastic", {"scifi_nodes_super_white.png",}, 11, "stone") -scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_ultra_white.png",}, minetest.LIGHT_MAX, "stone") +scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_ultra_white.png",},minetest.LIGHT_MAX, "stone") scifi_nodes.register_slope("black", "Black", {"scifi_nodes_black.png",}, 0) scifi_nodes.register_slope("white", "White", {"scifi_nodes_white.png",}, 0) scifi_nodes.register_slope("grey", "Grey", {"scifi_nodes_grey.png",}, 0) From 36b0c5cc05a207e36b40c58fc902062d0745cb76 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Fri, 27 Sep 2024 12:11:32 +0200 Subject: [PATCH 07/15] octagon glass slope variants --- common.lua | 20 +++++++++++ init.lua | 1 + models.lua | 20 ++--------- nodes.lua | 89 ----------------------------------------------- octagon_glass.lua | 73 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 96 insertions(+), 107 deletions(-) create mode 100644 octagon_glass.lua diff --git a/common.lua b/common.lua index 7eaa95a..9ea769a 100644 --- a/common.lua +++ b/common.lua @@ -18,3 +18,23 @@ function scifi_nodes.get_switch_rules(param2) end return rules end + +scifi_nodes.slope_selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} + } +} + +scifi_nodes.slope_collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} + } +} diff --git a/init.lua b/init.lua index f9f0696..d664994 100644 --- a/init.lua +++ b/init.lua @@ -30,6 +30,7 @@ dofile(MP.."/nodeboxes.lua") dofile(MP.."/palm_scanner.lua") dofile(MP.."/digicode.lua") dofile(MP.."/octagon_panes.lua") +dofile(MP.."/octagon_glass.lua") dofile(MP.."/forcefield.lua") dofile(MP.."/crafts.lua") diff --git a/models.lua b/models.lua index 98a4049..54e68dd 100644 --- a/models.lua +++ b/models.lua @@ -16,24 +16,8 @@ function scifi_nodes.register_slope(name, desc, texture, light, soundtype) drawtype = "mesh", mesh = "scifi_nodes_slope.obj", tiles = texture, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, - {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.25, 0.5}, - {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} - } - }, - collision_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, - {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.25, 0.5}, - {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} - } - }, + selection_box = scifi_nodes.slope_selection_box, + collision_box = scifi_nodes.slope_collision_box, paramtype = "light", paramtype2 = "facedir", use_texture_alpha = "clip", diff --git a/nodes.lua b/nodes.lua index 299f305..38dfe9a 100644 --- a/nodes.lua +++ b/nodes.lua @@ -369,95 +369,6 @@ minetest.register_node("scifi_nodes:grnpipe2", { on_place = minetest.rotate_node }) -minetest.register_node("scifi_nodes:octrng", { - description = "Orange Octagon Glass", - sunlight_propagates = true, - drawtype = "glasslike", - tiles = { - "scifi_nodes_octrng.png", - }, - paramtype = "light", - paramtype2 = "facedir", - use_texture_alpha = "blend", - light_source = 10, - groups = {cracky=2, dig_generic = 3}, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults(), -}) - -minetest.register_node("scifi_nodes:octgrn", { - description = "Green Octagon Glass", - sunlight_propagates = true, - drawtype = "glasslike", - tiles = { - "scifi_nodes_octgrn.png", - }, - paramtype = "light", - paramtype2 = "facedir", - use_texture_alpha = "blend", - light_source = 10, - groups = {cracky=2, dig_generic = 3}, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults(), -}) - -minetest.register_node("scifi_nodes:octbl", { - description = "Blue Octagon Glass", - sunlight_propagates = true, - drawtype = "glasslike", - tiles = { - "scifi_nodes_octbl.png", - }, - paramtype = "light", - paramtype2 = "facedir", - use_texture_alpha = "blend", - light_source = 10, - groups = {cracky=2, dig_generic = 3}, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults(), -}) - -minetest.register_node("scifi_nodes:octppl", { - description = "Purple Octagon Glass", - sunlight_propagates = true, - drawtype = "glasslike", - tiles = { - "scifi_nodes_octppl.png", - }, - paramtype = "light", - paramtype2 = "facedir", - use_texture_alpha = "blend", - light_source = 10, - groups = {cracky=2, dig_generic = 3}, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults(), -}) - -if has_unifieddyes_mod then - minetest.register_node("scifi_nodes:octwht", { - description = "Octagon Glass", - sunlight_propagates = true, - drawtype = "glasslike", - tiles = { - "scifi_nodes_octwht.png", - }, - palette = "unifieddyes_palette_extended.png", - paramtype = "light", - paramtype2 = "color", - use_texture_alpha = "blend", - light_source = 10, - groups = { - cracky = 2, - dig_generic = 3, - ud_param2_colorable = 1 - }, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults(), - on_construct = unifieddyes.on_construct, - on_dig = unifieddyes.on_dig - }) -end - minetest.register_node("scifi_nodes:tower", { description = "Wind tower", sunlight_propagates = false, diff --git a/octagon_glass.lua b/octagon_glass.lua new file mode 100644 index 0000000..a9ced5f --- /dev/null +++ b/octagon_glass.lua @@ -0,0 +1,73 @@ +local has_unifieddyes_mod = minetest.get_modpath("unifieddyes") + +local function register_glass(key, name) + local tiles = {"scifi_nodes_" .. key .. ".png"} + + minetest.register_node("scifi_nodes:" .. key, { + description = name .. " Octagon Glass", + sunlight_propagates = true, + drawtype = "glasslike", + tiles = tiles, + paramtype = "light", + paramtype2 = "facedir", + use_texture_alpha = "blend", + light_source = 10, + groups = { + cracky = 2, + dig_generic = 3 + }, + is_ground_content = false, + sounds = scifi_nodes.node_sound_glass_defaults(), + }) + + minetest.register_node("scifi_nodes:" .. key .. "_slope", { + description = "Octagon Glass slope", + sunlight_propagates = true, + drawtype = "mesh", + mesh = "scifi_nodes_slope.obj", + tiles = tiles, + paramtype = "light", + paramtype2 = "facedir", + use_texture_alpha = "blend", + light_source = 10, + groups = { + cracky = 2, + dig_generic = 3 + }, + selection_box = scifi_nodes.slope_selection_box, + collision_box = scifi_nodes.slope_collision_box, + is_ground_content = false, + sounds = scifi_nodes.node_sound_glass_defaults() + }) +end + +register_glass("octppl", "Purple") +register_glass("octbl", "Blue") +register_glass("octgrn", "Green") +register_glass("octrng", "Orange") +register_glass("octwht", "White") + +if has_unifieddyes_mod then + minetest.register_node("scifi_nodes:octwht", { + description = "Octagon Glass", + sunlight_propagates = true, + drawtype = "glasslike", + tiles = { + "scifi_nodes_octwht.png", + }, + palette = "unifieddyes_palette_extended.png", + paramtype = "light", + paramtype2 = "color", + use_texture_alpha = "blend", + light_source = 10, + groups = { + cracky = 2, + dig_generic = 3, + ud_param2_colorable = 1 + }, + is_ground_content = false, + sounds = scifi_nodes.node_sound_glass_defaults(), + on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig + }) +end \ No newline at end of file From 62037ad60aaf337f959904e800cd3396ffea9c10 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Sat, 4 Jan 2025 19:50:33 +0100 Subject: [PATCH 08/15] improve octagon glass pane slope / refactor node- and selectionbox code --- common.lua | 10 +++--- models.lua | 4 +-- models/scifi_nodes_slope_simple.obj | 12 +++++++ octagon_glass.lua | 20 ------------ octagon_panes.lua | 50 ++++++++++++++++++++++++----- 5 files changed, 61 insertions(+), 35 deletions(-) create mode 100644 models/scifi_nodes_slope_simple.obj diff --git a/common.lua b/common.lua index 9ea769a..13dfe8e 100644 --- a/common.lua +++ b/common.lua @@ -19,7 +19,7 @@ function scifi_nodes.get_switch_rules(param2) return rules end -scifi_nodes.slope_selection_box = { +scifi_nodes.slope_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, @@ -29,12 +29,12 @@ scifi_nodes.slope_selection_box = { } } -scifi_nodes.slope_collision_box = { +scifi_nodes.slope_box_simple = { type = "fixed", fixed = { - {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, - {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, - {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.25, -0.25}, + {-0.5, -0.25, -0.25, 0.5, 0, 0}, + {-0.5, 0, 0, 0.5, 0.25, 0.25}, {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} } } diff --git a/models.lua b/models.lua index 54e68dd..253f27c 100644 --- a/models.lua +++ b/models.lua @@ -16,8 +16,8 @@ function scifi_nodes.register_slope(name, desc, texture, light, soundtype) drawtype = "mesh", mesh = "scifi_nodes_slope.obj", tiles = texture, - selection_box = scifi_nodes.slope_selection_box, - collision_box = scifi_nodes.slope_collision_box, + selection_box = scifi_nodes.slope_box, + collision_box = scifi_nodes.slope_box, paramtype = "light", paramtype2 = "facedir", use_texture_alpha = "clip", diff --git a/models/scifi_nodes_slope_simple.obj b/models/scifi_nodes_slope_simple.obj new file mode 100644 index 0000000..d93373e --- /dev/null +++ b/models/scifi_nodes_slope_simple.obj @@ -0,0 +1,12 @@ +g top +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.0000 1.0000 +vt 0.0000 1.0000 +vt 0.0000 0.0000 +vt 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +s off +f 2/1/1 1/2/1 4/3/1 3/4/1 \ No newline at end of file diff --git a/octagon_glass.lua b/octagon_glass.lua index a9ced5f..9580029 100644 --- a/octagon_glass.lua +++ b/octagon_glass.lua @@ -19,26 +19,6 @@ local function register_glass(key, name) is_ground_content = false, sounds = scifi_nodes.node_sound_glass_defaults(), }) - - minetest.register_node("scifi_nodes:" .. key .. "_slope", { - description = "Octagon Glass slope", - sunlight_propagates = true, - drawtype = "mesh", - mesh = "scifi_nodes_slope.obj", - tiles = tiles, - paramtype = "light", - paramtype2 = "facedir", - use_texture_alpha = "blend", - light_source = 10, - groups = { - cracky = 2, - dig_generic = 3 - }, - selection_box = scifi_nodes.slope_selection_box, - collision_box = scifi_nodes.slope_collision_box, - is_ground_content = false, - sounds = scifi_nodes.node_sound_glass_defaults() - }) end register_glass("octppl", "Purple") diff --git a/octagon_panes.lua b/octagon_panes.lua index 82de190..6a81ecc 100644 --- a/octagon_panes.lua +++ b/octagon_panes.lua @@ -1,13 +1,15 @@ -local function register(basename, description, texture) +local function register(basename, color, texture) local nodename_single = "scifi_nodes:" .. basename .. "_pane" local nodename_double = "scifi_nodes:" .. basename .. "_pane_double" local nodename_offset = "scifi_nodes:" .. basename .. "_pane_offset" + local nodename_slope = "scifi_nodes:" .. basename .. "_slope" local recipe_ingredient = "scifi_nodes:" .. basename + local base_decription = color .. " octagon glass" -- single height minetest.register_node(nodename_single, { - description = description, + description = base_decription .. " pane", drawtype = "nodebox", tiles = { texture @@ -35,7 +37,7 @@ local function register(basename, description, texture) -- double height minetest.register_node(nodename_double, { - description = description, + description = base_decription .. " pane (double)", drawtype = "nodebox", tiles = { texture @@ -63,7 +65,7 @@ local function register(basename, description, texture) -- single height with offset minetest.register_node(nodename_offset, { - description = description, + description = base_decription .. " pane (offset)", drawtype = "nodebox", tiles = { texture @@ -90,6 +92,28 @@ local function register(basename, description, texture) sounds = scifi_nodes.node_sound_glass_defaults() }) + -- slope pane + minetest.register_node(nodename_slope, { + description = base_decription .. " pane (slope)", + sunlight_propagates = true, + drawtype = "mesh", + mesh = "scifi_nodes_slope_simple.obj", + tiles = { + texture + }, + paramtype = "light", + paramtype2 = "facedir", + use_texture_alpha = "blend", + light_source = 10, + groups = { + cracky = 2, + dig_generic = 3 + }, + selection_box = scifi_nodes.slope_box_simple, + collision_box = scifi_nodes.slope_box_simple, + is_ground_content = false, + sounds = scifi_nodes.node_sound_glass_defaults() + }) -- register recipes minetest.register_craft({ @@ -99,6 +123,15 @@ local function register(basename, description, texture) }, }) + minetest.register_craft({ + output = nodename_slope .. " 16", + recipe = { + {"", "", recipe_ingredient}, + {"", recipe_ingredient, ""}, + {recipe_ingredient, "", ""} + }, + }) + minetest.register_craft({ output = nodename_double .. " 16", recipe = { @@ -114,8 +147,9 @@ local function register(basename, description, texture) }) end -register("octrng", "Orange Octagon Glass pane", "scifi_nodes_octrng.png") -register("octgrn", "Green Octagon Glass pane", "scifi_nodes_octgrn.png") -register("octbl", "Blue Octagon Glass pane", "scifi_nodes_octbl.png") -register("octppl", "Purple Octagon Glass pane", "scifi_nodes_octppl.png") +register("octrng", "Orange", "scifi_nodes_octrng.png") +register("octgrn", "Green", "scifi_nodes_octgrn.png") +register("octbl", "Blue", "scifi_nodes_octbl.png") +register("octppl", "Purple", "scifi_nodes_octppl.png") +register("octwht", "White", "scifi_nodes_octwht.png") register("glass", "Dark Glass pane", "scifi_nodes_glass.png") From d531ad4edac8b289e248516c71c4dc7869284fa0 Mon Sep 17 00:00:00 2001 From: Buckaroo Banzai <39065740+BuckarooBanzay@users.noreply.github.com> Date: Mon, 3 Feb 2025 17:18:31 +0100 Subject: [PATCH 09/15] add ambience sounds and helper function (#87) * add ambience sounds and helper function * minor tweaks * fix deps --------- Co-authored-by: BuckarooBanzay --- README.md | 3 + ambience.lua | 73 +++++++++++++++++++++++++ init.lua | 1 + nodes.json | 21 ++++++- nodes.lua | 9 ++- sounds/scifi_nodes_ambience_engine.ogg | Bin 0 -> 52326 bytes sounds/scifi_nodes_ambience_fan.ogg | Bin 0 -> 57440 bytes sounds/scifi_nodes_ambience_vent.ogg | Bin 0 -> 38518 bytes 8 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 ambience.lua create mode 100644 sounds/scifi_nodes_ambience_engine.ogg create mode 100644 sounds/scifi_nodes_ambience_fan.ogg create mode 100644 sounds/scifi_nodes_ambience_vent.ogg diff --git a/README.md b/README.md index e756270..b3fbb97 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,9 @@ CC BY 3.0 CC0 * scifi_nodes_digicode.ogg https://freesound.org/people/benjaminharveydesign/sounds/315921/ +* scifi_nodes_ambience_fan.ogg https://freesound.org/people/itinerantmonk108/sounds/554430/ +* scifi_nodes_ambience_vent.ogg https://freesound.org/people/kentspublicdomain/sounds/324665/ +* scifi_nodes_ambience_engine.ogg https://freesound.org/people/firestorm185/sounds/423221/ # Contributors: diff --git a/ambience.lua b/ambience.lua new file mode 100644 index 0000000..8528839 --- /dev/null +++ b/ambience.lua @@ -0,0 +1,73 @@ + +-- currently playing sounds per mapblock +-- mapblock_pos[number] +local currently_playing = {} + +-- clear the currently playing tracker every few seconds +local function clear_currently_playing() + currently_playing = {} + minetest.after(5, clear_currently_playing) +end +minetest.after(5, clear_currently_playing) + +-- mapblock resolution +local function get_key(pos) + return minetest.pos_to_string(vector.round(vector.divide(pos, 16))) +end + +local function add_currently_playing(pos, value) + local key = get_key(pos) + local count = currently_playing[key] + if not count then + -- new entry + count = value + else + -- update entry + count = count + value + end + currently_playing[key] = count +end + +-- limit plaing sounds per mapblock +local function can_play(pos) + local count = currently_playing[get_key(pos)] + return not count or count < 25 +end + +-- register ambience sounds with node-timer +function scifi_nodes.register_ambience(nodename, soundname, opts) + assert(opts) + opts.interval = opts.interval or 60 + + local function play(pos) + minetest.sound_play(soundname ,{ + max_hear_distance = opts.max_hear_distance or 16, + pos = pos, + gain = opts.gain or 0.7 + }) + end + + minetest.override_item(nodename, { + on_timer = function(pos) + local timer = minetest.get_node_timer(pos) + + if not can_play(pos) then + -- too many sounds playing, recheck again soon + timer:start(1) + return + end + + -- increment usage count + add_currently_playing(pos, 1) + play(pos) + + -- restart timer + timer:start(opts.interval) + end, + on_construct = function(pos) + play(pos) + local timer = minetest.get_node_timer(pos) + timer:start(opts.interval) + end + }) +end diff --git a/init.lua b/init.lua index d664994..eec022a 100644 --- a/init.lua +++ b/init.lua @@ -20,6 +20,7 @@ if minetest.get_modpath("default") then dofile(MP.."/chest.lua") end +dofile(MP.."/ambience.lua") dofile(MP.."/plants.lua") dofile(MP.."/models.lua") dofile(MP.."/nodes.lua") diff --git a/nodes.json b/nodes.json index 4b23d5f..86b44d7 100644 --- a/nodes.json +++ b/nodes.json @@ -25,7 +25,12 @@ "texture_name": "white2" }, "engine": { - "description": "Engine" + "description": "Engine", + "ambience": { + "scifi_nodes_ambience_engine": { + "interval": 16.1 + } + } }, "wall": { "description": "metal wall" @@ -58,7 +63,12 @@ "description": "transparent vent", "texture_name": "vent2", "texture_modifier": "^[makealpha:33,33,33", - "drawtype": "glasslike" + "drawtype": "glasslike", + "ambience": { + "scifi_nodes_ambience_vent": { + "interval": 4.2 + } + } }, "stripes": { "description": "hazard stripes", @@ -261,7 +271,12 @@ "light": 5 }, "fan": { - "description": "Fan" + "description": "Fan", + "ambience": { + "scifi_nodes_ambience_fan": { + "interval": 7 + } + } }, "ppllght": { "description": "Purple wall light", diff --git a/nodes.lua b/nodes.lua index 38dfe9a..6b5b791 100644 --- a/nodes.lua +++ b/nodes.lua @@ -537,7 +537,8 @@ for name, def in pairs(nodes) do end -- register node - minetest.register_node("scifi_nodes:"..name, node_def) + local nodename = "scifi_nodes:" .. name + minetest.register_node(nodename , node_def) -- unified dyes registration if def.colorable and has_unifieddyes_mod then @@ -574,6 +575,12 @@ for name, def in pairs(nodes) do }) end + if def.ambience then + for soundname, opts in pairs(def.ambience) do + scifi_nodes.register_ambience(nodename, soundname, opts) + end + end + -- advtrains platform registration if has_advtrains_mod and def.advtrains_platform then advtrains.register_platform("scifi_nodes", "scifi_nodes:" .. name) diff --git a/sounds/scifi_nodes_ambience_engine.ogg b/sounds/scifi_nodes_ambience_engine.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ebf1acc42769a25213a649fc55349188bad73b97 GIT binary patch literal 52326 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 Op3(s&{xrL>Vh;cjIH4*4 literal 0 HcmV?d00001 diff --git a/sounds/scifi_nodes_ambience_vent.ogg b/sounds/scifi_nodes_ambience_vent.ogg new file mode 100644 index 0000000000000000000000000000000000000000..941a4dd5241c5e19e32e4f2e8154cdfab4f0a7be GIT binary patch literal 38518 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 Date: Fri, 7 Feb 2025 10:30:59 +0100 Subject: [PATCH 10/15] disable `facedir` param2type on weird looking nodes --- nodes.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nodes.json b/nodes.json index 86b44d7..5146d32 100644 --- a/nodes.json +++ b/nodes.json @@ -95,7 +95,8 @@ "description": "black tile" }, "blacktile2": { - "description": "black tile 2" + "description": "black tile 2", + "paramtype2": "none" }, "blackvent": { "description": "black vent" @@ -151,7 +152,8 @@ "description": "red metal block" }, "grey_square": { - "description": "grey metal block" + "description": "grey metal block", + "paramtype2": "none" }, "blue_square": { "description": "blue metal block" @@ -244,7 +246,8 @@ }, "blackdmg": { "description": "Damaged black wall", - "slat": true + "slat": true, + "paramtype2": "none" }, "blackdmgstripe": { "description": "Damaged black wall(stripes)" @@ -316,6 +319,7 @@ "description": "Black vent" }, "blackplate": { - "description": "Black plate" + "description": "Black plate", + "paramtype2": "none" } } \ No newline at end of file From 6fb3ded8ad12fe4dc887452806fe5e2a7704e945 Mon Sep 17 00:00:00 2001 From: Buckaroo Banzai <39065740+BuckarooBanzay@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:47:20 +0100 Subject: [PATCH 11/15] Add access cards (#88) * add access cards * colored cards * rename / recipes * impl * crafting fix * indent fixes * door groups fix (should not be diggable by hand) --------- Co-authored-by: BuckarooBanzay --- access_card.lua | 254 +++++++++++++++++++++++++++ doors.lua | 20 ++- init.lua | 1 + textures/scifi_nodes_access_card.png | Bin 0 -> 4871 bytes 4 files changed, 267 insertions(+), 8 deletions(-) create mode 100644 access_card.lua create mode 100644 textures/scifi_nodes_access_card.png diff --git a/access_card.lua b/access_card.lua new file mode 100644 index 0000000..4aadc1b --- /dev/null +++ b/access_card.lua @@ -0,0 +1,254 @@ +local FORMSPEC_NAME = "scifi_nodes:access_card_configure" + +local function create_id() + local template = "xxxxxx" + return string.gsub(template, '[x]', function () + return string.format('%x', math.random(0, 0xf)) + end) +end + +local function get_door_access_table(meta) + local str = meta:get_string("access") + if str == "" then + -- no config + return {} + else + return minetest.deserialize(str) or {} + end +end + +local function set_door_access_table(meta, at) + if next(at) then + meta:set_string("access", minetest.serialize(at)) + else + meta:set_string("access", "") + end +end + +function scifi_nodes.door_check_access_card(node_pos, itemstack, player) + local node_meta = minetest.get_meta(node_pos) + local access_table = get_door_access_table(node_meta) + if not next(access_table) then + -- access not restricted + return true + end + + local playername = player:get_player_name() + + if itemstack:get_name() ~= "scifi_nodes:access_card" then + minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: no access card detected!")) + minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 }) + return false + end + + local item_meta = itemstack:get_meta() + local id = item_meta:get_string("id") + if id == "" then + minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: unconfigured access card")) + minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 }) + return false + end + + if not access_table[id] then + minetest.chat_send_player(playername, minetest.colorize("#ff0000", "Access denied: invalid access card")) + minetest.sound_play("scifi_nodes_scanner_refused", { pos = node_pos, max_hear_distance = 10 }) + return false + end + + minetest.sound_play("scifi_nodes_scanner_granted", { pos = node_pos, max_hear_distance = 10 }) + return true +end + +-- using a card against a door toggles the access to it +local function on_use(itemstack, player, pointed_thing) + local playername = player:get_player_name() + local pos = pointed_thing.under + + if not pos then + -- nothing selected + return + end + + if minetest.is_protected(pos, playername) then + -- protected + return + end + + local node = minetest.get_node(pos) + local node_def = minetest.registered_nodes[node.name] + if not node_def.groups or not node_def.groups.scifi_nodes_door then + -- incompatible node + return + end + + local item_meta = itemstack:get_meta() + local card_id = item_meta:get_string("id") + if card_id == "" then + minetest.chat_send_player(playername, "Access card is unconfigured") + return + end + local card_name = item_meta:get_string("name") + + local node_meta = minetest.get_meta(pos) + local access_table = get_door_access_table(node_meta) + + if access_table[card_id] then + -- remove access + access_table[card_id] = nil + minetest.chat_send_player(playername, "Revoked access to card-id '" .. card_id .. "'") + minetest.sound_play("scifi_nodes_scanner_refused", { pos = pos, max_hear_distance = 10 }) + else + -- grant access + access_table[card_id] = card_name + minetest.chat_send_player(playername, "Granted access to card-id '" .. card_id .. "'") + minetest.sound_play("scifi_nodes_scanner_granted", { pos = pos, max_hear_distance = 10 }) + end + + local msg = "" + if next(access_table) then + msg = msg .. "Current registered cards: " + for id, name in pairs(access_table) do + msg = msg .. "Name: '" .. name .. "' ID: '" .. id .. "' / " + end + else + -- access table is empty + msg = "No access-card left in access-table, door is free to use" + end + minetest.chat_send_player(playername, msg) + + -- set new access table + set_door_access_table(node_meta, access_table) +end + +local function configure_access_card(meta, name) + local id = meta:get_string("id") + if id == "" then + -- set new id + id = create_id() + meta:set_string("id", id) + end + + meta:set_string("name", name) + meta:set_string("description", "Access card '" .. name .. "' (id: '" .. id .. "')") +end + +-- right-click with a card for rename/configuration +local function on_secondary_use(itemstack, player, pointed_thing) + local meta = itemstack:get_meta() + if meta:get_string("id") == "" then + -- initial configuration + configure_access_card(meta, "") + end + local name = meta:get_string("name") + + minetest.show_formspec(player:get_player_name(), FORMSPEC_NAME, [[ + size[10,1.4] + real_coordinates[true] + field[0.1,0.4;7,0.8;name;Name;]] .. minetest.formspec_escape(name) .. [[] + button_exit[7.3,0.4;2.5,0.8;save;Save] + ]]) + + return itemstack +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= FORMSPEC_NAME then + -- wrong formspec + return false + end + + if not fields.save and not fields.key_enter_field then + -- quit + return true + end + + local itemstack = player:get_wielded_item() + if itemstack:get_name() ~= "scifi_nodes:access_card" then + -- invalid item + return true + end + + local meta = itemstack:get_meta() + configure_access_card(meta, fields.name or "") + player:set_wielded_item(itemstack) +end) + +minetest.register_craftitem("scifi_nodes:access_card", { + description = "Access card (unconfigured)", + inventory_image = "scifi_nodes_access_card.png", + palette = "unifieddyes_palette_extended.png", + stack_max = 1, + paramtype2 = "color", + on_use = on_use, + on_secondary_use = on_secondary_use, + groups = { + ud_param2_colorable = 1 + } +}) + +-- initial recipe +minetest.register_craft({ + output = "scifi_nodes:access_card", + recipe = { + {"scifi_nodes:white2", "", ""}, + {"scifi_nodes:white_pad", "", ""}, + {"scifi_nodes:white2", "", ""} + } +}) + +-- copy recipe +minetest.register_craft({ + output = "scifi_nodes:access_card", + recipe = { + {"scifi_nodes:access_card", "scifi_nodes:white_pad", ""}, + {"", "", ""}, + {"", "", ""} + } +}) + +minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + if itemstack:get_name() ~= "scifi_nodes:access_card" then + return + end + + local original + local index + for i = 1, #old_craft_grid do + if old_craft_grid[i]:get_name() == "scifi_nodes:access_card" then + original = old_craft_grid[i] + index = i + break + end + end + if not original then + return + end + + -- copy metadata + local src_meta = original:get_meta() + local dst_meta = itemstack:get_meta() + local copy_fields = {"id", "name", "description"} + for _, fieldname in ipairs(copy_fields) do + dst_meta:set_string(fieldname, src_meta:get_string(fieldname)) + end + + if old_craft_grid[2]:get_name() == "scifi_nodes:white_pad" then + -- keep original item if the copy-recipe is used + craft_inv:set_stack("craft", index, original) + end +end) + +if minetest.get_modpath("unifieddyes") then + -- add colored crafts + unifieddyes.register_color_craft({ + output = "scifi_nodes:access_card", + palette = "extended", + neutral_node = "scifi_nodes:access_card", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + }, + type = "shapeless" + }) + +end \ No newline at end of file diff --git a/doors.lua b/doors.lua index 8f317d6..f9bdaf9 100644 --- a/doors.lua +++ b/doors.lua @@ -148,14 +148,18 @@ for _, current_door in ipairs(doors) do local adjacent = minetest.get_node({x=x, y=y, z=z}) if adjacent.name == target_opposite then - minetest.set_node({x=x, y=y, z=z}, {name=target, param2 = adjacent.param2}) - minetest.set_node({x=x, y=y+1, z=z}, {name=target_top, param2 = adjacent.param2}) + minetest.swap_node({x=x, y=y, z=z}, {name=target, param2 = adjacent.param2}) + minetest.swap_node({x=x, y=y+1, z=z}, {name=target_top, param2 = adjacent.param2}) end end end - local function open_door(pos, node) + local function open_door(pos, node, player, itemstack) + if not scifi_nodes.door_check_access_card(pos, itemstack, player) then + return + end + -- play sound minetest.sound_play(sound,{ max_hear_distance = 16, @@ -165,8 +169,8 @@ for _, current_door in ipairs(doors) do local timer = minetest.get_node_timer(pos) - minetest.set_node(pos, {name=opened, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=opened_top, param2=node.param2}) + minetest.swap_node(pos, {name=opened, param2=node.param2}) + minetest.swap_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=opened_top, param2=node.param2}) change_adjacent(opened, pos, node) @@ -188,8 +192,8 @@ for _, current_door in ipairs(doors) do local node = minetest.get_node(pos) - minetest.set_node(pos, {name=closed, param2=node.param2}) - minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=closed_top, param2=node.param2}) + minetest.swap_node(pos, {name=closed, param2=node.param2}) + minetest.swap_node({x=pos.x,y=pos.y+1,z=pos.z}, {name=closed_top, param2=node.param2}) change_adjacent(closed, pos, node) end @@ -242,7 +246,7 @@ for _, current_door in ipairs(doors) do paramtype2 = "facedir", groups = { cracky = 3, - oddly_breakable_by_hand = 1, + dig_generic = 3, scifi_nodes_door = 1, door = 1 }, diff --git a/init.lua b/init.lua index eec022a..4603e73 100644 --- a/init.lua +++ b/init.lua @@ -24,6 +24,7 @@ dofile(MP.."/ambience.lua") dofile(MP.."/plants.lua") dofile(MP.."/models.lua") dofile(MP.."/nodes.lua") +dofile(MP.."/access_card.lua") dofile(MP.."/doors.lua") dofile(MP.."/switch.lua") dofile(MP.."/protected_switch.lua") diff --git a/textures/scifi_nodes_access_card.png b/textures/scifi_nodes_access_card.png new file mode 100644 index 0000000000000000000000000000000000000000..6810e52d5753516cf164f83045664918cff396a4 GIT binary patch literal 4871 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 literal 0 HcmV?d00001 From e52a890883d29ccbc042815c8e216d6844996e73 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Mon, 10 Feb 2025 17:54:29 +0100 Subject: [PATCH 12/15] add nil-check to door access card check --- access_card.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/access_card.lua b/access_card.lua index 4aadc1b..a7a4a7a 100644 --- a/access_card.lua +++ b/access_card.lua @@ -33,6 +33,11 @@ function scifi_nodes.door_check_access_card(node_pos, itemstack, player) return true end + if not player or not player:is_player() then + -- not a player, restrict access + return false + end + local playername = player:get_player_name() if itemstack:get_name() ~= "scifi_nodes:access_card" then From cb95483a1276009c67bab5f2739b8072d8681b49 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Fri, 21 Feb 2025 13:09:24 +0100 Subject: [PATCH 13/15] fix player check, use builting `code.is_player(obj)` --- access_card.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access_card.lua b/access_card.lua index a7a4a7a..ee82676 100644 --- a/access_card.lua +++ b/access_card.lua @@ -33,7 +33,7 @@ function scifi_nodes.door_check_access_card(node_pos, itemstack, player) return true end - if not player or not player:is_player() then + if not minetest.is_player(player) then -- not a player, restrict access return false end From c6152371148dffb558f924045f0ebc3a8c9824b7 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Tue, 11 Mar 2025 08:36:18 +0100 Subject: [PATCH 14/15] fix missing texture in plastic slope code --- models.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.lua b/models.lua index 253f27c..e934a4b 100644 --- a/models.lua +++ b/models.lua @@ -31,8 +31,8 @@ end -- register some blocks in stairsplus if available (part of moreblocks) scifi_nodes.register_slope("white2", "Plastic", {"scifi_nodes_white2.png",}, 0, "stone") -scifi_nodes.register_slope("super_white", "Super Plastic", {"scifi_nodes_super_white.png",}, 11, "stone") -scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_ultra_white.png",},minetest.LIGHT_MAX, "stone") +scifi_nodes.register_slope("super_white", "Super Plastic", {"scifi_nodes_white2.png",}, 11, "stone") +scifi_nodes.register_slope("ultra_white", "Super Plastic", {"scifi_nodes_white2.png",},minetest.LIGHT_MAX, "stone") scifi_nodes.register_slope("black", "Black", {"scifi_nodes_black.png",}, 0) scifi_nodes.register_slope("white", "White", {"scifi_nodes_white.png",}, 0) scifi_nodes.register_slope("grey", "Grey", {"scifi_nodes_grey.png",}, 0) From b682b2123d839760992e75738b9623e3d1c93ee9 Mon Sep 17 00:00:00 2001 From: BuckarooBanzay Date: Tue, 11 Mar 2025 09:16:02 +0100 Subject: [PATCH 15/15] make `crate` game agnostic --- chest.lua | 9 +++++---- init.lua | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/chest.lua b/chest.lua index 2935a35..48b0a1b 100644 --- a/chest.lua +++ b/chest.lua @@ -1,16 +1,17 @@ +local has_default = minetest.get_modpath("default") --chest code from default(Copyright (C) 2012 celeron55, Perttu Ahola ) local chest_formspec = "size[8,9]" .. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. + (has_default and default.gui_bg or "") .. + (has_default and default.gui_bg_img or "") .. + (has_default and default.gui_slots or "") .. "list[current_name;main;0,0.3;8,4;]" .. "list[current_player;main;0,4.85;8,1;]" .. "list[current_player;main;0,6.08;8,3;8]" .. "listring[current_name;main]" .. "listring[current_player;main]" .. - default.get_hotbar_bg(0,4.85) + (has_default and default.get_hotbar_bg(0,4.85) or "") -- Helper functions local function drop_chest_stuff() diff --git a/init.lua b/init.lua index 4603e73..e1a672b 100644 --- a/init.lua +++ b/init.lua @@ -14,13 +14,13 @@ end dofile(MP.."/common.lua") if minetest.get_modpath("default") then - -- only load builder and chest if the default mod is available + -- only load builder if the default mod is available -- the formspecs depend on it dofile(MP.."/builder.lua") - dofile(MP.."/chest.lua") end dofile(MP.."/ambience.lua") +dofile(MP.."/chest.lua") dofile(MP.."/plants.lua") dofile(MP.."/models.lua") dofile(MP.."/nodes.lua")