From 31b94f5b2266b4ed46d9585480a9d92289312fa9 Mon Sep 17 00:00:00 2001 From: cora Date: Sun, 19 Jun 2022 00:17:43 +0200 Subject: [PATCH] Add "nether outpost" As a temporary solution until large nether fortresses are there. This is just a little tower containing some warts and a blaze spawner. --- mods/ITEMS/mcl_crimson/init.lua | 4 +- mods/MAPGEN/mcl_nether_fortresses/init.lua | 36 ++++++++++++++++++ mods/MAPGEN/mcl_nether_fortresses/mod.conf | 3 ++ .../schematics/nether_outpost.mts | Bin 0 -> 1392 bytes mods/MAPGEN/mcl_structures/api.lua | 4 ++ 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 mods/MAPGEN/mcl_nether_fortresses/init.lua create mode 100644 mods/MAPGEN/mcl_nether_fortresses/mod.conf create mode 100644 mods/MAPGEN/mcl_nether_fortresses/schematics/nether_outpost.mts diff --git a/mods/ITEMS/mcl_crimson/init.lua b/mods/ITEMS/mcl_crimson/init.lua index a7fe33f71..73c7f787d 100644 --- a/mods/ITEMS/mcl_crimson/init.lua +++ b/mods/ITEMS/mcl_crimson/init.lua @@ -6,11 +6,11 @@ local modpath = minetest.get_modpath(modname) -- adapted for mcl2 by cora local function generate_warped_tree(pos) - minetest.place_schematic(pos,modpath.."/schematics/warped_mushroom.mts","random",nil,false,"place_center_x,place_center_z") + minetest.place_schematic(pos,modpath.."/schematics/warped_fungus_1.mts","random",nil,false,"place_center_x,place_center_z") end function generate_crimson_tree(pos) - minetest.place_schematic(pos,modpath.."/schematics/crimson_mushroom.mts","random",nil,false,"place_center_x,place_center_z") + minetest.place_schematic(pos,modpath.."/schematics/crimson_fungus_1.mts","random",nil,false,"place_center_x,place_center_z") end minetest.register_node("mcl_crimson:warped_fungus", { diff --git a/mods/MAPGEN/mcl_nether_fortresses/init.lua b/mods/MAPGEN/mcl_nether_fortresses/init.lua new file mode 100644 index 000000000..8910669cd --- /dev/null +++ b/mods/MAPGEN/mcl_nether_fortresses/init.lua @@ -0,0 +1,36 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +mcl_structures.register_structure("nether_outpost",{ + place_on = {"mcl_nether:netherrack","mcl_crimson:crimson_nylium","mcl_crimson:warped_nylium","mcl_blackstone:basalt","mcl_blackstone:soul_soil"}, + noise_params = { + offset = 0, + scale = 0.00022, + spread = {x = 250, y = 250, z = 250}, + seed = 333, + octaves = 1, + persist = 0.0001, + flags = "absvalue", + }, + flags = "all_floors", + biomes = {"Nether","SoulsandValley","WarpedForest","CrimsonForest","BasaltDelta"}, + on_place = function(pos,def,pr) + local sidelen = 15 + local node = minetest.get_node(vector.offset(pos,1,1,0)) + local solid = minetest.find_nodes_in_area(vector.offset(pos,-sidelen/2,-1,-sidelen/2),vector.offset(pos,sidelen/2,-1,sidelen/2),{"group:solid"}) + local air = minetest.find_nodes_in_area(vector.offset(pos,-sidelen/2,1,-sidelen/2),vector.offset(pos,sidelen/2,4,sidelen/2),{"air"}) + if #solid < ( sidelen * sidelen ) or + #air < (sidelen * sidelen ) then return false end + minetest.bulk_set_node(solid,node) + return true + end, + y_min = mcl_vars.mg_lava_nether_max, + y_max = mcl_vars.mg_nether_max - 30, + filenames = { modpath.."/schematics/nether_outpost.mts" }, + y_offset = 0, + after_place = function(pos) + local sp = minetest.find_nodes_in_area(pos,vector.offset(pos,0,20,0),{"mcl_mobspawners:spawner"}) + if not sp[1] then return end + mcl_mobspawners.setup_spawner(sp[1], "mobs_mc:blaze", 0, minetest.LIGHT_MAX+1, 10, 3, -1) + end +}) diff --git a/mods/MAPGEN/mcl_nether_fortresses/mod.conf b/mods/MAPGEN/mcl_nether_fortresses/mod.conf new file mode 100644 index 000000000..7d1565ff3 --- /dev/null +++ b/mods/MAPGEN/mcl_nether_fortresses/mod.conf @@ -0,0 +1,3 @@ +name = mcl_nether_fortresses +author = cora +depends = mcl_init, mcl_structures, mcl_mobspawners diff --git a/mods/MAPGEN/mcl_nether_fortresses/schematics/nether_outpost.mts b/mods/MAPGEN/mcl_nether_fortresses/schematics/nether_outpost.mts new file mode 100644 index 0000000000000000000000000000000000000000..7fba741bffc627745bed98dad8e688552a64664e GIT binary patch literal 1392 zcmeYb3HD`RVc=!pXW*?z1q@OQ%!!#r49dC5Iq}6MiJ3*kR$wYVFSR5iwJ1KRC^I=b zKEJdiwTM9$uObF1kaT%sPEN5^QECcAKSaABgE&YIB4mYZG9FE)c;rkVZb?hcOHM6D zF%Tj~$Um8Rd8tKs%r|0?MsjdbY6?nlFo+;Yrsw3B7nkJcr83BXL}6i=lbD362PK5j zW#d!wOOtX^Q4B85FU^TBPRvVTkU+8y8hGW2MJ4eD3<~(Hj4#PAfcOJ@q!{2d*a)W# zG$wQNlZp!x%kxq}$pyk-5X0_Dh*1z1pri>SNTR@$v1E`08I_cin4Ap`Sx8WnZkd*MeFRykiy`{yCXaA|Rq%$F1L4?JhR?>rqilQ(GAn+u zI|OH*_WLufJfCl?gSN%f-4~uOFnha#b*I=n>04!{z5n$bzO&x`yn92q?gMk-wXIeY z#KLcvCNSQ8e4XjowX26deQ!#d;N>#y<;45k;#X>)-2K9T`Td%CRW-&>KE+Ag>pgXf zFMdj|v-!pn8Bfsc8mYH#eNos9+!4-l2X)iM} z`A;6YvT4J!X{>P*wgrpb*|=z%t7r12hI&SCo}>**9qwXxw5G6@r+&~|!$0--kH`b@ zYOAaMZF26|{YGuGK=p57w_A^e>`%IQbnl&b;Pe%f#q&?Q?4Dpaaq@}E$<}xC5^mSp zOXo!IsQ$w6?)OiD3z~_!-N()sFO+a!ez8UED1#q^&1L3!QT^TLo$Vq$j1+e3e3@14 z-S$F0vcl{yf8>Vwt+AUgB)EC5e)QtX)(WqaPLHFzRyZU!E}J+_F=$(FQ|iNFrdwqq S0*fuZvliR@V4wQ_>0AJ(zFc|$ literal 0 HcmV?d00001 diff --git a/mods/MAPGEN/mcl_structures/api.lua b/mods/MAPGEN/mcl_structures/api.lua index b3d0491ee..3a3a84b92 100644 --- a/mods/MAPGEN/mcl_structures/api.lua +++ b/mods/MAPGEN/mcl_structures/api.lua @@ -8,6 +8,10 @@ function mcl_structures.place_structure(pos, def, pr) elseif def.y_offset then y_offset = def.y_offset end + if def.on_place and not def.on_place(pos,def,pr) then + minetest.log("warning","[mcl_structures] "..def.name.." at "..minetest.pos_to_string(pos).." not placed. Conditions not satisfied.") + return false + end if def.filenames then local file = def.filenames[pr:next(1,#def.filenames)] local pp = vector.offset(pos,0,y_offset,0)