From 168180ea3441b52de267f3ca12a1fd4afc54efc7 Mon Sep 17 00:00:00 2001 From: Shepel Pavel Date: Sun, 22 Dec 2024 15:31:17 +0300 Subject: [PATCH] fix: fix dupe airblock (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил проверку на права креатива у игрока при установке air блока. Эта правка исключает дюп блоков воздуха. Co-authored-by: Andrey Stepanov Reviewed-on: https://git.luanti.ru/MTSR/tech_additions/pulls/5 Reviewed-by: Koldun Co-authored-by: Shepel Pavel Co-committed-by: Shepel Pavel --- airblock.lua | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/airblock.lua b/airblock.lua index 2003399..81a00a0 100644 --- a/airblock.lua +++ b/airblock.lua @@ -1,7 +1,19 @@ 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() + if not minetest.is_creative_enabled(name) then + return + end + local pos = user:getpos() local dir = user:get_look_dir() local distancefromplayer = 3 @@ -10,12 +22,14 @@ 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 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