Merge pull request 'Nether biomes' (#2328) from nether_biomes into master
Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/2328 Reviewed-by: MysticTempest <mystictempest@noreply.git.minetest.land>
|
@ -189,6 +189,9 @@ local list_of_all_biomes = {
|
||||||
"MesaBryce",
|
"MesaBryce",
|
||||||
"JungleEdge",
|
"JungleEdge",
|
||||||
"SavannaM",
|
"SavannaM",
|
||||||
|
"Nether",
|
||||||
|
"WarpedForest",
|
||||||
|
"SoulsandValley"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- count how many mobs are in an area
|
-- count how many mobs are in an area
|
||||||
|
|
|
@ -766,15 +766,32 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"SoulsandValley",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
7,
|
minetest.LIGHT_MAX+1,
|
||||||
30,
|
30,
|
||||||
27500,
|
27500,
|
||||||
4,
|
4,
|
||||||
mcl_vars.mg_nether_min,
|
mcl_vars.mg_nether_min,
|
||||||
mcl_vars.mg_nether_max)
|
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
|
-- spawn eggs
|
||||||
mcl_mobs:register_egg("mobs_mc:enderman", S("Enderman"), "mobs_mc_spawn_icon_enderman.png", 0)
|
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",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"SoulsandValley",
|
||||||
|
"BasaltDelta",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
minetest.LIGHT_MAX+1,
|
7,
|
||||||
30,
|
30,
|
||||||
18000,
|
72000,
|
||||||
2,
|
2,
|
||||||
mcl_vars.mg_nether_min,
|
mcl_vars.mg_nether_min,
|
||||||
mcl_vars.mg_nether_max)
|
mcl_vars.mg_nether_max)
|
||||||
|
|
|
@ -302,10 +302,10 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"SoulsandValley",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
7,
|
minetest.LIGHT_MAX+1,
|
||||||
30,
|
30,
|
||||||
10000,
|
10000,
|
||||||
3,
|
3,
|
||||||
|
|
|
@ -402,7 +402,8 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"BasaltDelta",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
minetest.LIGHT_MAX+1,
|
minetest.LIGHT_MAX+1,
|
||||||
|
@ -418,7 +419,8 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"BasaltDelta",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
minetest.LIGHT_MAX+1,
|
minetest.LIGHT_MAX+1,
|
||||||
|
@ -433,7 +435,8 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"BasaltDelta",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
minetest.LIGHT_MAX+1,
|
minetest.LIGHT_MAX+1,
|
||||||
|
|
|
@ -118,7 +118,8 @@ mcl_mobs:spawn_specific(
|
||||||
"nether",
|
"nether",
|
||||||
"ground",
|
"ground",
|
||||||
{
|
{
|
||||||
"Nether"
|
"Nether",
|
||||||
|
"CrimsonForest",
|
||||||
},
|
},
|
||||||
0,
|
0,
|
||||||
minetest.LIGHT_MAX+1,
|
minetest.LIGHT_MAX+1,
|
||||||
|
|
|
@ -146,8 +146,25 @@ mcl_weather.skycolor = {
|
||||||
player:set_stars({visible = false})
|
player:set_stars({visible = false})
|
||||||
mcl_weather.skycolor.override_day_night_ratio(player, 0.5)
|
mcl_weather.skycolor.override_day_night_ratio(player, 0.5)
|
||||||
elseif dim == "nether" then
|
elseif dim == "nether" then
|
||||||
player:set_sky({ type = "plain",
|
local nether_sky = {
|
||||||
base_color = "#300808",
|
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,
|
clouds = false,
|
||||||
})
|
})
|
||||||
player:set_sun({visible = false , sunrise_visible = false})
|
player:set_sun({visible = false , sunrise_visible = false})
|
||||||
|
|
|
@ -323,36 +323,7 @@ for s=1, #specialstones do
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.settings:get_bool("mcl_generate_ores", true) then
|
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
|
end
|
||||||
--]]
|
--]]
|
||||||
--soul torch
|
--soul torch
|
||||||
|
|
485
mods/ITEMS/mcl_crimson/init.lua
Normal file
|
@ -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
|
||||||
|
})
|
24
mods/ITEMS/mcl_crimson/locale/mcl_crimson.de.tr
Normal file
|
@ -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!
|
23
mods/ITEMS/mcl_crimson/locale/mcl_crimson.fr.tr
Normal file
|
@ -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 !
|
23
mods/ITEMS/mcl_crimson/locale/template.txt
Normal file
|
@ -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!=
|
4
mods/ITEMS/mcl_crimson/mod.conf
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name = mcl_crimson
|
||||||
|
author = debiankaios
|
||||||
|
depends = mcl_stairs, mobs_mc, mcl_util
|
||||||
|
|
BIN
mods/ITEMS/mcl_crimson/schematics/crimson_fungus_1.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/schematics/crimson_fungus_2.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/schematics/crimson_fungus_3.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/schematics/warped_fungus_1.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/schematics/warped_fungus_2.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/schematics/warped_fungus_3.mts
Normal file
BIN
mods/ITEMS/mcl_crimson/textures/crimson_hyphae.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_hyphae_side.png
Normal file
After Width: | Height: | Size: 525 B |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_hyphae_wood.png
Normal file
After Width: | Height: | Size: 446 B |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_nylium.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_nylium_side.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_roots.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_stem_stripped_side.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
mods/ITEMS/mcl_crimson/textures/crimson_stem_stripped_top.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/farming_crimson_fungus.png
Normal file
After Width: | Height: | Size: 307 B |
BIN
mods/ITEMS/mcl_crimson/textures/farming_warped_fungus.png
Normal file
After Width: | Height: | Size: 172 B |
BIN
mods/ITEMS/mcl_crimson/textures/nether_sprouts.png
Normal file
After Width: | Height: | Size: 314 B |
BIN
mods/ITEMS/mcl_crimson/textures/nether_wart_block.png
Normal file
After Width: | Height: | Size: 565 B |
BIN
mods/ITEMS/mcl_crimson/textures/shroomlight.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_crimson_stem.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_crimson_stem_side.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_crimson_stem_top.png
Normal file
After Width: | Height: | Size: 231 B |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_warped_stem.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_warped_stem_side.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
mods/ITEMS/mcl_crimson/textures/stripped_warped_stem_top.png
Normal file
After Width: | Height: | Size: 239 B |
BIN
mods/ITEMS/mcl_crimson/textures/twisting_vines.png
Normal file
After Width: | Height: | Size: 475 B |
BIN
mods/ITEMS/mcl_crimson/textures/twisting_vines_plant.png
Normal file
After Width: | Height: | Size: 581 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_hyphae.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/warped_hyphae_side.png
Normal file
After Width: | Height: | Size: 479 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_hyphae_wood.png
Normal file
After Width: | Height: | Size: 461 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_hyphae_wood_2nd.png
Normal file
After Width: | Height: | Size: 434 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_nylium.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_nylium_side.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_roots.png
Normal file
After Width: | Height: | Size: 462 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_stem_stripped_side.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
mods/ITEMS/mcl_crimson/textures/warped_stem_stripped_top.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
mods/ITEMS/mcl_crimson/textures/warped_wart_block.png
Normal file
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_structures = minetest.get_modpath("mcl_structures")
|
||||||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||||
local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
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
|
-- 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"
|
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_river_water = "air",
|
||||||
node_cave_liquid = "air",
|
node_cave_liquid = "air",
|
||||||
y_min = mcl_vars.mg_nether_min,
|
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,
|
y_max = mcl_vars.mg_nether_max + 80,
|
||||||
heat_point = 100,
|
heat_point = 100,
|
||||||
humidity_point = 0,
|
humidity_point = 0,
|
||||||
|
@ -1499,6 +1500,175 @@ local function register_dimension_biomes()
|
||||||
_mcl_palette_index = 17,
|
_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 ]]
|
--[[ THE END ]]
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "End",
|
name = "End",
|
||||||
|
@ -1581,6 +1751,39 @@ local function register_biome_ores()
|
||||||
"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", },
|
"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", },
|
||||||
})
|
})
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
-- Register “fake” ores directly related to the biomes. These are mostly low-level landscape alternations
|
-- 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
|
-- Decorations in non-Overworld dimensions
|
||||||
local function register_dimension_decorations()
|
local function register_dimension_decorations()
|
||||||
--[[ NETHER ]]
|
--[[ 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 ]]
|
--[[ THE END ]]
|
||||||
|
|
||||||
|
@ -3975,10 +4436,21 @@ if mg_name ~= "singlenode" then
|
||||||
|
|
||||||
-- Overworld decorations for v6 are handled in mcl_mapgen_core
|
-- 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)
|
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 gennotify = minetest.get_mapgen_object("gennotify")
|
||||||
--local poslist = {}
|
|
||||||
local pr = PseudoRandom(blockseed + 14)
|
local pr = PseudoRandom(blockseed + 14)
|
||||||
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
|
@ -3990,8 +4462,13 @@ if mg_name ~= "singlenode" then
|
||||||
end
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = mcl_biomes
|
name = mcl_biomes
|
||||||
author = maikerumine
|
author = maikerumine
|
||||||
description = Adds the various biomes and biome-related things for non-v6 map generators.
|
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 = "absvalue",
|
||||||
},
|
},
|
||||||
flags = "place_center_x, place_center_z, force_placement",
|
flags = "place_center_x, place_center_z, force_placement",
|
||||||
biomes = ocean_biomes,
|
|
||||||
y_max = -24,
|
y_max = -24,
|
||||||
y_min = mcl_vars.mg_overworld_min,
|
y_min = mcl_vars.mg_overworld_min,
|
||||||
filenames = schems,
|
|
||||||
y_offset = function(pr) return pr:next(-4,-2) end,
|
y_offset = function(pr) return pr:next(-4,-2) end,
|
||||||
place_func = function(pos,def,pr)
|
place_func = function(pos,def,pr)
|
||||||
local p = vector.new(pos.x + pr:next(-30,30),pos.y,pos.z + pr:next(-30,30))
|
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
|
nether_wart_chance = 170
|
||||||
end
|
end
|
||||||
-- Generate Nether decorations manually: Eternal fire, mushrooms, nether wart
|
-- 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 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
|
if minp.y > mcl_vars.mg_nether_max or maxp.y < mcl_vars.mg_nether_min then
|
||||||
return
|
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)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
minetest.log("action", "[mcl_mapgen_core] Nether decorations " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp))
|
||||||
|
|
||||||
-- Eternal fire on netherrack
|
-- TODO: Generate everything based on Perlin noise instead of PseudoRandom
|
||||||
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)
|
|
||||||
|
|
||||||
-- Eternal fire on magma cubes
|
local bpos
|
||||||
special_deco(magma, function(bpos)
|
local rack = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:netherrack"})
|
||||||
if pr_nether:next(1,150) == 1 then
|
local magma = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:magma"})
|
||||||
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
local ssand = minetest.find_nodes_in_area_under_air(minp, maxp, {"mcl_nether:soul_sand"})
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Mushrooms on netherrack
|
-- Helper function to spawn “fake” decoration
|
||||||
-- Note: Spawned *after* the fire because of light level checks
|
local function special_deco(nodes, spawn_func)
|
||||||
special_deco(rack, function(bpos)
|
for n = 1, #nodes do
|
||||||
local l = minetest.get_node_light(bpos, 0.5)
|
bpos = {x = nodes[n].x, y = nodes[n].y + 1, z = nodes[n].z }
|
||||||
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
|
spawn_func(bpos)
|
||||||
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
|
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
|
-- Eternal fire on magma cubes
|
||||||
-- TODO: Spawn in Nether fortresses
|
special_deco(magma, function(bpos)
|
||||||
special_deco(ssand, function(bpos)
|
if pr_nether:next(1,150) == 1 then
|
||||||
if pr_nether:next(1, nether_wart_chance) == 1 then
|
minetest.set_node(bpos, {name = "mcl_fire:eternal_fire"})
|
||||||
minetest.set_node(bpos, {name = "mcl_nether:nether_wart"})
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
minetest.register_on_generated(function(minp, maxp, blockseed)
|
minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
|
|
36
mods/MAPGEN/mcl_nether_fortresses/init.lua
Normal file
|
@ -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
|
||||||
|
})
|
3
mods/MAPGEN/mcl_nether_fortresses/mod.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name = mcl_nether_fortresses
|
||||||
|
author = cora
|
||||||
|
depends = mcl_init, mcl_structures, mcl_mobspawners
|
BIN
mods/MAPGEN/mcl_nether_fortresses/schematics/nether_outpost.mts
Normal file
|
@ -8,6 +8,10 @@ function mcl_structures.place_structure(pos, def, pr)
|
||||||
elseif def.y_offset then
|
elseif def.y_offset then
|
||||||
y_offset = def.y_offset
|
y_offset = def.y_offset
|
||||||
end
|
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
|
if def.filenames then
|
||||||
local file = def.filenames[pr:next(1,#def.filenames)]
|
local file = def.filenames[pr:next(1,#def.filenames)]
|
||||||
local pp = vector.offset(pos,0,y_offset,0)
|
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
|
|
||||||
})
|
|
224
mods/MAPGEN/mcl_terrain_features/init.lua
Normal file
|
@ -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
|
author = cora
|
||||||
depends = mcl_init, mcl_structures
|
depends = mcl_init, mcl_structures
|
BIN
screenshot.png
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 94 KiB |