time_travel/dimensions.lua

425 lines
12 KiB
Lua
Raw Normal View History

2019-08-11 20:14:06 +02:00
multidimensions.clear_dimensions() -- clear all dimensions
local ores={
["default:stone_with_coal"]=200,
["default:stone_with_iron"]=400,
["default:stone_with_copper"]=500,
["default:stone_with_gold"]=2000,
["default:stone_with_mese"]=10000,
["default:stone_with_diamond"]=20000,
["default:mese"]=40000,
["default:stone_with_metamese"]=40000,
["default:gravel"]={chance=3000,chunk=2,}
}
--Dinosaur Age Dimension
multidimensions.register_dimension("dinosaur_age",{
ground_ores = {
["default:fern_1"] = 2,
["default:fern_2"] = 4,
["default:fern_3"] = 8,
["default:junglegrass"] = 16,
["default:grass_5"] = 16,
["paleotest:Cycad"] = 32,
["paleotest:Horsetails"] = 32,
["time_travel:jungle_tree"] = 256,
},
stone_ores = table.copy(ores), -- works as above, but in stone
dirt_ores = {},
grass_ores = {},
air_ores = {},
water_ores = {},
sand_ores = {},
self = {}, -- can contain everything, var like dirt="default:dirt" will be remade to dirt=content_id
dim_y = 2000, -- dimension start (don't change if you don't know what you're doing)
dim_height = 999, -- dimension height
dirt_start = 501, -- when dirt begins to appear (default is 501)
dirt_depth = 3, -- dirt depth
ground_limit = 530, -- ground y limit (ground ends here)
water_depth = 8, -- depth fron ground and down
enable_water = nil, -- (nil = true)
terrain_density = 0.4, -- or ground density
flatland = nil, -- (nil = false)
teleporter = false, -- (nil = true) dimension teleporter
gravity = 1, -- (1 = default) dimension gravity
stone = "default:stone",
dirt = "default:dirt",
grass = "default:dirt_with_coniferous_litter",
air = "air",
water = "default:water_source",
sand = "default:sand",
bedrock = "multidimensions:bedrock", -- at dimension edges
map = {
offset = 0,
scale = 1,
spread = {x=100,y=18,z=100},
seeddiff = 24,
octaves = 5,
persist = 0.7,
lacunarity = 1,
flags = "absvalue",
},
--[[
craft = { -- teleport craft recipe
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
{"default:wood","default:mese","default:wood",},
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
},
]]
--[[
on_generate=function(self,data,id,area,x,y,z)
if y <= self.dirt_start+5 then
data[id] = self.air
else
return
end
return data -- to return changes
end,
]]
-- data: active generating area (VoxelArea)
-- index: data index
-- self: {dim_start, dim_end, dim_height, ground_limit, heat, humidity, dirt, stone, grass, air, water, sand, bedrock ... and your inputs
----area: (VoxelArea:new({MinEd...})
sky = {{r=79, g=165, b=92},"plain",{}}, -- same as:set_sky()
on_enter=function(player) --on enter dimension
--pos = player:get_pos()
----pos.y = pos.y - 1
--if minetest.get_node({pos.x, pos.y-1, pos.z}) ~= "multidimensions:teleporter0" and minetest.get_node(pos) ~= "multidimensions:teleporter0" then
-- minetest.set_node(pos, {name="multidimensions:teleporter0"})
--end
end,
on_leave=function(player) --on leave dimension
end,
})
--Ice Age Dimension
multidimensions.register_dimension("ice_age",{
ground_ores = {
["default:snow"] = 100,
["time_travel:snowy_pine_tree"] = 8000,
},
stone_ores = table.copy(ores), -- works as above, but in stone
dirt_ores = {},
grass_ores = {},
air_ores = {},
water_ores = {},
sand_ores = {},
self = {}, -- can contain everything, var like dirt="default:dirt" will be remade to dirt=content_id
dim_y = 3000, -- dimension start (don't change if you don't know what you're doing)
dim_height = 999, -- dimension height
dirt_start = 501, -- when dirt begins to appear (default is 501)
dirt_depth = 3, -- dirt depth
ground_limit = 530, -- ground y limit (ground ends here)
water_depth = 8, -- depth fron ground and down
enable_water = nil, -- (nil = true)
terrain_density = 0.4, -- or ground density
flatland = nil, -- (nil = false)
teleporter = false, -- (nil = true) dimension teleporter
gravity = 1, -- (1 = default) dimension gravity
stone = "default:stone",
dirt = "default:dirt",
grass = "default:dirt_with_snow",
air = "air",
water = "default:ice",
sand = "default:gravel",
bedrock = "multidimensions:bedrock", -- at dimension edges
map = {
offset = 0,
scale = 1,
spread = {x=100,y=18,z=100},
seeddiff = 24,
octaves = 5,
persist = 0.7,
lacunarity = 1,
flags = "absvalue",
},
--[[
craft = { -- teleport craft recipe
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
{"default:wood","default:mese","default:wood",},
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
},
]]
--[[
on_generate=function(self,data,id,area,x,y,z)
if y <= self.dirt_start+5 then
data[id] = self.air
else
return
end
return data -- to return changes
end,
]]
-- data: active generating area (VoxelArea)
-- index: data index
-- self: {dim_start, dim_end, dim_height, ground_limit, heat, humidity, dirt, stone, grass, air, water, sand, bedrock ... and your inputs
----area: (VoxelArea:new({MinEd...})
--sky = {{r=219, g=168, b=117},"plain",{}}, -- same as:set_sky()
on_enter=function(player) --on enter dimension
end,
on_leave=function(player) --on leave dimension
end,
})
--Prehistoric Australia Dimension
multidimensions.register_dimension("prehistoric_australia",{
ground_ores = {
["default:dry_grass_1"] = 25,
["time_travel:tree"] = 30000,
},
stone_ores = table.copy(ores), -- works as above, but in stone
dirt_ores = {},
grass_ores = {
["time_travel:australia_red_dirt"] = 100,
},
air_ores = {},
water_ores = {},
sand_ores = {
["default:water_source"] = 300,
},
self = {}, -- can contain everything, var like dirt="default:dirt" will be remade to dirt=content_id
dim_y = 4000, -- dimension start (don't change if you don't know what you're doing)
dim_height = 999, -- dimension height
dirt_start = 501, -- when dirt begins to appear (default is 501)
dirt_depth = 3, -- dirt depth
ground_limit = 530, -- ground y limit (ground ends here)
water_depth = 8, -- depth fron ground and down
enable_water = nil, -- (nil = true)
terrain_density = 0.4, -- or ground density
flatland = nil, -- (nil = false)
teleporter = false, -- (nil = true) dimension teleporter
gravity = 1, -- (1 = default) dimension gravity
stone = "default:stone",
dirt = "time_travel:australia_red_stone",
grass = "time_travel:australia_red_gravel",
air = "air",
water = "air",
sand = "time_travel:australia_red_sand",
bedrock = "multidimensions:bedrock", -- at dimension edges
map = {
offset = 0,
scale = 1,
spread = {x=100,y=18,z=100},
seeddiff = 24,
octaves = 5,
persist = 0.7,
lacunarity = 1,
flags = "absvalue",
},
--[[
craft = { -- teleport craft recipe
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
{"default:wood","default:mese","default:wood",},
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
},
]]
--[[
on_generate=function(self,data,id,area,x,y,z)
if y <= self.dirt_start+5 then
data[id] = self.air
else
return
end
return data -- to return changes
end,
]]
-- data: active generating area (VoxelArea)
-- index: data index
-- self: {dim_start, dim_end, dim_height, ground_limit, heat, humidity, dirt, stone, grass, air, water, sand, bedrock ... and your inputs
----area: (VoxelArea:new({MinEd...})
--sky = {{r=219, g=168, b=117},"plain",{}}, -- same as:set_sky()
on_enter=function(player) --on enter dimension
end,
on_leave=function(player) --on leave dimension
end,
})
--Water Age Dimension
minetest.register_ore({
ore_type = "stratum",
ore = "multidimensions:bedrock",
wherein = "air",
--clust_scarcity = 9 * 9 * 9,
--clust_num_ores = 12,
--clust_size = 3,
y_min = 5000,
y_max = 5000,
--biomes = {},
np_stratum_thickness = {
offset = 8,
scale = 4,
spread = {x = 100, y = 100, z = 100},
seed = 17,
octaves = 3,
persist = 0.7
},
stratum_thickness = 1,
})
minetest.register_ore({
ore_type = "stratum",
ore = "default:stone",
wherein = "air",
--clust_scarcity = 9 * 9 * 9,
--clust_num_ores = 12,
--clust_size = 3,
y_min = 5001,
y_max = 5500,
--biomes = {},
np_stratum_thickness = {
offset = 8,
scale = 4,
spread = {x = 100, y = 100, z = 100},
seed = 17,
octaves = 3,
persist = 0.7
},
stratum_thickness = 500,
})
minetest.register_ore({
ore_type = "stratum",
ore = "default:sand",
wherein = "air",
--clust_scarcity = 9 * 9 * 9,
--clust_num_ores = 12,
--clust_size = 3,
y_min = 5501,
y_max = 5501,
--biomes = {},
np_stratum_thickness = {
offset = 8,
scale = 4,
spread = {x = 100, y = 100, z = 100},
seed = 17,
octaves = 3,
persist = 0.7
},
stratum_thickness = 1,
})
minetest.register_ore({
ore_type = "stratum",
ore = "default:water_source",
wherein = "air",
--clust_scarcity = 9 * 9 * 9,
--clust_num_ores = 12,
--clust_size = 3,
y_min = 5502,
y_max = 5511,
--biomes = {},
np_stratum_thickness = {
offset = 8,
scale = 4,
spread = {x = 100, y = 100, z = 100},
seed = 17,
octaves = 3,
persist = 0.7
},
stratum_thickness = 10,
})
--[[
minetest.register_ore({
ore_type = "scatter",
ore = "time_travel:coral_reef",
wherein = "default:water_source",
clust_scarcity = 7 * 7 * 7,
clust_num_ores = 5,
clust_size = 1,
y_min = 5502,
y_max = 5502,
})
]]
--LBMs and ABMs
minetest.register_lbm({
name = "time_travel:tree_lbm",
run_at_every_load = true,
nodenames = {"time_travel:jungle_tree", "time_travel:snowy_pine_tree", "time_travel:tree"},
action = function(pos, node)
minetest.set_node(pos, {name = "air"})
local tree=""
if node.name=="time_travel:jungle_tree" then
tree=minetest.get_modpath("default") .. "/schematics/jungle_tree.mts"
elseif node.name=="time_travel:snowy_pine_tree" then
tree=minetest.get_modpath("default") .. "/schematics/snowy_pine_tree_from_sapling.mts"
elseif node.name=="time_travel:tree" then
tree=minetest.get_modpath("default") .. "/schematics/apple_tree.mts"
end
minetest.place_schematic({x=pos.x,y=pos.y,z=pos.z}, tree, "random", {}, true)
end,
})
--[[
minetest.register_lbm({
name = "time_travel:coral_reef_lbm",
run_at_every_load = true,
nodenames = {"time_travel:coral_reef"},
action = function(pos, node)
--minetest.set_node(pos, {name = "default:water_source"})
local coral_reef=""
--if node.name=="time_travel:coral_reef" then
coral_reef=minetest.get_modpath("default") .. "/schematics/corals.mts"
--end
minetest.place_schematic(pos, coral_reef, "random", {}, true)
end
})
]]
minetest.register_abm({
nodenames = {"time_travel:australia_red_dirt"},
neighbors = {"default:water_source", "default:water_flowing"},
interval = 5.0,
chance = 1,
action = function(pos, node, active_object_count,
active_object_count_wider)
local pos = {x = pos.x, y = pos.y, z = pos.z}
minetest.set_node(pos, {name = "default:dirt"})
end
})