Add files via upload
parent
14f8674fe3
commit
3c076465ea
8
api.lua
8
api.lua
|
@ -22,6 +22,7 @@ multidimensions.register_dimension=function(name,def,self)
|
||||||
def.terrain_density = def.terrain_density or 0.4
|
def.terrain_density = def.terrain_density or 0.4
|
||||||
def.flatland = def.flatland
|
def.flatland = def.flatland
|
||||||
def.gravity = def.gravity or 1
|
def.gravity = def.gravity or 1
|
||||||
|
--def.sky = def.sky
|
||||||
|
|
||||||
def.map = def.map or {}
|
def.map = def.map or {}
|
||||||
def.map.offset = def.map.offset or 0
|
def.map.offset = def.map.offset or 0
|
||||||
|
@ -45,7 +46,7 @@ multidimensions.register_dimension=function(name,def,self)
|
||||||
def.self.dim_end = def.dim_y+def.dim_height
|
def.self.dim_end = def.dim_y+def.dim_height
|
||||||
def.self.dim_height = def.dim_height
|
def.self.dim_height = def.dim_height
|
||||||
def.self.ground_limit = def.ground_limit
|
def.self.ground_limit = def.ground_limit
|
||||||
|
def.self.dirt_start = def.dirt_start
|
||||||
--def.stone_ores {}
|
--def.stone_ores {}
|
||||||
--def.dirt_ores {}
|
--def.dirt_ores {}
|
||||||
--def.grass_ores {}
|
--def.grass_ores {}
|
||||||
|
@ -134,6 +135,11 @@ multidimensions.register_dimension=function(name,def,self)
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if def.dim_y > 0 and def.dim_y < multidimensions.earth.above then
|
||||||
|
multidimensions.earth.above = def.dim_y
|
||||||
|
elseif def.dim_y < 0 and def.dim_y+def.dim_height > multidimensions.earth.under then
|
||||||
|
multidimensions.earth.under = def.dim_y+def.dim_height
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_generated(function(minp, maxp, seed)
|
minetest.register_on_generated(function(minp, maxp, seed)
|
||||||
|
|
|
@ -156,7 +156,8 @@ multidimensions.register_dimension("desert",{
|
||||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||||
{"default:desert_stone","default:mese","default:desert_stone",},
|
{"default:desert_stone","default:mese","default:desert_stone",},
|
||||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||||
}
|
},
|
||||||
|
sky={{r=219, g=168, b=117},"plain",{}},
|
||||||
})
|
})
|
||||||
|
|
||||||
multidimensions.register_dimension("hot",{
|
multidimensions.register_dimension("hot",{
|
||||||
|
|
5
init.lua
5
init.lua
|
@ -8,6 +8,11 @@ multidimensions={
|
||||||
remake_bed=true,
|
remake_bed=true,
|
||||||
dimensions={},
|
dimensions={},
|
||||||
user={},
|
user={},
|
||||||
|
player_pos={},
|
||||||
|
earth = {
|
||||||
|
above=31000,
|
||||||
|
under=-31000,
|
||||||
|
},
|
||||||
craftable_teleporters=true,
|
craftable_teleporters=true,
|
||||||
registered_dimensions={},
|
registered_dimensions={},
|
||||||
first_dimensions_appear_at = 2000,
|
first_dimensions_appear_at = 2000,
|
||||||
|
|
44
tools.lua
44
tools.lua
|
@ -61,10 +61,16 @@ minetest.register_on_player_receive_fields(function(player, form, pressed)
|
||||||
local d = multidimensions.registered_dimensions[dims[dim]]
|
local d = multidimensions.registered_dimensions[dims[dim]]
|
||||||
if not d then
|
if not d then
|
||||||
multidimensions.move(object,{x=pos.x,y=0,z=pos.z})
|
multidimensions.move(object,{x=pos.x,y=0,z=pos.z})
|
||||||
|
if object:is_player() then
|
||||||
|
multidimensions.apply_dimension(object)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
local pos2={x=pos.x,y=d.dirt_start+d.dirt_depth+1,z=pos.z}
|
local pos2={x=pos.x,y=d.dirt_start+d.dirt_depth+1,z=pos.z}
|
||||||
if d and minetest.is_protected(pos2, name)==false then
|
if d and minetest.is_protected(pos2, name)==false then
|
||||||
multidimensions.move(object,pos2)
|
multidimensions.move(object,pos2)
|
||||||
|
if object:is_player() then
|
||||||
|
multidimensions.apply_dimension(object)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
multidimensions.user[name]=nil
|
multidimensions.user[name]=nil
|
||||||
|
@ -97,21 +103,49 @@ end
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_on_respawnplayer(function(player)
|
minetest.register_on_respawnplayer(function(player)
|
||||||
multidimensions.apply_gravity(player)
|
multidimensions.apply_dimension(player)
|
||||||
end)
|
end)
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
multidimensions.apply_gravity(player)
|
multidimensions.apply_dimension(player)
|
||||||
|
end)
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
multidimensions.player_pos[player:get_player_name()] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
multidimensions.apply_gravity=function(player)
|
multidimensions.apply_dimension=function(player)
|
||||||
local p = player:get_pos()
|
local p = player:get_pos()
|
||||||
|
local name = player:get_player_name()
|
||||||
|
local pp = multidimensions.player_pos[name]
|
||||||
|
if pp and p.y > pp.y1 and p.y < pp.y2 then
|
||||||
|
return
|
||||||
|
elseif pp then
|
||||||
|
local od = multidimensions.registered_dimensions[pp.name]
|
||||||
|
if od and od.on_leave then
|
||||||
|
od.on_leave(player)
|
||||||
|
end
|
||||||
|
end
|
||||||
for i, v in pairs(multidimensions.registered_dimensions) do
|
for i, v in pairs(multidimensions.registered_dimensions) do
|
||||||
if p.y < v.dim_y and p.y > v.dim_y+v.dim_height then
|
if p.y > v.dim_y and p.y < v.dim_y+v.dim_height then
|
||||||
|
multidimensions.player_pos[name] = {y1 = v.dim_y, y2 = v.dim_y+v.dim_height, name=i}
|
||||||
player:set_physics_override({gravity=v.gravity})
|
player:set_physics_override({gravity=v.gravity})
|
||||||
|
if v.sky then
|
||||||
|
player:set_sky(v.sky[1],v.sky[2],v.sky[3])
|
||||||
|
else
|
||||||
|
player:set_sky(nil,"regular",nil)
|
||||||
|
end
|
||||||
|
if v.on_enter then
|
||||||
|
v.on_enter(player)
|
||||||
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
player:set_physics_override({gravity=1})
|
player:set_physics_override({gravity=1})
|
||||||
|
player:set_sky(nil,"regular",nil)
|
||||||
|
multidimensions.player_pos[name] = {
|
||||||
|
y1 = multidimensions.earth.under,
|
||||||
|
y2 = multidimensions.earth.above,
|
||||||
|
name=""
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
multidimensions.move=function(object,pos)
|
multidimensions.move=function(object,pos)
|
||||||
|
@ -153,7 +187,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
if capg > 2 then
|
if capg > 2 then
|
||||||
capg=0
|
capg=0
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
multidimensions.apply_gravity(player)
|
multidimensions.apply_dimension(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
Loading…
Reference in New Issue