From 10e4dd92a045203420c87c3de1db25bfe4633d34 Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Thu, 21 Jan 2021 11:10:17 +0000 Subject: [PATCH] spawner spawns mob in it's own medium (air, water etc.) --- spawner.lua | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spawner.lua b/spawner.lua index da86301..bfcdcba 100644 --- a/spawner.lua +++ b/spawner.lua @@ -23,9 +23,9 @@ minetest.register_node("mobs:spawner", { -- text entry formspec meta:set_string("formspec", - "size[9,3.5]" + "size[10,3.5]" .. "label[0.15,0.5;" .. minetest.formspec_escape(head) .. "]" - .. "field[1,2.5;7.5,0.8;text;" .. S("Command:") + .. "field[1,2.5;8.5,0.8;text;" .. S("Command:") .. ";${command}]") meta:set_string("infotext", S("Spawner Not Active (enter settings)")) @@ -162,10 +162,17 @@ minetest.register_abm({ end end + -- set medium mob usually spawns in (defaults to air) + local reg = minetest.registered_entities[mob].fly_in + + if not reg or type(reg) == "string" then + reg = {(reg or "air")} + end + -- find air blocks within 5 nodes of spawner local air = minetest.find_nodes_in_area( {x = pos.x - 5, y = pos.y + yof, z = pos.z - 5}, - {x = pos.x + 5, y = pos.y + yof, z = pos.z + 5}, {"air"}) + {x = pos.x + 5, y = pos.y + yof, z = pos.z + 5}, reg) -- spawn in random air block if air and #air > 0 then