From c7e8f481e080348cfa63473709c82943dc1dd326 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 15 Nov 2022 02:45:54 +0100 Subject: [PATCH] make inner spawn circle out of glass --- mobtest/init.lua | 63 +++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/mobtest/init.lua b/mobtest/init.lua index bf20383..1a4a79e 100644 --- a/mobtest/init.lua +++ b/mobtest/init.lua @@ -16,7 +16,7 @@ minetest.register_chatcommand("mobtest",{ local pos=p:get_pos() for k,v in pairs(minetest.registered_entities) do if v.is_mob then - local spos=vector.add(pos,get_point_on_circle(pos,28,32)) + local spos=get_point_on_circle(pos,28,32) local o = mcl_mobs.spawn(spos,v.name) if o then local l=o:get_luaentity() @@ -29,8 +29,20 @@ minetest.register_chatcommand("mobtest",{ end end}) -mcl_structures.register_structure("spawncircle",{ - place_func = function(pos,def,pr) +local function make_bubble(pos) + minetest.set_node(vector.offset(pos,0,-1,0),{name="mcl_core:obsidian"}) + minetest.set_node(vector.offset(pos,1,0,0),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,-1,0,0),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,0,0,1),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,0,0,-1),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,1,1,0),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,-1,1,0),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,0,1,1),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,0,1,-1),{name="mcl_core:glass"}) + minetest.set_node(vector.offset(pos,0,2,0),{name="mcl_core:glass"}) +end + +local function make_circle(pos,n1,n2,light) local p1 = vector.offset(pos,-36,-5,-36) local p2 = vector.offset(pos,36,5,36) local nn1 = minetest.find_nodes_in_area_under_air(p1,p2,{"group:solid","group:plant","group:leaves","group:tree","group:mushroom"}) @@ -48,47 +60,28 @@ mcl_structures.register_structure("spawncircle",{ local cobble = {} local brick = {} for k,v in pairs(c1) do - for i=1,6 do table.insert(cobble,vector.offset(v,0,(i-1),0)) end + for i=1,6 do table.insert(cobble,vector.offset(v,0,i,0)) end minetest.set_node(vector.offset(v,0,6,0),{name="mcl_stairs:slab_andesite_smooth"}) end for k,v in pairs(c2) do - for i=1,8 do table.insert(brick,vector.offset(v,0,(i-1),0)) end + for i=1,8 do table.insert(brick,vector.offset(v,0,i,0)) end minetest.set_node(vector.offset(v,0,8,0),{name="mcl_stairs:slab_diorite_smooth"}) end - minetest.bulk_set_node(cobble,{name="mcl_core:cobble"}) - minetest.bulk_set_node(brick,{name="mcl_core:stonebrick"}) - minetest.set_node(vector.offset(pos,0,-1,0),{name="mcl_core:obsidian"}) + if light then minetest.bulk_set_node(c1,{name="mcl_nether:glowstone"}) end + minetest.bulk_set_node(cobble,{name=n1}) + minetest.bulk_set_node(brick,{name=n2}) +end + +mcl_structures.register_structure("spawncircle",{ + place_func = function(pos,def,pr) + make_circle(pos,"mcl_core:glass","mcl_core:stonebrick") + make_bubble(pos) end },true) mcl_structures.register_structure("spawncircle_lit",{ place_func = function(pos,def,pr) - local p1 = vector.offset(pos,-36,-5,-36) - local p2 = vector.offset(pos,36,5,36) - local nn1 = minetest.find_nodes_in_area_under_air(p1,p2,{"group:solid","group:plant","group:leaves","group:tree","group:mushroom"}) - local c1 = {} - local c2 = {} - for k,v in pairs(nn1) do - local dst1=vector.distance(vector.round(vector.new(pos.x,0,pos.z)),vector.round(vector.new(v.x,0,v.z))) - local dst2=vector.distance(vector.round(vector.new(pos.x,0,pos.z)),vector.round(vector.new(v.x,0,v.z))) - if dst1 > 20 and dst1 < 22 then - table.insert(c1,v) - elseif dst2 > 33 and dst2 < 35 then - table.insert(c2,v) - end - end - local cobble = {} - local brick = {} - for k,v in pairs(c1) do - for i=1,6 do table.insert(cobble,vector.offset(v,0,(i-1),0)) end - minetest.set_node(vector.offset(v,0,6,0),{name="mcl_stairs:slab_andesite_smooth"}) - end - for k,v in pairs(c2) do - for i=1,8 do table.insert(brick,vector.offset(v,0,(i-1),0)) end - minetest.set_node(vector.offset(v,0,8,0),{name="mcl_stairs:slab_diorite_smooth"}) - end - minetest.bulk_set_node(cobble,{name="mcl_nether:glowstone"}) - minetest.bulk_set_node(brick,{name="mcl_ocean:sea_lantern"}) - minetest.set_node(vector.offset(pos,0,-1,0),{name="mcl_core:obsidian"}) + make_circle(pos,"mcl_core:glass","mcl_nether:glowstone",true) + make_bubble(pos) end },true)