Add command to spawn large ruined portal

This commit is contained in:
Nils Dagsson Moskopp 2021-12-08 11:27:19 +01:00
parent d8d3f8364d
commit 8fa8a6fe37
Signed by untrusted user who does not match committer: erle
GPG Key ID: A3BC671C35191080
2 changed files with 26 additions and 4 deletions

View File

@ -89,6 +89,8 @@ mcl_structures.call_struct = function(pos, struct_style, rotation, pr)
return mcl_structures.generate_end_exit_portal(pos, rotation) return mcl_structures.generate_end_exit_portal(pos, rotation)
elseif struct_style == "end_portal_shrine" then elseif struct_style == "end_portal_shrine" then
return mcl_structures.generate_end_portal_shrine(pos, rotation, pr) return mcl_structures.generate_end_portal_shrine(pos, rotation, pr)
elseif struct_style == "ruined_portal_large" then
return mcl_structures.generate_ruined_portal_large(pos, rotation, pr)
elseif struct_style == "ruined_portal_small" then elseif struct_style == "ruined_portal_small" then
return mcl_structures.generate_ruined_portal_small(pos, rotation, pr) return mcl_structures.generate_ruined_portal_small(pos, rotation, pr)
end end
@ -406,7 +408,7 @@ mcl_structures.generate_end_portal_shrine = function(pos, rotation, pr)
mcl_structures.place_schematic(newpos, path, "0", nil, true, nil, shrine_placement_callback, pr) mcl_structures.place_schematic(newpos, path, "0", nil, true, nil, shrine_placement_callback, pr)
end end
local function ruined_portal_small_callback(p1, p2, size, rotation, pr) local function ruined_portal_callback(p1, p2, size, rotation, pr)
local biome_data = minetest.get_biome_data(p1) local biome_data = minetest.get_biome_data(p1)
local biome_is_cold = (biome_data.heat < 15) or false local biome_is_cold = (biome_data.heat < 15) or false
local biome_name = minetest.get_biome_name(biome_data.biome) local biome_name = minetest.get_biome_name(biome_data.biome)
@ -656,7 +658,10 @@ local function ruined_portal_small_callback(p1, p2, size, rotation, pr)
minetest.set_node(nodes[n], node) minetest.set_node(nodes[n], node)
end end
-- Add loot into chests. -- Add loot into chests.
local chests = minetest.find_nodes_in_area(p1, p2, "mcl_chests:chest_small") local chests = minetest.find_nodes_in_area(p1, p2, {
"mcl_chests:chest_small",
"mcl_chests:trapped_chest_small"
})
for c=1, #chests do for c=1, #chests do
local lootitems = mcl_loot.get_multi_loot({ local lootitems = mcl_loot.get_multi_loot({
{ {
@ -690,6 +695,21 @@ local function ruined_portal_small_callback(p1, p2, size, rotation, pr)
end end
end end
mcl_structures.generate_ruined_portal_large = function(pos, orientation, pr)
-- Generates one out of 1 possible small ruined nether portals
local newpos = {
x = pos.x,
y = pos.y - 10,
z = pos.z
}
local portals = {
"mcl_structures_ruined_portal_large_1.mts",
}
local r = pr:next(1, #portals)
local path = minetest.get_modpath("mcl_structures") .. "/schematics/" .. portals[r]
return mcl_structures.place_schematic(newpos, path, orientation, nil, true, nil, ruined_portal_callback, pr)
end
mcl_structures.generate_ruined_portal_small = function(pos, orientation, pr) mcl_structures.generate_ruined_portal_small = function(pos, orientation, pr)
-- Generates one out of 5 possible small ruined nether portals -- Generates one out of 5 possible small ruined nether portals
local newpos = { local newpos = {
@ -706,7 +726,7 @@ mcl_structures.generate_ruined_portal_small = function(pos, orientation, pr)
} }
local r = pr:next(1, #portals) local r = pr:next(1, #portals)
local path = minetest.get_modpath("mcl_structures") .. "/schematics/" .. portals[r] local path = minetest.get_modpath("mcl_structures") .. "/schematics/" .. portals[r]
return mcl_structures.place_schematic(newpos, path, orientation, nil, true, nil, ruined_portal_small_callback, pr) return mcl_structures.place_schematic(newpos, path, orientation, nil, true, nil, ruined_portal_callback, pr)
end end
local function temple_placement_callback(p1, p2, size, rotation, pr) local function temple_placement_callback(p1, p2, size, rotation, pr)
@ -839,7 +859,7 @@ end
-- Debug command -- Debug command
minetest.register_chatcommand("spawnstruct", { minetest.register_chatcommand("spawnstruct", {
params = "desert_temple | desert_well | igloo | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_portal_shrine | ruined_portal_small", params = "desert_temple | desert_well | igloo | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_portal_shrine | ruined_portal_large | ruined_portal_small",
description = S("Generate a pre-defined structure near your position."), description = S("Generate a pre-defined structure near your position."),
privs = {debug = true}, privs = {debug = true},
func = function(name, param) func = function(name, param)
@ -873,6 +893,8 @@ minetest.register_chatcommand("spawnstruct", {
mcl_structures.generate_end_exit_portal(pos, rot, pr) mcl_structures.generate_end_exit_portal(pos, rot, pr)
elseif param == "end_portal_shrine" then elseif param == "end_portal_shrine" then
mcl_structures.generate_end_portal_shrine(pos, rot, pr) mcl_structures.generate_end_portal_shrine(pos, rot, pr)
elseif param == "ruined_portal_large" then
mcl_structures.generate_ruined_portal_large(pos, rot, pr)
elseif param == "ruined_portal_small" then elseif param == "ruined_portal_small" then
mcl_structures.generate_ruined_portal_small(pos, rot, pr) mcl_structures.generate_ruined_portal_small(pos, rot, pr)
elseif param == "" then elseif param == "" then