From ef9d5f454d204253ad22352ddb98c3bb4d0edfb0 Mon Sep 17 00:00:00 2001 From: Maksim Date: Thu, 18 Aug 2022 12:52:52 +0300 Subject: [PATCH] Remove Protector Block --- protector.lua | 164 +-------------------------- textures/areas_protector_display.png | Bin 88 -> 0 bytes textures/areas_protector_stone.png | Bin 272 -> 0 bytes 3 files changed, 5 insertions(+), 159 deletions(-) delete mode 100644 textures/areas_protector_display.png delete mode 100644 textures/areas_protector_stone.png diff --git a/protector.lua b/protector.lua index b28f8a7..422a7b0 100644 --- a/protector.lua +++ b/protector.lua @@ -1,160 +1,6 @@ -local S = areas.S - -local radius = minetest.settings:get("areasprotector_radius") or 8 - -local function cyan(str) - return minetest.colorize("#7CFC00", str) -end - -local function red(str) - return minetest.colorize("#FF0000", str) -end - -local vadd, vnew = vector.add, vector.new - -minetest.register_node("areas:protector", { - description = S("Protector Block"), - tiles = { - "default_stonebrick_carved.png", - "default_stonebrick_carved.png", - "default_stonebrick_carved.png^areas_protector_stone.png" - }, - paramtype = "light", - groups = {cracky = 1, not_cuttable = 1}, - node_placement_prediction = "", - - on_place = function(itemstack, player, pointed_thing) - local pos = pointed_thing.above - local name = player and player:get_player_name() - - if not name or not minetest.is_protected(pos, name) then - -- Don't replace nodes that aren't buildable to - local old_node = minetest.get_node(pos) - local def = minetest.registered_nodes[old_node.name] - if not def or not def.buildable_to then - return itemstack - end - - local pos1 = vadd(pos, vnew(radius, radius, radius)) - local pos2 = vadd(pos, vnew(-radius, -radius, -radius)) - local perm, err = areas:canPlayerAddArea(pos1, pos2, name) - - if not perm then - minetest.chat_send_player(name, - red(S("You are not allowed to protect that area: @1", err))) - return itemstack - end - - if minetest.find_node_near(pos, radius / 2, {"areas:protector"}) then - minetest.chat_send_player(name, red(S("You have already protected this area."))) - return itemstack - end - - local id = areas:add(name, S("Protector Block"), pos1, pos2) - areas:save() - minetest.chat_send_player(name, - S("The area from @1 to @2 has been protected as ID @3", - cyan(minetest.pos_to_string(pos1)), cyan(minetest.pos_to_string(pos2)), cyan(id)) - ) - - minetest.set_node(pos, {name = "areas:protector"}) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Protected area @1, Owned by @2", id, name)) - meta:set_int("area_id", id) - itemstack:take_item() - end - - return itemstack - end, - - after_dig_node = function(_, _, oldmetadata, digger) - if oldmetadata and oldmetadata.fields then - local id = tonumber(oldmetadata.fields.area_id) - local name = digger and digger:get_player_name() or "" - if areas.areas[id] and areas:isAreaOwner(id, name) then - areas:remove(id) - areas:save() - minetest.chat_send_player(name, S("Removed area @1", cyan(id))) - end - end - end, - - on_punch = function(pos) - -- a radius of 0.5 since the entity serialization seems to be not that precise - local objs = minetest.get_objects_inside_radius(pos, 0.5) - for _, obj in pairs(objs) do - if not obj:is_player() and obj:get_luaentity().name == "areas:display" then - obj:remove() - return - end - end - - minetest.add_entity(pos, "areas:display") - end -}) - --- entities code below (and above) mostly copied-pasted from Zeg9's protector mod -minetest.register_entity("areas:display", { - physical = false, - collisionbox = {0}, - visual = "wielditem", - -- wielditem seems to be scaled to 1.5 times original node size - visual_size = {x = 1.0 / 1.5, y = 1.0 / 1.5}, - textures = {"areas:display_node"}, - timer = 0, - on_step = function(self, dtime) - self.timer = self.timer + dtime - if self.timer > 4 or - minetest.get_node(self.object:get_pos()).name ~= "areas:protector" then - self.object:remove() - end - end -}) - -local nb_radius = radius + 0.55 - -minetest.register_node("areas:display_node", { - tiles = {"areas_protector_display.png"}, - use_texture_alpha = "clip", - walkable = false, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - -- sides - {-nb_radius, -nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius}, - {-nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius, nb_radius}, - {nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius}, - {-nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius, -nb_radius}, - -- top - {-nb_radius, nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius}, - -- bottom - {-nb_radius, -nb_radius, -nb_radius, nb_radius, -nb_radius, nb_radius}, - -- middle (surround protector) - {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55} - } - }, - selection_box = {type = "regular"}, - paramtype = "light", - groups = {dig_immediate = 3, not_in_creative_inventory = 1}, - drop = "" -}) - -minetest.register_craft({ - output = "areas:protector", - type = "shapeless", - recipe = { - "default:stonebrickcarved", "default:stonebrickcarved", "default:stonebrickcarved", - "default:stonebrickcarved", "mesecons:wire_00000000_off", "default:stonebrickcarved", - "default:stonebrickcarved", "default:stonebrickcarved", "default:stonebrickcarved" - } -}) - --- MVPS stopper -if mesecon and mesecon.register_mvps_stopper then - mesecon.register_mvps_stopper("areas:protector") -end - -- Aliases -minetest.register_alias("areasprotector:protector", "areas:protector") -minetest.register_alias("areasprotector:display_node", "areas:display_node") +minetest.register_alias("areasprotector:protector", "default:stonebrickcarved") +minetest.register_alias("areasprotector:display_node", "air") + +minetest.register_alias("areas:protector", "default:stonebrickcarved") +minetest.register_alias("areas:display_node", "air") diff --git a/textures/areas_protector_display.png b/textures/areas_protector_display.png deleted file mode 100644 index 9120e10c22297501bbd4d4113997c5ccea9b9355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%_o-U3d7N?VE2yA$2uR4R#X9A}i kuY_sB6^1Nn2TnGI`JS^%Z+vd{0V-wiboFyt=akR{07b(VZvX%Q diff --git a/textures/areas_protector_stone.png b/textures/areas_protector_stone.png deleted file mode 100644 index d516a82c396e11c76ba4e373c31afd4de5262a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_2aP)5Crq5dDH#>37cpLl(nbn!*vZnY}E`&KBbgWHZ0A9udMma`2(z;HD17+XMlR# zfJ<|f0qRR*1`K4-uzLJ}fk%1xQ+5Cgcqq^hxIGOB1Tdk19q9ld62Pi(z`%$GG~n@o z7kmx3y!@wlf&sC=V@MEp^bl~4AHaI&1|qY+umf0c+(4xE7ghl4ts98k{sICb`|}M% zbbq`-ZhyGJg!YFUT!(spf4%`nfZX4oSRBFfzdjVf@=yfJ!x1?-L