From b4809982c5924190066a2d4892c02b4706a63df9 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 31 Aug 2022 11:41:04 +0200 Subject: [PATCH] Add end boats and shipwrecks --- mods/MAPGEN/mcl_structures/end_city.lua | 117 ++++++++++++++++++ mods/MAPGEN/mcl_structures/init.lua | 1 + .../schematics/mcl_structures_end_boat.mts | Bin 0 -> 273 bytes .../mcl_structures_end_shipwreck_1.mts | Bin 0 -> 1465 bytes 4 files changed, 118 insertions(+) create mode 100644 mods/MAPGEN/mcl_structures/end_city.lua create mode 100644 mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_boat.mts create mode 100644 mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_shipwreck_1.mts diff --git a/mods/MAPGEN/mcl_structures/end_city.lua b/mods/MAPGEN/mcl_structures/end_city.lua new file mode 100644 index 000000000..11e5b6fbf --- /dev/null +++ b/mods/MAPGEN/mcl_structures/end_city.lua @@ -0,0 +1,117 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +local function spawn_shulkers(pos,def,pr) + local nn = minetest.find_nodes_in_area_under_air(vector.offset(pos,-def.sidelen/2,-1,-def.sidelen/2),vector.offset(pos,def.sidelen/2,def.sidelen,def.sidelen/2),def.construct_nodes) + if nn and #nn > 0 then + local n = pr:next(1,#nn) + for i = 1,n do + minetest.add_entity(vector.offset(nn[i],0,1,0),"mobs_mc:shulker") + end + end +end + +mcl_structures.register_structure("end_shipwreck",{ + place_on = {"mcl_end:end_stone"}, + fill_ratio = 0.01, + flags = "place_center_x, place_center_z, all_floors", + y_offset = function(pr) return pr:next(-50,-20) end, + chunk_probability = 1900, + y_max = mcl_vars.mg_end_max, + y_min = mcl_vars.mg_end_min -100, + biomes = { "End", "EndHighlands", "EndMidlands", "EndBarrens", "EndSmallIslands" }, + sidelen = 32, + filenames = { + modpath.."/schematics/mcl_structures_end_shipwreck_1.mts", + }, + construct_nodes = {"mcl_chests:ender_chest_small","mcl_chests:ender_chest","mcl_brewing:stand_000"}, + after_place = spawn_shulkers, + loot = { + [ "mcl_chests:chest_small" ] ={{ + stacks_min = 2, + stacks_max = 6, + items = { + { itemstring = "mcl_mobitems:bone", weight = 20, amount_min = 4, amount_max=6 }, + { itemstring = "mcl_farming:beetroot_seeds", weight = 16, amount_min = 1, amount_max=10 }, + { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, + --{ itemstring = "mcl_bamboo:bamboo", weight = 15, amount_min = 1, amount_max=3 }, --FIXME BAMBOO + { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 4, amount_max = 8 }, + { itemstring = "mcl_core:diamond", weight = 3, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_mobitems:saddle", weight = 3, }, + { itemstring = "mcl_core:emerald", weight = 2, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_books:book", weight = 1, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mcl_tools:pick_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:shovel_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:sword_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:helmet_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:chestplate_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:leggings_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:boots_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:pick_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:shovel_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:sword_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:helmet_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:chestplate_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:leggings_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:boots_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_core:emerald", weight = 2, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_mobitems:iron_horse_armor", weight = 1, }, + { itemstring = "mcl_mobitems:gold_horse_armor", weight = 1, }, + { itemstring = "mcl_mobitems:diamond_horse_armor", weight = 1, }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, + { itemstring = "mcl_elytra:elytra", weight = 1, }, + } + }} + } +}) + +mcl_structures.register_structure("end_boat",{ + place_on = {"mcl_end:end_stone"}, + fill_ratio = 0.01, + flags = "place_center_x, place_center_z, all_floors", + y_offset = function(pr) return pr:next(15,30) end, + chunk_probability = 1200, + y_max = mcl_vars.mg_end_max, + y_min = mcl_vars.mg_end_min -100, + biomes = { "End", "EndHighlands", "EndMidlands", "EndBarrens", "EndSmallIslands" }, + sidelen = 20, + filenames = { + modpath.."/schematics/mcl_structures_end_boat.mts", + }, + after_place = spawn_shulkers, + construct_nodes = {"mcl_chests:ender_chest_small","mcl_chests:ender_chest","mcl_brewing:stand_000"}, + loot = { + [ "mcl_chests:chest_small" ] ={{ + stacks_min = 2, + stacks_max = 6, + items = { + { itemstring = "mcl_mobitems:bone", weight = 20, amount_min = 4, amount_max=6 }, + { itemstring = "mcl_farming:beetroot_seeds", weight = 16, amount_min = 1, amount_max=10 }, + { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_core:iron_ingot", weight = 15, amount_min = 4, amount_max = 8 }, + { itemstring = "mcl_core:diamond", weight = 3, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_mobitems:saddle", weight = 3, }, + { itemstring = "mcl_core:emerald", weight = 2, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_tools:pick_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:shovel_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:sword_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:helmet_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:chestplate_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:leggings_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:boots_iron_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:pick_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_tools:shovel_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:helmet_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:leggings_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_armor:boots_diamond_enchanted", weight = 3,func = function(stack, pr) mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, + { itemstring = "mcl_core:emerald", weight = 2, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_mobitems:iron_horse_armor", weight = 1, }, + { itemstring = "mcl_mobitems:gold_horse_armor", weight = 1, }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2, }, + } + }} + } +}) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index c4a69fa64..afa16904f 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -233,6 +233,7 @@ dofile(modpath.."/ruined_portal.lua") dofile(modpath.."/geode.lua") dofile(modpath.."/pillager_outpost.lua") dofile(modpath.."/end_spawn.lua") +dofile(modpath.."/end_city.lua") mcl_structures.register_structure("desert_well",{ diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_boat.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_boat.mts new file mode 100644 index 0000000000000000000000000000000000000000..a334a4bdcd7672f39e926e446594f7e659dfec28 GIT binary patch literal 273 zcmeYb3HD`RVPIomV&JN;XJBVwPRuM~P|i)xi7zfm%q%Ll0#oq?r9}m$Me#{F`N`Sw z`K2YPMGUfd6)}i_q*L=!tdO-bh=D|tGg6C7imkv@d~t4KP7Z?%l6Y!fN@@{A5mZ(b zB%4%}TArDg4suXlO1y!ALB*V-z0rIP1{^Hg`E48fA6J!5FI)I4R=C|EP1CcHoilRk zj4rM-qTJO>_kKS&zd9p(rA9yZ{@1GO*pgbdAJeX9bb}P0MUr#wSvr? zoWvsR<{4lYHpeb(!XShk5)hwZS89n}*bL%bjKDF21SvEaQu9($iy$0mU??L6Qdwqx zPHIVfaYkuQc4|?4Qho(;h$R)JmS^UrgW^0dCEmcmfI$+ZH?t%)H?1f!H?`Ob#Eb{C zaX7{Rhqy6zKN;gtZiHRAQN^6Mv%6=_RuE`)OrCYDZ1>w$du?;#_ck@$adUjVwz|&j zw`)3ILW0^6?&Jj4m}xa!k<(tDlD!>WRl^V?doHi&+x-xc8}FAbYI65V6zy8HzW%{8 z&7wu+A=73C+H0)d_av?R;O}#GI;V`bSBf(jb+|tG^F2c6S)0+)=e2vL%&UL7@^jSe zz8?kaSG-ibee$%3&$l;=tBz(ZTe)UaO6g&z{-+Jw{Y^`zJeAzw}%al2leKK~~7#lsutPSjsEZ>MP8!>65BI?DgX-MsEH_x#2E z4inV3J@6Ep^)f^Lip`9Ln%R|s`z);%R!x4NwQOagPhvuy&c>qLt`x7g{~-g~^G-T1-T8m&85W-Pi~*%bY^QvXQ&!10z zf3Gac-g$xd<>#BW=Sd!4qyD9Qk3zcbLEXD|s+^u%SuZ;L^~jFBCAJ?QUwPd*|4sO! zbL_7>ZO+}@{Z*#0ZqbC*+;8pYCcgPB{4Jkj&U_EX=jz`c-Pvp1_ji5yj*az8U(4>l z%6;9M;fBy1`-!I>^!`?7h+uzroaKF!Jp(d0aMa@0onJh@mu2pbAQ2 z`m4I;=NhzIIs=%sefG&GekxO0+V+7{={UzWwd6aC)od%)e&n8&(QLcTAZ2sP2Gjlr zXYJRO%TGEMd-0gg9aF3GGxl1U{r_nE@qwJN*6XrKho2p}wd;Skr66Ch_iUZem525O z%vYB8ZS)PlwffBC$W~+al;~}_4ZCwK&5}2jUYjuO*j|p3H$mGv@2<`fE;;9RJy6Y2 zdb7?+;i%+Kyq{d6_F7+z{GoQf-^erSvHPr`gH=tdzO$s9ncinmX?=)O_~E8vrU@m! j>i@3n*PCH?(Npcf&(3ncny4K2zz3Wb-^70}DrN=%!ljBb literal 0 HcmV?d00001