From 462ac0bd6e09bcaff11e790c1e22f28ff55cfcde Mon Sep 17 00:00:00 2001 From: NatureFreshMilk Date: Tue, 2 Apr 2019 15:14:59 +0200 Subject: [PATCH] lua mod refactoring --- mapserver_mod/mapserver/border.lua | 40 +++++++++++----------------- mapserver_mod/mapserver/common.lua | 28 ++++++++++++++++++++ mapserver_mod/mapserver/init.lua | 1 + mapserver_mod/mapserver/label.lua | 32 ++++++++--------------- mapserver_mod/mapserver/poi.lua | 32 ++++++++--------------- mapserver_mod/mapserver/train.lua | 42 ++++++++++++------------------ 6 files changed, 82 insertions(+), 93 deletions(-) create mode 100644 mapserver_mod/mapserver/common.lua diff --git a/mapserver_mod/mapserver/border.lua b/mapserver_mod/mapserver/border.lua index da84567..f586251 100644 --- a/mapserver_mod/mapserver/border.lua +++ b/mapserver_mod/mapserver/border.lua @@ -27,18 +27,8 @@ minetest.register_node("mapserver:border", { }, groups = {cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), - - can_dig = function(pos, player) - local meta = minetest.env:get_meta(pos) - local owner = meta:get_string("owner") - - return player and player:get_player_name() == owner - end, - - after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - end, + can_dig = mapserver.can_dig, + after_place_node = mapserver.after_place_node, on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -52,22 +42,22 @@ minetest.register_node("mapserver:border", { end, on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local playername = sender:get_player_name() - if playername == meta:get_string("owner") then - -- owner - if fields.save then - last_name = fields.name - meta:set_string("name", fields.name) - local index = tonumber(fields.index) - if index ~= nil then - last_index = index - meta:set_int("index", index) - end - end + if not mapserver.can_interact(pos, sender) then + return end + local meta = minetest.get_meta(pos) + + if fields.save then + last_name = fields.name + meta:set_string("name", fields.name) + local index = tonumber(fields.index) + if index ~= nil then + last_index = index + meta:set_int("index", index) + end + end update_formspec(meta) end diff --git a/mapserver_mod/mapserver/common.lua b/mapserver_mod/mapserver/common.lua new file mode 100644 index 0000000..2f2a551 --- /dev/null +++ b/mapserver_mod/mapserver/common.lua @@ -0,0 +1,28 @@ + +mapserver.can_dig = function(pos, player) + local meta = minetest.env:get_meta(pos) + local owner = meta:get_string("owner") + + return player and player:get_player_name() == owner +end + +mapserver.after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") +end + +mapserver.can_interact = function(pos, player) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local playername = player:get_player_name() + + if playername == owner then + return true + end + + if minetest.check_player_privs(playername, {protection_bypass = true}) then + return true + end + + return false +end diff --git a/mapserver_mod/mapserver/init.lua b/mapserver_mod/mapserver/init.lua index cfeed41..47be011 100644 --- a/mapserver_mod/mapserver/init.lua +++ b/mapserver_mod/mapserver/init.lua @@ -2,6 +2,7 @@ mapserver = {} local MP = minetest.get_modpath("mapserver") +dofile(MP.."/common.lua") dofile(MP.."/poi.lua") dofile(MP.."/train.lua") dofile(MP.."/label.lua") diff --git a/mapserver_mod/mapserver/label.lua b/mapserver_mod/mapserver/label.lua index c835317..1d0f26f 100644 --- a/mapserver_mod/mapserver/label.lua +++ b/mapserver_mod/mapserver/label.lua @@ -28,18 +28,8 @@ minetest.register_node("mapserver:label", { }, groups = {cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), - - can_dig = function(pos, player) - local meta = minetest.env:get_meta(pos) - local owner = meta:get_string("owner") - - return player and player:get_player_name() == owner - end, - - after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - end, + can_dig = mapserver.can_dig, + after_place_node = mapserver.after_place_node, on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -52,18 +42,18 @@ minetest.register_node("mapserver:label", { end, on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local playername = sender:get_player_name() - if playername == meta:get_string("owner") then - -- owner - if fields.save then - meta:set_string("text", fields.text) - meta:set_string("direction", fields.direction) - meta:set_string("size", fields.size) - end + if not mapserver.can_interact(pos, sender) then + return end + local meta = minetest.get_meta(pos) + + if fields.save then + meta:set_string("text", fields.text) + meta:set_string("direction", fields.direction) + meta:set_string("size", fields.size) + end update_formspec(meta) end diff --git a/mapserver_mod/mapserver/poi.lua b/mapserver_mod/mapserver/poi.lua index d8d4a45..cfe0fec 100644 --- a/mapserver_mod/mapserver/poi.lua +++ b/mapserver_mod/mapserver/poi.lua @@ -28,18 +28,8 @@ minetest.register_node("mapserver:poi", { }, groups = {cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), - - can_dig = function(pos, player) - local meta = minetest.env:get_meta(pos) - local owner = meta:get_string("owner") - - return player and player:get_player_name() == owner - end, - - after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - end, + can_dig = mapserver.can_dig, + after_place_node = mapserver.after_place_node, on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -52,18 +42,18 @@ minetest.register_node("mapserver:poi", { end, on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local playername = sender:get_player_name() - if playername == meta:get_string("owner") then - -- owner - if fields.save then - meta:set_string("name", fields.name) - meta:set_string("url", fields.url) - meta:set_string("category", fields.category) - end + if not mapserver.can_interact(pos, sender) then + return end + local meta = minetest.get_meta(pos) + + if fields.save then + meta:set_string("name", fields.name) + meta:set_string("url", fields.url) + meta:set_string("category", fields.category) + end update_formspec(meta) end diff --git a/mapserver_mod/mapserver/train.lua b/mapserver_mod/mapserver/train.lua index 98b528e..6bc50c1 100644 --- a/mapserver_mod/mapserver/train.lua +++ b/mapserver_mod/mapserver/train.lua @@ -29,18 +29,8 @@ minetest.register_node("mapserver:train", { }, groups = {cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), - - can_dig = function(pos, player) - local meta = minetest.env:get_meta(pos) - local owner = meta:get_string("owner") - - return player and player:get_player_name() == owner - end, - - after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - end, + can_dig = mapserver.can_dig, + after_place_node = mapserver.after_place_node, on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -55,23 +45,23 @@ minetest.register_node("mapserver:train", { end, on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local playername = sender:get_player_name() - if playername == meta:get_string("owner") then - -- owner - if fields.save then - last_line = fields.line - meta:set_string("line", fields.line) - meta:set_string("station", fields.station) - local index = tonumber(fields.index) - if index ~= nil then - last_index = index - meta:set_int("index", index) - end - end + if not mapserver.can_interact(pos, sender) then + return end + local meta = minetest.get_meta(pos) + + if fields.save then + last_line = fields.line + meta:set_string("line", fields.line) + meta:set_string("station", fields.station) + local index = tonumber(fields.index) + if index ~= nil then + last_index = index + meta:set_int("index", index) + end + end update_formspec(meta) end