From 9c157df9e11324555f3d1ce5a408891a65cad388 Mon Sep 17 00:00:00 2001 From: Shepel Pavel Date: Sun, 22 Dec 2024 11:29:39 +0300 Subject: [PATCH 1/4] fix: fix dupe airblock --- airblock.lua | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/airblock.lua b/airblock.lua index 2003399..d8f38a9 100644 --- a/airblock.lua +++ b/airblock.lua @@ -2,21 +2,23 @@ local S = minetest.get_translator("tech_additions") local placeairblock = function () return function(itemstack, user, pointed_thing) - local pos = user:getpos() - local dir = user:get_look_dir() - local distancefromplayer = 3 - local new_pos = { - x = pos.x + (dir.x * distancefromplayer), - y = pos.y + 1 + (dir.y * distancefromplayer), - z = pos.z + (dir.z * distancefromplayer), - } - local getPos = minetest.get_node(new_pos) - if getPos.name == "air" or - getPos.name == "default:water_source" or - getPos.name == "default:water_flowing" or - getPos.name == "default:river_water_source" or - getPos.name == "default:river_water_flowing" then - minetest.set_node(new_pos, {name="tech_additions:air_block"}) + if minetest.is_creative_enabled(user:get_player_name()) then + local pos = user:getpos() + local dir = user:get_look_dir() + local distancefromplayer = 3 + local new_pos = { + x = pos.x + (dir.x * distancefromplayer), + y = pos.y + 1 + (dir.y * distancefromplayer), + z = pos.z + (dir.z * distancefromplayer), + } + local getPos = minetest.get_node(new_pos) + if getPos.name == "air" or + getPos.name == "default:water_source" or + getPos.name == "default:water_flowing" or + getPos.name == "default:river_water_source" or + getPos.name == "default:river_water_flowing" then + minetest.set_node(new_pos, {name="tech_additions:air_block"}) + end end end end -- 2.49.0 From 88cbd331b43e15e26133827333a6ec9a682cbf58 Mon Sep 17 00:00:00 2001 From: Shepel Pavel Date: Sun, 22 Dec 2024 14:08:52 +0300 Subject: [PATCH 2/4] feat: correct privs of the air block --- airblock.lua | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/airblock.lua b/airblock.lua index d8f38a9..c5b35e4 100644 --- a/airblock.lua +++ b/airblock.lua @@ -2,16 +2,20 @@ local S = minetest.get_translator("tech_additions") local placeairblock = function () return function(itemstack, user, pointed_thing) - if minetest.is_creative_enabled(user:get_player_name()) then - local pos = user:getpos() - local dir = user:get_look_dir() - local distancefromplayer = 3 - local new_pos = { - x = pos.x + (dir.x * distancefromplayer), - y = pos.y + 1 + (dir.y * distancefromplayer), - z = pos.z + (dir.z * distancefromplayer), - } - local getPos = minetest.get_node(new_pos) + local name = user:get_player_name() + local pos = user:getpos() + local dir = user:get_look_dir() + local distancefromplayer = 3 + local new_pos = { + x = pos.x + (dir.x * distancefromplayer), + y = pos.y + 1 + (dir.y * distancefromplayer), + z = pos.z + (dir.z * distancefromplayer), + } + local getPos = minetest.get_node(new_pos) + if + not minetest.is_protected(new_pos, name) and + minetest.is_creative_enabled(name) + then if getPos.name == "air" or getPos.name == "default:water_source" or getPos.name == "default:water_flowing" or -- 2.49.0 From f85ef21668a45eb9693b99fa9ecb6152ac57a218 Mon Sep 17 00:00:00 2001 From: Andrey Stepanov Date: Sun, 22 Dec 2024 17:26:28 +0500 Subject: [PATCH 3/4] improve protaction against air_block --- airblock.lua | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/airblock.lua b/airblock.lua index c5b35e4..5a8109d 100644 --- a/airblock.lua +++ b/airblock.lua @@ -3,6 +3,10 @@ local S = minetest.get_translator("tech_additions") local placeairblock = function () return function(itemstack, user, pointed_thing) local name = user:get_player_name() + if not minetest.is_creative_enabled(name) then + return + end + local pos = user:getpos() local dir = user:get_look_dir() local distancefromplayer = 3 @@ -11,18 +15,19 @@ local placeairblock = function () y = pos.y + 1 + (dir.y * distancefromplayer), z = pos.z + (dir.z * distancefromplayer), } + + if minetest.is_protected(new_pos, name) then + minetest.record_protection_violation(new_pos, name) + return + end + local getPos = minetest.get_node(new_pos) - if - not minetest.is_protected(new_pos, name) and - minetest.is_creative_enabled(name) - then - if getPos.name == "air" or - getPos.name == "default:water_source" or - getPos.name == "default:water_flowing" or - getPos.name == "default:river_water_source" or - getPos.name == "default:river_water_flowing" then - minetest.set_node(new_pos, {name="tech_additions:air_block"}) - end + if getPos.name == "air" or + getPos.name == "default:water_source" or + getPos.name == "default:water_flowing" or + getPos.name == "default:river_water_source" or + getPos.name == "default:river_water_flowing" then + minetest.set_node(new_pos, {name="tech_additions:air_block"}) end end end -- 2.49.0 From 0010d400e08df4f6e1bc06e7400059b83d02bd50 Mon Sep 17 00:00:00 2001 From: Andrey Stepanov Date: Sun, 22 Dec 2024 17:27:05 +0500 Subject: [PATCH 4/4] [air_block] refactor old nodes check --- airblock.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/airblock.lua b/airblock.lua index 5a8109d..81a00a0 100644 --- a/airblock.lua +++ b/airblock.lua @@ -1,5 +1,12 @@ local S = minetest.get_translator("tech_additions") +local replace_allowed = {} +replace_allowed["air"] = true +replace_allowed["default:water_source"] = true +replace_allowed["default:water_flowing"] = true +replace_allowed["default:river_water_source"] = true +replace_allowed["default:river_water_flowing"] = true + local placeairblock = function () return function(itemstack, user, pointed_thing) local name = user:get_player_name() @@ -22,11 +29,7 @@ local placeairblock = function () end local getPos = minetest.get_node(new_pos) - if getPos.name == "air" or - getPos.name == "default:water_source" or - getPos.name == "default:water_flowing" or - getPos.name == "default:river_water_source" or - getPos.name == "default:river_water_flowing" then + if replace_allowed[getPos.name] then minetest.set_node(new_pos, {name="tech_additions:air_block"}) end end -- 2.49.0