From b81d1d3f2debcab4d18cf4dee824075ef0bbb116 Mon Sep 17 00:00:00 2001 From: Lejo <Lejo_1@web.de> Date: Sat, 13 Apr 2019 20:45:49 +0200 Subject: [PATCH] Check protection of the forcefield and Quarry (#468) --- technic/machines/HV/quarry.lua | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) diff --git a/technic/machines/HV/quarry.lua b/technic/machines/HV/quarry.lua index 0a45559..9cf378f 100644 --- a/technic/machines/HV/quarry.lua +++ b/technic/machines/HV/quarry.lua @@ -60,6 +60,12 @@ end local function quarry_receive_fields(pos, formname, fields, sender) + local player_name = sender:get_player_name() + if minetest.is_protected(pos, player_name) then + minetest.chat_send_player(player_name, "You are not allowed to edit this!") + minetest.record_protection_violation(pos, player_name) + return + end local meta = minetest.get_meta(pos) if fields.size and string.find(fields.size, "^[0-9]+$") then local size = tonumber(fields.size) @@ -112,6 +118,11 @@ if meta:get_int("enabled") and meta:get_int("HV_EU_input") >= quarry_demand and meta:get_int("purge_on") == 0 then local pdir = minetest.facedir_to_dir(node.param2) + if pdir.y ~= 0 then + -- faces up or down, not valid, otherwise depth-check would run endless and hang up the server + return + end + local qdir = pdir.x == 1 and vector.new(0,0,-1) or (pdir.z == -1 and vector.new(-1,0,0) or (pdir.x == -1 and vector.new(0,0,1) or @@ -124,7 +135,7 @@ vector.multiply(qdir, -radius)) local owner = meta:get_string("owner") local nd = meta:get_int("dug") - while nd ~= diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do + while nd < diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do local ry = math.floor(nd / (diameter*diameter)) local ndl = nd % (diameter*diameter) if ry % 2 == 1 then -- Gitblit v1.8.0