Merge pull request 'Nether biomes' (#2328) from nether_biomes into master
Reviewed-on: MineClone2/MineClone2#2328 Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
|
@ -189,6 +189,9 @@ local list_of_all_biomes = {
|
|||
"MesaBryce",
|
||||
"JungleEdge",
|
||||
"SavannaM",
|
||||
"Nether",
|
||||
"WarpedForest",
|
||||
"SoulsandValley"
|
||||
}
|
||||
|
||||
-- count how many mobs are in an area
|
||||
|
|
|
@ -766,15 +766,32 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"SoulsandValley",
|
||||
},
|
||||
0,
|
||||
7,
|
||||
minetest.LIGHT_MAX+1,
|
||||
30,
|
||||
27500,
|
||||
4,
|
||||
mcl_vars.mg_nether_min,
|
||||
mcl_vars.mg_nether_max)
|
||||
|
||||
-- Warped Forest spawn (common)
|
||||
mcl_mobs:spawn_specific(
|
||||
"mobs_mc:enderman",
|
||||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"WarpedForest"
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
30,
|
||||
5000,
|
||||
4,
|
||||
mcl_vars.mg_nether_min,
|
||||
mcl_vars.mg_nether_max)
|
||||
|
||||
-- spawn eggs
|
||||
mcl_mobs:register_egg("mobs_mc:enderman", S("Enderman"), "mobs_mc_spawn_icon_enderman.png", 0)
|
||||
|
|
|
@ -81,12 +81,14 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"SoulsandValley",
|
||||
"BasaltDelta",
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
7,
|
||||
30,
|
||||
18000,
|
||||
72000,
|
||||
2,
|
||||
mcl_vars.mg_nether_min,
|
||||
mcl_vars.mg_nether_max)
|
||||
|
|
|
@ -302,10 +302,10 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"SoulsandValley",
|
||||
},
|
||||
0,
|
||||
7,
|
||||
minetest.LIGHT_MAX+1,
|
||||
30,
|
||||
10000,
|
||||
3,
|
||||
|
|
|
@ -402,7 +402,8 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"BasaltDelta",
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
|
@ -418,7 +419,8 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"BasaltDelta",
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
|
@ -433,7 +435,8 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"BasaltDelta",
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
|
|
|
@ -118,7 +118,8 @@ mcl_mobs:spawn_specific(
|
|||
"nether",
|
||||
"ground",
|
||||
{
|
||||
"Nether"
|
||||
"Nether",
|
||||
"CrimsonForest",
|
||||
},
|
||||
0,
|
||||
minetest.LIGHT_MAX+1,
|
||||
|
|
|
@ -146,8 +146,25 @@ mcl_weather.skycolor = {
|
|||
player:set_stars({visible = false})
|
||||
mcl_weather.skycolor.override_day_night_ratio(player, 0.5)
|
||||
elseif dim == "nether" then
|
||||
player:set_sky({ type = "plain",
|
||||
base_color = "#300808",
|
||||
local nether_sky = {
|
||||
Nether = "#300808",
|
||||
BasaltDelta = "#685F70",
|
||||
SoulsandValley = "#1B4745",
|
||||
CrimsonForest = "#330303",
|
||||
WarpedForest = "#1A051A"
|
||||
}
|
||||
local biometint = nether_sky[minetest.get_biome_name(minetest.get_biome_data(player:get_pos()).biome)]
|
||||
|
||||
player:set_sky({
|
||||
type = "regular",
|
||||
sky_color = {
|
||||
day_sky = "#300808",
|
||||
day_horizon = biometint,
|
||||
dawn_sky = "#300808",
|
||||
dawn_horizon = biometint,
|
||||
night_sky = "#300808",
|
||||
night_horizon = biometint,
|
||||
},
|
||||
clouds = false,
|
||||
})
|
||||
player:set_sun({visible = false , sunrise_visible = false})
|
||||
|
|
|
@ -323,36 +323,7 @@ for s=1, #specialstones do
|
|||
end
|
||||
|
||||
if minetest.settings:get_bool("mcl_generate_ores", true) then
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:blackstone_gilded",
|
||||
wherein = "mcl_blackstone:blackstone",
|
||||
clust_scarcity = 4775,
|
||||
clust_num_ores = 2,
|
||||
clust_size = 2,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 830,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 1660,
|
||||
clust_num_ores = 4,
|
||||
clust_size = 2,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
|
||||
end
|
||||
--]]
|
||||
--soul torch
|
||||
|
|
|
@ -0,0 +1,485 @@
|
|||
local modname = minetest.get_current_modname()
|
||||
local S = minetest.get_translator(modname)
|
||||
local modpath = minetest.get_modpath(modname)
|
||||
-- Warped and Crimson fungus
|
||||
-- by debiankaios
|
||||
-- adapted for mcl2 by cora
|
||||
|
||||
local function generate_warped_tree(pos)
|
||||
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_fungus_1.mts","random",nil,false,"place_center_x,place_center_z")
|
||||
end
|
||||
|
||||
function grow_twisting_vines(pos, moreontop)
|
||||
local y = pos.y + 1
|
||||
while not (moreontop == 0) do
|
||||
if minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air" then
|
||||
minetest.set_node({x = pos.x, y = y, z = pos.z}, {name="mcl_crimson:twisting_vines"})
|
||||
moreontop = moreontop - 1
|
||||
y = y + 1
|
||||
elseif minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "mcl_crimson:twisting_vines" then
|
||||
y = y + 1
|
||||
else
|
||||
moreontop = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_fungus", {
|
||||
description = S("Warped Fungus Mushroom"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "farming_warped_fungus.png" },
|
||||
inventory_image = "farming_warped_fungus.png",
|
||||
wield_image = "farming_warped_fungus.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1},
|
||||
light_source = 1,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
on_rightclick = function(pos, node, pointed_thing, player, itemstack)
|
||||
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
|
||||
local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then
|
||||
local random = math.random(1, 5)
|
||||
if random == 1 then
|
||||
generate_warped_tree(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:twisting_vines", {
|
||||
description = S("Twisting Vines"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "twisting_vines_plant.png" },
|
||||
inventory_image = "twisting_vines.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
buildable_to = true,
|
||||
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -3/16, -0.5, -3/16, 3/16, 0.5, 3/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
on_rightclick = function(pos, node, pointed_thing, itemstack)
|
||||
if pointed_thing:get_wielded_item():get_name() == "mcl_crimson:twisting_vines" then
|
||||
itemstack:take_item()
|
||||
grow_twisting_vines(pos, 1)
|
||||
elseif pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
|
||||
itemstack:take_item()
|
||||
grow_twisting_vines(pos, math.random(1, 3))
|
||||
end
|
||||
end,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"mcl_crimson:twisting_vines"}, rarity = 3},
|
||||
},
|
||||
},
|
||||
_mcl_shears_drop = true,
|
||||
_mcl_silk_touch_drop = true,
|
||||
_mcl_fortune_drop = {
|
||||
items = {
|
||||
{items = {"mcl_crimson:twisting_vines"}, rarity = 3},
|
||||
},
|
||||
items = {
|
||||
{items = {"mcl_crimson:twisting_vines"}, rarity = 1.8181818181818181},
|
||||
},
|
||||
"mcl_crimson:twisting_vines",
|
||||
"mcl_crimson:twisting_vines",
|
||||
},
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:nether_sprouts", {
|
||||
description = S("Nether Sprouts"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "nether_sprouts.png" },
|
||||
inventory_image = "nether_sprouts.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -4/16, -0.5, -4/16, 4/16, 0, 4/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
drop = "",
|
||||
_mcl_shears_drop = true,
|
||||
_mcl_silk_touch_drop = false,
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_roots", {
|
||||
description = S("Warped Roots"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "warped_roots.png" },
|
||||
inventory_image = "warped_roots.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
_mcl_silk_touch_drop = false,
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_wart_block", {
|
||||
description = S("Warped Wart Block"),
|
||||
tiles = {"warped_wart_block.png"},
|
||||
groups = {handy = 1, hoe = 7, swordy = 1, deco_block = 1},
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:shroomlight", {
|
||||
description = S("Shroomlight"),
|
||||
tiles = {"shroomlight.png"},
|
||||
groups = {handy = 1, hoe = 7, swordy = 1, leafdecay = 5, leaves = 1, deco_block = 1},
|
||||
light_source = minetest.LIGHT_MAX,
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_hyphae", {
|
||||
description = S("Warped Hyphae"),
|
||||
_doc_items_longdesc = S("The stem of a warped hyphae"),
|
||||
_doc_items_hidden = false,
|
||||
tiles = {
|
||||
"warped_hyphae.png",
|
||||
"warped_hyphae.png",
|
||||
"warped_hyphae_side.png",
|
||||
"warped_hyphae_side.png",
|
||||
"warped_hyphae_side.png",
|
||||
"warped_hyphae_side.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_stripped_variant = "mcl_crimson:stripped_warped_hyphae",
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_nylium", {
|
||||
description = S("Warped Nylium"),
|
||||
tiles = {
|
||||
"warped_nylium.png",
|
||||
"mcl_nether_netherrack.png",
|
||||
"mcl_nether_netherrack.png^warped_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^warped_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^warped_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^warped_nylium_side.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
drop = "mcl_nether:netherrack",
|
||||
groups = {pickaxey=1, building_block=1, material_stone=1},
|
||||
_mcl_hardness = 0.4,
|
||||
_mcl_blast_resistance = 0.4,
|
||||
_mcl_silk_touch_drop = true,
|
||||
})
|
||||
|
||||
--Stem bark, stripped stem and bark
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_hyphae_bark", {
|
||||
description = S("Warped Hyphae Bark"),
|
||||
_doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."),
|
||||
tiles = {"warped_hyphae_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_stripped_variant = "mcl_crimson:stripped_warped_hyphae_bark",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:warped_hyphae_bark 3",
|
||||
recipe = {
|
||||
{ "mcl_crimson:warped_hyphae", "mcl_crimson:warped_hyphae" },
|
||||
{ "mcl_crimson:warped_hyphae", "mcl_crimson:warped_hyphae" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:stripped_warped_hyphae", {
|
||||
description = S("Stripped warped hyphae"),
|
||||
_doc_items_longdesc = S("The stripped hyphae of a warped fungus"),
|
||||
_doc_items_hidden = false,
|
||||
tiles = {"warped_stem_stripped_top.png", "warped_stem_stripped_top.png", "warped_stem_stripped_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:stripped_warped_hyphae_bark", {
|
||||
description = S("Stripped warped hyphae bark"),
|
||||
_doc_items_longdesc = S("The stripped hyphae bark of a warped fungus"),
|
||||
tiles = {"crimson_stem_stripped_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:stripped_warped_hyphae_bark 3",
|
||||
recipe = {
|
||||
{ "mcl_crimson:stripped_warped_hyphae", "mcl_crimson:stripped_warped_hyphae" },
|
||||
{ "mcl_crimson:stripped_warped_hyphae", "mcl_crimson:stripped_warped_hyphae" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:warped_hyphae_wood", {
|
||||
description = S("Warped Hyphae Wood"),
|
||||
tiles = {"warped_hyphae_wood.png"},
|
||||
groups = {handy = 5,axey = 1, flammable = 3, wood=1,building_block = 1, material_wood = 1, fire_encouragement = 5, fire_flammability = 20},
|
||||
paramtype2 = "facedir",
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
mcl_stairs.register_stair_and_slab_simple("warped_hyphae_wood", "mcl_crimson:warped_hyphae_wood", S("Warped Stair"), S("Warped Slab"), S("Double Warped Slab"))
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:warped_hyphae_wood 4",
|
||||
recipe = {
|
||||
{"mcl_crimson:warped_hyphae"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:warped_nylium 2",
|
||||
recipe = {
|
||||
{"mcl_crimson:warped_wart_block"},
|
||||
{"mcl_nether:netherrack"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
label = "mcl_crimson:warped_fungus",
|
||||
nodenames = {"mcl_crimson:warped_fungus"},
|
||||
interval = 11,
|
||||
chance = 128,
|
||||
action = function(pos)
|
||||
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
|
||||
if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then
|
||||
if pos.y < -28400 then
|
||||
generate_warped_tree(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_fungus", {
|
||||
description = S("Crimson Fungus Mushroom"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "farming_crimson_fungus.png" },
|
||||
inventory_image = "farming_crimson_fungus.png",
|
||||
wield_image = "farming_crimson_fungus.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1},
|
||||
light_source = 1,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
on_rightclick = function(pos, node, pointed_thing, player)
|
||||
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then
|
||||
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
|
||||
if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then
|
||||
local random = math.random(1, 5)
|
||||
if random == 1 then
|
||||
generate_crimson_tree(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_roots", {
|
||||
description = S("Crimson Roots"),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "crimson_roots.png" },
|
||||
inventory_image = "crimson_roots.png",
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 },
|
||||
},
|
||||
node_placement_prediction = "",
|
||||
_mcl_silk_touch_drop = false,
|
||||
_mcl_blast_resistance = 0,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_hyphae", {
|
||||
description = S("Crimson Hyphae"),
|
||||
_doc_items_longdesc = S("The stem of a crimson hyphae"),
|
||||
_doc_items_hidden = false,
|
||||
tiles = {
|
||||
"crimson_hyphae.png",
|
||||
"crimson_hyphae.png",
|
||||
"crimson_hyphae_side.png",
|
||||
"crimson_hyphae_side.png",
|
||||
"crimson_hyphae_side.png",
|
||||
"crimson_hyphae_side.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_stripped_variant = "mcl_crimson:stripped_crimson_hyphae",
|
||||
})
|
||||
|
||||
--Stem bark, stripped stem and bark
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_hyphae_bark", {
|
||||
description = S("Crimson Hyphae Bark"),
|
||||
_doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."),
|
||||
tiles = {"crimson_hyphae_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_stripped_variant = "mcl_crimson:stripped_crimson_hyphae_bark",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:crimson_hyphae_bark 3",
|
||||
recipe = {
|
||||
{ "mcl_crimson:crimson_hyphae", "mcl_crimson:crimson_hyphae" },
|
||||
{ "mcl_crimson:crimson_hyphae", "mcl_crimson:crimson_hyphae" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:stripped_crimson_hyphae", {
|
||||
description = S("Stripped Crimson Hyphae"),
|
||||
_doc_items_longdesc = S("The stripped stem of a crimson hyphae"),
|
||||
_doc_items_hidden = false,
|
||||
tiles = {"crimson_stem_stripped_top.png", "crimson_stem_stripped_top.png", "crimson_stem_stripped_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, tree = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:stripped_crimson_hyphae_bark", {
|
||||
description = S("Stripped Crimson Hyphae Bark"),
|
||||
_doc_items_longdesc = S("The stripped wood of a crimson hyphae"),
|
||||
tiles = {"crimson_stem_stripped_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
groups = {handy = 1, axey = 1, bark = 1, building_block = 1, material_wood = 1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
_mcl_blast_resistance = 2,
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:stripped_crimson_hyphae_bark 3",
|
||||
recipe = {
|
||||
{ "mcl_crimson:stripped_crimson_hyphae", "mcl_crimson:stripped_crimson_hyphae" },
|
||||
{ "mcl_crimson:stripped_crimson_hyphae", "mcl_crimson:stripped_crimson_hyphae" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_hyphae_wood", {
|
||||
description = S("Crimson Hyphae Wood"),
|
||||
tiles = {"crimson_hyphae_wood.png"},
|
||||
groups = {handy = 5, axey = 1, wood = 1, building_block = 1, material_wood = 1},
|
||||
paramtype2 = "facedir",
|
||||
_mcl_hardness = 2,
|
||||
})
|
||||
|
||||
minetest.register_node("mcl_crimson:crimson_nylium", {
|
||||
description = S("Crimson Nylium"),
|
||||
tiles = {
|
||||
"crimson_nylium.png",
|
||||
"mcl_nether_netherrack.png",
|
||||
"mcl_nether_netherrack.png^crimson_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^crimson_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^crimson_nylium_side.png",
|
||||
"mcl_nether_netherrack.png^crimson_nylium_side.png",
|
||||
},
|
||||
groups = {pickaxey = 1, building_block = 1, material_stone = 1},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
drop = "mcl_nether:netherrack",
|
||||
_mcl_hardness = 0.4,
|
||||
_mcl_blast_resistance = 0.4,
|
||||
_mcl_silk_touch_drop = true,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:crimson_hyphae_wood 4",
|
||||
recipe = {
|
||||
{"mcl_crimson:crimson_hyphae"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mcl_crimson:crimson_nylium 2",
|
||||
recipe = {
|
||||
{"mcl_nether:nether_wart"},
|
||||
{"mcl_nether:netherrack"},
|
||||
},
|
||||
})
|
||||
|
||||
mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_crimson:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab")
|
||||
|
||||
minetest.register_abm({
|
||||
label = "mcl_crimson:crimson_fungus",
|
||||
nodenames = {"mcl_crimson:crimson_fungus"},
|
||||
interval = 11,
|
||||
chance = 128,
|
||||
action = function(pos)
|
||||
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
|
||||
if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then
|
||||
if pos.y < -28400 then
|
||||
generate_crimson_tree(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
|
@ -0,0 +1,24 @@
|
|||
# textdomain: mcl_crimson
|
||||
|
||||
Warped Fungus Mushroom=Wirrpilz
|
||||
Twisting Vines=Zwirbelranken
|
||||
Nether Sprouts=Nethersprossen
|
||||
Warped Roots=Wirrwurzeln
|
||||
Warped Wart Block=Wirrwarzenblock
|
||||
Shroomlight=Pilzlicht
|
||||
Warped Hyphae=Wirrhyphe
|
||||
Warped Nylium=Wirr-Nezel
|
||||
Warped Checknode - only to check!=Wirr Checkblock - Nur zum checken!
|
||||
Warped Hyphae Wood=Wirrhyphen Holz
|
||||
Warped Stair=Wirrtreppe
|
||||
Warped Slab=Wirrstufe
|
||||
Double Warped Slab=Doppelte Wirrstufe
|
||||
Crimson Fungus Mushroom=Karmesinpilz
|
||||
Crimson Roots=Karmesinwurzeln
|
||||
Crimson Hyphae=Karmesinhyphe
|
||||
Crimson Hyphae Wood=Karmesinhyphenholz
|
||||
Crimson Stair=Karmesintreppe
|
||||
Crimson Slab=Karmesinstufe
|
||||
Double Crimson Slab=Doppelte Karmesinstufe
|
||||
Crimson Nylium=Karmesin-Nezel
|
||||
Crimson Checknode - only to check!=Karmesin Checkblock - Nur zum checken!
|
|
@ -0,0 +1,23 @@
|
|||
# textdomain: mcl_crimson
|
||||
|
||||
Warped Fungus Mushroom=Champignon tordu
|
||||
Twisting Vines=Liane tordue
|
||||
Nether Sprouts=Racines du nether
|
||||
Warped Roots=Racines tordues
|
||||
Warped Wart Block=Bloc de verrues tordu
|
||||
Shroomlight=Champilampe
|
||||
Warped Hyphae=Tige tordue
|
||||
Warped Nylium=Nylium tordu
|
||||
Warped Checknode - only to check!=Bloc de vérification tordu - seulement pour vérifier !
|
||||
Warped Hyphae Wood=Planches tordues
|
||||
Warped Stair=Escalier tordu
|
||||
Warped Slab=Dalle tordue
|
||||
Crimson Fungus Mushroom=Champignon écarlate
|
||||
Crimson Roots=Racines écarlates
|
||||
Crimson Hyphae=Tige écarlate
|
||||
Crimson Hyphae Wood=Planches écarlates
|
||||
Crimson Stair=Escalier écarlate
|
||||
Crimson Slab=Dalle écarlate
|
||||
Double Crimson Slab=Dalle double écarlate
|
||||
Crimson Nylium=Nylium écarlate
|
||||
Crimson Checknode - only to check!=Bloc de vérification écarlate - seulement pour vérifier !
|
|
@ -0,0 +1,23 @@
|
|||
# textdomain: mcl_crimson
|
||||
|
||||
Warped Fungus Mushroom=
|
||||
Twisting Vines=
|
||||
Nether Sprouts=
|
||||
Warped Roots=
|
||||
Warped Wart Block=
|
||||
Shroomlight=
|
||||
Warped Hyphae=
|
||||
Warped Nylium=
|
||||
Warped Checknode - only to check!=
|
||||
Warped Hyphae Wood=
|
||||
Warped Stair=
|
||||
Warped Slab=
|
||||
Crimson Fungus Mushroom=
|
||||
Crimson Roots=
|
||||
Crimson Hyphae=
|
||||
Crimson Hyphae Wood=
|
||||
Crimson Stair=
|
||||
Crimson Slab=
|
||||
Double Crimson Slab=
|
||||
Crimson Nylium=
|
||||
Crimson Checknode - only to check!=
|
|
@ -0,0 +1,4 @@
|
|||
name = mcl_crimson
|
||||
author = debiankaios
|
||||
depends = mcl_stairs, mobs_mc, mcl_util
|
||||
|
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 525 B |
After Width: | Height: | Size: 446 B |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 324 B |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 193 B |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 307 B |
After Width: | Height: | Size: 172 B |
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 565 B |
After Width: | Height: | Size: 428 B |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 193 B |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 239 B |
After Width: | Height: | Size: 475 B |
After Width: | Height: | Size: 581 B |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 479 B |
After Width: | Height: | Size: 461 B |
After Width: | Height: | Size: 434 B |
After Width: | Height: | Size: 426 B |
After Width: | Height: | Size: 402 B |
After Width: | Height: | Size: 462 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 6.1 KiB |
|
@ -9,6 +9,8 @@ local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_log
|
|||
local mod_mcl_structures = minetest.get_modpath("mcl_structures")
|
||||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
||||
local mod_mcl_crimson = minetest.get_modpath("mcl_crimson")
|
||||
local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone")
|
||||
|
||||
-- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves
|
||||
local jungle_bush_schematic = mod_mcl_core.."/schematics/mcl_core_jungle_bush_oak_leaves.mts"
|
||||
|
@ -1490,8 +1492,7 @@ local function register_dimension_biomes()
|
|||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
-- FIXME: For some reason the Nether stops generating early if this constant is not added.
|
||||
-- Figure out why.
|
||||
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
heat_point = 100,
|
||||
humidity_point = 0,
|
||||
|
@ -1499,6 +1500,175 @@ local function register_dimension_biomes()
|
|||
_mcl_palette_index = 17,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:nether_gold","mcl_nether:quartz_ore","mcl_core:gravel","mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = { "Nether" },
|
||||
y_min = -31000,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
decoration = "mcl_nether:netherrack",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
name = "SoulsandValley",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_blackstone:soul_soil",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
heat_point = 77,
|
||||
humidity_point = 33,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_palette_index = 17,
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = { "SoulsandValley" },
|
||||
y_min = -31000,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
decoration = "mcl_blackstone:soul_soil",
|
||||
flags = "all_floors, all_ceilings",
|
||||
param2 = 0,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_nether:soul_sand",
|
||||
wherein = { "mcl_nether:netherrack", "mcl_blackstone:soul_soil" },
|
||||
clust_scarcity = 100,
|
||||
clust_num_ores = 225,
|
||||
clust_size = 15,
|
||||
biomes = { "SoulsandValley" },
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = { x = 250, y = 250, z = 250 },
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
}
|
||||
})
|
||||
minetest.register_biome({
|
||||
name = "CrimsonForest",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_crimson:crimson_nylium",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
heat_point = 60,
|
||||
humidity_point = 47,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_palette_index = 17,
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:nether_gold","mcl_nether:quartz_ore","mcl_core:gravel","mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = { "CrimsonForest" },
|
||||
y_min = -31000,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
decoration = "mcl_crimson:crimson_nylium",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
minetest.register_biome({
|
||||
name = "WarpedForest",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_crimson:warped_nylium",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
heat_point = 37,
|
||||
humidity_point = 70,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_palette_index = 17,
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:nether_gold","mcl_nether:quartz_ore","mcl_core:gravel","mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = { "WarpedForest" },
|
||||
y_min = -31000,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
decoration = "mcl_crimson:warped_nylium",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
minetest.register_biome({
|
||||
name = "BasaltDelta",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_blackstone:basalt",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
heat_point = 27,
|
||||
humidity_point = 80,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_palette_index = 17,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_blackstone:blackstone",
|
||||
wherein = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_core:gravel","mcl_nether:soul_sand"},
|
||||
clust_scarcity = 100,
|
||||
clust_num_ores = 400,
|
||||
clust_size = 20,
|
||||
biomes = { "BasaltDelta" },
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max + 80,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = { x = 250, y = 250, z = 250 },
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:nether_gold","mcl_nether:quartz_ore","mcl_core:gravel","mcl_nether:soul_sand","mcl_blackstone:blackstone"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = { "BasaltDelta" },
|
||||
y_min = -31000,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
decoration = "mcl_blackstone:basalt",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
|
||||
--[[ THE END ]]
|
||||
minetest.register_biome({
|
||||
name = "End",
|
||||
|
@ -1581,6 +1751,39 @@ local function register_biome_ores()
|
|||
"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", },
|
||||
})
|
||||
end
|
||||
--nether gold
|
||||
if mg_name ~= "v6" then
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:blackstone_gilded",
|
||||
wherein = "mcl_blackstone:blackstone",
|
||||
clust_scarcity = 4775,
|
||||
clust_num_ores = 2,
|
||||
clust_size = 2,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 830,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 1660,
|
||||
clust_num_ores = 4,
|
||||
clust_size = 2,
|
||||
y_min = mcl_vars.mg_nether_min,
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- Register “fake” ores directly related to the biomes. These are mostly low-level landscape alternations
|
||||
|
@ -3911,7 +4114,265 @@ end
|
|||
-- Decorations in non-Overworld dimensions
|
||||
local function register_dimension_decorations()
|
||||
--[[ NETHER ]]
|
||||
-- TODO: Nether
|
||||
--NETHER WASTES (Nether)
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack","mcl_nether:magma"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.04,
|
||||
biomes = {"Nether"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_fire:eternal_fire",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.013,
|
||||
biomes = {"Nether"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.012,
|
||||
biomes = {"Nether"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0032,
|
||||
biomes = {"Nether","SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_nether:nether_wart",
|
||||
})
|
||||
|
||||
-- WARPED FOREST
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.02,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 10,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:warped_fungus",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree1",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.007,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 15,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/warped_fungus_1.mts",
|
||||
size = {x = 5, y = 11, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree2",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 10,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/warped_fungus_2.mts",
|
||||
size = {x = 5, y = 6, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree3",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 14,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/warped_fungus_3.mts",
|
||||
size = {x = 5, y = 12, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium","mcl_crimson:twisting_vines"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.012,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
height = 2,
|
||||
height_max = 8,
|
||||
decoration = "mcl_crimson:twisting_vines",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0812,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_crimson:warped_roots",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.052,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:nether_sprouts",
|
||||
})
|
||||
-- CRIMSON FOREST
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.02,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_lava_nether_max - 10,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:crimson_fungus",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.008,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 10,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/crimson_fungus_1.mts",
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree2",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.006,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 15,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/crimson_fungus_2.mts",
|
||||
size = {x = 5, y = 12, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree3",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.004,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
y_max = mcl_vars.mg_nether_max - 20,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson.."/schematics/crimson_fungus_3.mts",
|
||||
size = {x = 7, y = 13, z = 7},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.082,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_crimson:crimson_roots",
|
||||
})
|
||||
|
||||
--SOULSAND VALLEY
|
||||
minetest.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_blackstone:soul_soil","mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.062,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_blackstone:soul_fire",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil","mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.000212,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone.."/schematics/mcl_blackstone_nether_fossil_1.mts",
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil","mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0002233,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone.."/schematics/mcl_blackstone_nether_fossil_2.mts",
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil","mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.000225,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone.."/schematics/mcl_blackstone_nether_fossil_3.mts",
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil","mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.00022323,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone.."/schematics/mcl_blackstone_nether_fossil_4.mts",
|
||||
size = {x = 5, y = 8, z = 5},
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
--[[ THE END ]]
|
||||
|
||||
|
@ -3975,10 +4436,21 @@ if mg_name ~= "singlenode" then
|
|||
|
||||
-- Overworld decorations for v6 are handled in mcl_mapgen_core
|
||||
|
||||
if deco_id_chorus_plant then
|
||||
local deco_ids_fungus ={
|
||||
minetest.get_decoration_id("mcl_biomes:crimson_tree1"),
|
||||
minetest.get_decoration_id("mcl_biomes:crimson_tree2"),
|
||||
minetest.get_decoration_id("mcl_biomes:crimson_tree3"),
|
||||
minetest.get_decoration_id("mcl_biomes:warped_tree1"),
|
||||
minetest.get_decoration_id("mcl_biomes:warped_tree2"),
|
||||
minetest.get_decoration_id("mcl_biomes:warped_tree3")
|
||||
}
|
||||
for _,f in pairs(deco_ids_fungus) do
|
||||
minetest.set_gen_notify({decoration=true}, { f })
|
||||
end
|
||||
if deco_id_chorus_plant or deco_id_crimson_tree or deco_id_warped_tree then
|
||||
mcl_mapgen_core.register_generator("chorus_grow", nil, function(minp, maxp, blockseed)
|
||||
if minp.y > -26900 then return end
|
||||
local gennotify = minetest.get_mapgen_object("gennotify")
|
||||
--local poslist = {}
|
||||
local pr = PseudoRandom(blockseed + 14)
|
||||
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
||||
local x, y, z = pos.x, pos.y, pos.z
|
||||
|
@ -3990,8 +4462,13 @@ if mg_name ~= "singlenode" then
|
|||
end
|
||||
end
|
||||
end
|
||||
if minp.y > mcl_vars.mg_nether_max then return end
|
||||
for _,f in pairs(deco_ids_fungus) do
|
||||
for _, pos in ipairs(gennotify["decoration#"..f] or {}) do
|
||||
minetest.fix_light(vector.offset(pos,-8,-8,-8),vector.offset(pos,8,8,8))
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
name = mcl_biomes
|
||||
author = maikerumine
|
||||
description = Adds the various biomes and biome-related things for non-v6 map generators.
|
||||
depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean
|
||||
depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean, mcl_crimson, mcl_blackstone
|
||||
|
|
|
@ -76,10 +76,8 @@ mcl_structures.register_structure("geode",{
|
|||
flags = "absvalue",
|
||||
},
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
biomes = ocean_biomes,
|
||||
y_max = -24,
|
||||
y_min = mcl_vars.mg_overworld_min,
|
||||
filenames = schems,
|
||||
y_offset = function(pr) return pr:next(-4,-2) end,
|
||||
place_func = function(pos,def,pr)
|
||||
local p = vector.new(pos.x + pr:next(-30,30),pos.y,pos.z + pr:next(-30,30))
|
||||
|
|
|
@ -1754,70 +1754,69 @@ else
|
|||
nether_wart_chance = 170
|
||||
end
|
||||
-- Generate Nether decorations manually: Eternal fire, mushrooms, nether wart
|
||||
-- Minetest's API does not support decorations in caves yet. :-(
|
||||
-- (only v6)
|
||||
local function generate_nether_decorations(minp, maxp, seed)
|
||||
local pr_nether = PseudoRandom(seed+667)
|
||||
if mg_name == "v6" then
|
||||
local pr_nether = PseudoRandom(seed+667)
|
||||
|
||||
if minp.y > mcl_vars.mg_nether_max or maxp.y < mcl_vars.mg_nether_min then
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "[mcl_mapgen_core] Nether decorations " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp))
|
||||
|
||||
-- TODO: Generate everything based on Perlin noise instead of PseudoRandom
|
||||
|
||||
local bpos
|
||||
local rack = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:netherrack"})
|
||||
local magma = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:magma"})
|
||||
local ssand = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:soul_sand"})
|
||||
|
||||
-- Helper function to spawn “fake” decoration
|
||||
local function special_deco(nodes, spawn_func)
|
||||
for n = 1, #nodes do
|
||||
bpos = {x = nodes[n].x, y = nodes[n].y + 1, z = nodes[n].z }
|
||||
|
||||
spawn_func(bpos)
|
||||
if minp.y > mcl_vars.mg_nether_max or maxp.y < mcl_vars.mg_nether_min then
|
||||
return
|
||||
end
|
||||
|
||||
end
|
||||
minetest.log("action", "[mcl_mapgen_core] Nether decorations " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp))
|
||||
|
||||
-- Eternal fire on netherrack
|
||||
special_deco(rack, function(bpos)
|
||||
-- Eternal fire on netherrack
|
||||
if pr_nether:next(1,100) <= 3 then
|
||||
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
||||
end
|
||||
end)
|
||||
-- TODO: Generate everything based on Perlin noise instead of PseudoRandom
|
||||
|
||||
-- Eternal fire on magma cubes
|
||||
special_deco(magma, function(bpos)
|
||||
if pr_nether:next(1,150) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
||||
end
|
||||
end)
|
||||
local bpos
|
||||
local rack = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:netherrack"})
|
||||
local magma = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:magma"})
|
||||
local ssand = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:soul_sand"})
|
||||
|
||||
-- Mushrooms on netherrack
|
||||
-- Note: Spawned *after* the fire because of light level checks
|
||||
special_deco(rack, function(bpos)
|
||||
local l = minetest.get_node_light(bpos, 0.5)
|
||||
if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l and l <= 12 and pr_nether:next(1,1000) <= 4 then
|
||||
-- TODO: Make mushrooms appear in groups, use Perlin noise
|
||||
if pr_nether:next(1,2) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"})
|
||||
else
|
||||
minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_red"})
|
||||
-- Helper function to spawn “fake” decoration
|
||||
local function special_deco(nodes, spawn_func)
|
||||
for n = 1, #nodes do
|
||||
bpos = {x = nodes[n].x, y = nodes[n].y + 1, z = nodes[n].z }
|
||||
|
||||
spawn_func(bpos)
|
||||
end
|
||||
end
|
||||
end)
|
||||
-- Eternal fire on netherrack
|
||||
special_deco(rack, function(bpos)
|
||||
-- Eternal fire on netherrack
|
||||
if pr_nether:next(1,100) <= 3 then
|
||||
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
||||
end
|
||||
end)
|
||||
|
||||
-- Nether wart on soul sand
|
||||
-- TODO: Spawn in Nether fortresses
|
||||
special_deco(ssand, function(bpos)
|
||||
if pr_nether:next(1, nether_wart_chance) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_nether:nether_wart"})
|
||||
end
|
||||
end)
|
||||
-- Eternal fire on magma cubes
|
||||
special_deco(magma, function(bpos)
|
||||
if pr_nether:next(1,150) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
||||
end
|
||||
end)
|
||||
|
||||
-- Mushrooms on netherrack
|
||||
-- Note: Spawned *after* the fire because of light level checks
|
||||
special_deco(rack, function(bpos)
|
||||
local l = minetest.get_node_light(bpos, 0.5)
|
||||
if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l and l <= 12 and pr_nether:next(1,1000) <= 4 then
|
||||
-- TODO: Make mushrooms appear in groups, use Perlin noise
|
||||
if pr_nether:next(1,2) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"})
|
||||
else
|
||||
minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_red"})
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- Nether wart on soul sand
|
||||
-- TODO: Spawn in Nether fortresses
|
||||
special_deco(ssand, function(bpos)
|
||||
if pr_nether:next(1, nether_wart_chance) == 1 then
|
||||
minetest.set_node(bpos, {name = "mcl_nether:nether_wart"})
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||
|
|
|
@ -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
|
||||
})
|
|
@ -0,0 +1,3 @@
|
|||
name = mcl_nether_fortresses
|
||||
author = cora
|
||||
depends = mcl_init, mcl_structures, mcl_mobspawners
|
|
@ -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)
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
local adjacents = {
|
||||
vector.new(1,0,0),
|
||||
vector.new(1,0,1),
|
||||
vector.new(1,0,-1),
|
||||
vector.new(-1,0,0),
|
||||
vector.new(-1,0,1),
|
||||
vector.new(-1,0,-1),
|
||||
vector.new(0,0,1),
|
||||
vector.new(0,0,-1),
|
||||
vector.new(0,-1,0)
|
||||
}
|
||||
|
||||
local function set_node_no_bedrock(pos,node)
|
||||
local n = minetest.get_node(pos)
|
||||
if n.name == "mcl_core:bedrock" then return end
|
||||
return minetest.set_node(pos,node)
|
||||
end
|
||||
|
||||
local function airtower(pos)
|
||||
for i=0,55 do
|
||||
set_node_no_bedrock(vector.offset(pos,0,i,0),{name="air"})
|
||||
end
|
||||
end
|
||||
|
||||
local function makelake(pos,size,liquid,border,pr)
|
||||
local node_under = minetest.get_node(vector.offset(pos,0,1,0))
|
||||
local p1 = vector.offset(pos,-size,-size,-size)
|
||||
local p2 = vector.offset(pos,size,size,size)
|
||||
local nn = minetest.find_nodes_in_area(p1,p2,{"group:material_stone", "group:sand", "group:dirt"})
|
||||
table.sort(nn,function(a, b)
|
||||
return vector.distance(pos, a) < vector.distance(pos, b)
|
||||
end)
|
||||
if not nn[1] then return end
|
||||
local y = pos.y + 1
|
||||
local lq = {}
|
||||
for i=1,pr:next(1,#nn) do
|
||||
if nn[i].y == y then
|
||||
set_node_no_bedrock(nn[i],{name=liquid})
|
||||
airtower(vector.offset(nn[i],0,1,0))
|
||||
table.insert(lq,nn[i])
|
||||
end
|
||||
end
|
||||
|
||||
for k,v in pairs(lq) do
|
||||
for kk,vv in pairs(adjacents) do
|
||||
local pp = vector.add(v,vv)
|
||||
local an = minetest.get_node(pp)
|
||||
local un = minetest.get_node(vector.offset(pp,0,1,0))
|
||||
if not border then
|
||||
if minetest.get_item_group(an.name,"solid") > 0 then
|
||||
border = an.name
|
||||
elseif minetest.get_item_group(minetest.get_node(nn[1]).name,"solid") > 0 then
|
||||
border = minetest.get_node(nn[1]).name
|
||||
else
|
||||
border = "mcl_core:stone"
|
||||
end
|
||||
if border == "mcl_core:dirt" then border = "mcl_core:dirt_with_grass" end
|
||||
end
|
||||
if an.name ~= liquid then
|
||||
set_node_no_bedrock(pp,{name=border})
|
||||
if un.name ~= liquid then
|
||||
airtower(vector.offset(pp,0,1,0))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
mcl_structures.register_structure("lavapool",{
|
||||
place_on = {"group:sand", "group:dirt", "group:stone"},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.0000022,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 78375213,
|
||||
octaves = 3,
|
||||
persist = 0.001,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
y_max = mcl_vars.mg_overworld_max,
|
||||
y_min = minetest.get_mapgen_setting("water_level"),
|
||||
place_func = function(pos,def,pr)
|
||||
return makelake(pos,5,"mcl_core:lava_source","mcl_core:stone",pr)
|
||||
end
|
||||
})
|
||||
|
||||
mcl_structures.register_structure("water_lake",{
|
||||
place_on = {"group:dirt","group:stone"},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.000032,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 734341353,
|
||||
octaves = 3,
|
||||
persist = 0.001,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
y_max = mcl_vars.mg_overworld_max,
|
||||
y_min = minetest.get_mapgen_setting("water_level"),
|
||||
place_func = function(pos,def,pr)
|
||||
return makelake(pos,5,"mcl_core:water_source",nil,pr)
|
||||
end
|
||||
})
|
|
@ -0,0 +1,224 @@
|
|||
local adjacents = {
|
||||
vector.new(1,0,0),
|
||||
vector.new(1,0,1),
|
||||
vector.new(1,0,-1),
|
||||
vector.new(-1,0,0),
|
||||
vector.new(-1,0,1),
|
||||
vector.new(-1,0,-1),
|
||||
vector.new(0,0,1),
|
||||
vector.new(0,0,-1),
|
||||
vector.new(0,-1,0)
|
||||
}
|
||||
|
||||
local plane_adjacents = {
|
||||
vector.new(1,0,0),
|
||||
vector.new(-1,0,0),
|
||||
vector.new(0,0,1),
|
||||
vector.new(0,0,-1),
|
||||
}
|
||||
|
||||
local function set_node_no_bedrock(pos,node)
|
||||
local n = minetest.get_node(pos)
|
||||
if n.name == "mcl_core:bedrock" then return end
|
||||
return minetest.set_node(pos,node)
|
||||
end
|
||||
|
||||
local function airtower(pos)
|
||||
for i=0,55 do
|
||||
set_node_no_bedrock(vector.offset(pos,0,i,0),{name="air"})
|
||||
end
|
||||
end
|
||||
|
||||
local function makelake(pos,size,liquid,placein,border,pr)
|
||||
local node_under = minetest.get_node(vector.offset(pos,0,1,0))
|
||||
local p1 = vector.offset(pos,-size,-size,-size)
|
||||
local p2 = vector.offset(pos,size,size,size)
|
||||
local nn = minetest.find_nodes_in_area(p1,p2,placein)
|
||||
table.sort(nn,function(a, b)
|
||||
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
|
||||
end)
|
||||
if not nn[1] then return end
|
||||
local y = pos.y + 1
|
||||
local lq = {}
|
||||
for i=1,pr:next(1,#nn) do
|
||||
if nn[i].y == y then
|
||||
set_node_no_bedrock(nn[i],{name=liquid})
|
||||
airtower(vector.offset(nn[i],0,1,0))
|
||||
table.insert(lq,nn[i])
|
||||
end
|
||||
end
|
||||
|
||||
for k,v in pairs(lq) do
|
||||
for kk,vv in pairs(adjacents) do
|
||||
local pp = vector.add(v,vv)
|
||||
local an = minetest.get_node(pp)
|
||||
local un = minetest.get_node(vector.offset(pp,0,1,0))
|
||||
if not border then
|
||||
if minetest.get_item_group(an.name,"solid") > 0 then
|
||||
border = an.name
|
||||
elseif minetest.get_item_group(minetest.get_node(nn[1]).name,"solid") > 0 then
|
||||
border = minetest.get_node(nn[1]).name
|
||||
else
|
||||
border = "mcl_core:stone"
|
||||
end
|
||||
if border == "mcl_core:dirt" then border = "mcl_core:dirt_with_grass" end
|
||||
end
|
||||
if an.name ~= liquid then
|
||||
set_node_no_bedrock(pp,{name=border})
|
||||
if un.name ~= liquid then
|
||||
airtower(vector.offset(pp,0,1,0))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
mcl_structures.register_structure("lavapool",{
|
||||
place_on = {"group:sand", "group:dirt", "group:stone"},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.0000022,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 78375213,
|
||||
octaves = 3,
|
||||
persist = 0.001,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
y_max = mcl_vars.mg_overworld_max,
|
||||
y_min = minetest.get_mapgen_setting("water_level"),
|
||||
place_func = function(pos,def,pr)
|
||||
return makelake(pos,5,"mcl_core:lava_source","mcl_core:stone",{"group:material_stone", "group:sand", "group:dirt"},pr)
|
||||
end
|
||||
})
|
||||
|
||||
mcl_structures.register_structure("water_lake",{
|
||||
place_on = {"group:dirt","group:stone"},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.000032,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 756641353,
|
||||
octaves = 3,
|
||||
persist = 0.001,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
y_max = mcl_vars.mg_overworld_max,
|
||||
y_min = minetest.get_mapgen_setting("water_level"),
|
||||
place_func = function(pos,def,pr)
|
||||
return makelake(pos,5,"mcl_core:water_source",{"group:material_stone", "group:sand", "group:dirt"},nil,pr)
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
mcl_structures.register_structure("basalt_column",{
|
||||
place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"},
|
||||
spawn_by = {"air"},
|
||||
num_spawn_by = 2,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.02,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 7225213,
|
||||
octaves = 5,
|
||||
persist = 0.1,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "all_floors",
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
biomes = { "BasaltDelta" },
|
||||
place_func = function(pos,def,pr)
|
||||
local nn = minetest.find_nodes_in_area(vector.offset(pos,-5,-1,-5),vector.offset(pos,5,-1,5),{"air","mcl_blackstone:basalt","mcl_blackstone:blackstone"})
|
||||
table.sort(nn,function(a, b)
|
||||
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
|
||||
end)
|
||||
if #nn < 1 then return false end
|
||||
for i=1,pr:next(1,#nn) do
|
||||
if minetest.get_node(vector.offset(nn[i],0,-1,0)).name ~= "air" then
|
||||
local dst=vector.distance(pos,nn[i])
|
||||
for ii=0,pr:next(2,14)-dst do
|
||||
set_node_no_bedrock(vector.new(nn[i].x,nn[i].y + ii,nn[i].z),{name="mcl_blackstone:basalt"})
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
})
|
||||
mcl_structures.register_structure("basalt_pillar",{
|
||||
place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.001,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 783213,
|
||||
octaves = 5,
|
||||
persist = 0.1,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "all_floors",
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
biomes = { "BasaltDelta" },
|
||||
place_func = function(pos,def,pr)
|
||||
local nn = minetest.find_nodes_in_area(vector.offset(pos,-2,-1,-2),vector.offset(pos,2,-1,2),{"air","mcl_blackstone:basalt","mcl_blackstone:blackstone"})
|
||||
table.sort(nn,function(a, b)
|
||||
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
|
||||
end)
|
||||
if #nn < 1 then return false end
|
||||
for i=1,pr:next(1,#nn) do
|
||||
if minetest.get_node(vector.offset(nn[i],0,-1,0)).name ~= "air" then
|
||||
local dst=vector.distance(pos,nn[i])
|
||||
for ii=0,pr:next(19,34)-dst do
|
||||
set_node_no_bedrock(vector.new(nn[i].x,nn[i].y + ii,nn[i].z),{name="mcl_blackstone:basalt"})
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
||||
mcl_structures.register_structure("lavadelta",{
|
||||
place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"},
|
||||
spawn_by = {"mcl_blackstone:basalt","mcl_blackstone:blackstone"},
|
||||
num_spawn_by = 2,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.01,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 78375213,
|
||||
octaves = 5,
|
||||
persist = 0.1,
|
||||
flags = "absvalue",
|
||||
},
|
||||
flags = "all_floors",
|
||||
y_max = mcl_vars.mg_nether_max,
|
||||
y_min = mcl_vars.mg_lava_nether_max + 1,
|
||||
biomes = { "BasaltDelta" },
|
||||
place_func = function(pos,def,pr)
|
||||
local nn = minetest.find_nodes_in_area_under_air(vector.offset(pos,-10,-1,-10),vector.offset(pos,10,-1,10),{"mcl_blackstone:basalt","mcl_blackstone:blackstone"})
|
||||
table.sort(nn,function(a, b)
|
||||
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
|
||||
end)
|
||||
if #nn < 1 then return false end
|
||||
local lava = {}
|
||||
for i=1,pr:next(1,#nn) do
|
||||
set_node_no_bedrock(nn[i],{name="mcl_nether:nether_lava_source"})
|
||||
table.insert(lava,nn[i])
|
||||
end
|
||||
for _,v in pairs(lava) do
|
||||
for _,vv in pairs(adjacents) do
|
||||
local p = vector.add(v,vv)
|
||||
if minetest.get_node(p).name ~= "mcl_nether:nether_lava_source" then
|
||||
set_node_no_bedrock(p,{name="mcl_blackstone:basalt"})
|
||||
end
|
||||
end
|
||||
if math.random(3) == 1 then
|
||||
set_node_no_bedrock(v,{name="mcl_nether:magma"})
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
})
|
|
@ -1,3 +1,3 @@
|
|||
name = mcl_surface_pools
|
||||
name = mcl_terrain_features
|
||||
author = cora
|
||||
depends = mcl_init, mcl_structures
|
BIN
screenshot.png
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 94 KiB |