From 23a8258a3578832462cd9e270ae2e1c2e750f99a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 23 Jul 2022 14:23:24 +0200 Subject: [PATCH] Check node handler for mobspawn/village node --- mods/mobs/api.lua | 8 ++++++-- mods/rp_village/mapgen.lua | 21 +++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua index dbed7630..ee990b8b 100644 --- a/mods/mobs/api.lua +++ b/mods/mobs/api.lua @@ -1630,13 +1630,17 @@ function mobs:register_egg(mobname, desc, background) inventory_image = invimg, groups = { spawn_egg = 1 }, on_place = function(itemstack, placer, pointed_thing) + local handled, handled_itemstack = util.on_place_pointed_node_handler(itemstack, placer, pointed_thing) + if handled then + return handled_itemstack + end local pname = placer:get_player_name() if peaceful_only and minetest.registered_entities[mobname].type == "monster" then minetest.chat_send_player(pname, minetest.colorize("#FFFF00", S("Hostile mobs are disabled!"))) return itemstack end - local pos = pointed_thing.above - if pointed_thing.above then + if pointed_thing.type == "node" then + local pos = pointed_thing.above if minetest.is_protected(pos, pname) and not minetest.check_player_privs(placer, "protection_bypass") then minetest.record_protection_violation(pos, pname) diff --git a/mods/rp_village/mapgen.lua b/mods/rp_village/mapgen.lua index 49b843e7..8fc85c3e 100644 --- a/mods/rp_village/mapgen.lua +++ b/mods/rp_village/mapgen.lua @@ -30,15 +30,20 @@ local check_priv = function(player) end local place_entity_spawner = function(itemstack, placer, pointed_thing) - if not check_priv(placer) then - return itemstack - end if pointed_thing.type ~= "node" then return itemstack end if util.handle_node_protection(placer, pointed_thing) then return itemstack end + local handled, handled_itemstack = util.on_place_pointed_node_handler(itemstack, placer, pointed_thing) + if handled then + return handled_itemstack + end + if not check_priv(placer) then + return itemstack + end + local place_pos itemstack, place_pos = minetest.item_place(itemstack, placer, pointed_thing) if placer and placer:is_player() then @@ -124,15 +129,19 @@ local village_info = { } local use_village_spawner = function(itemstack, placer, pointed_thing) - if not check_priv(placer) then - return itemstack - end if not pointed_thing.type == "node" then return itemstack end if util.handle_node_protection(placer, pointed_thing) then return itemstack end + local handled, handled_itemstack = util.on_place_pointed_node_handler(itemstack, placer, pointed_thing) + if handled then + return handled_itemstack + end + if not check_priv(placer) then + return itemstack + end local pos = pointed_thing.above