forked from Red_King_Cyclops/time_travel
425 lines
12 KiB
Lua
425 lines
12 KiB
Lua
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
|
|
})
|