Add files via upload

master
AiTechEye 2019-08-05 21:08:43 +02:00 committed by GitHub
parent 14f8674fe3
commit 3c076465ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 7 deletions

View File

@ -22,6 +22,7 @@ multidimensions.register_dimension=function(name,def,self)
def.terrain_density = def.terrain_density or 0.4
def.flatland = def.flatland
def.gravity = def.gravity or 1
--def.sky = def.sky
def.map = def.map or {}
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_height = def.dim_height
def.self.ground_limit = def.ground_limit
def.self.dirt_start = def.dirt_start
--def.stone_ores {}
--def.dirt_ores {}
--def.grass_ores {}
@ -134,6 +135,11 @@ multidimensions.register_dimension=function(name,def,self)
})
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
minetest.register_on_generated(function(minp, maxp, seed)

View File

@ -156,7 +156,8 @@ multidimensions.register_dimension("desert",{
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
{"default:desert_stone","default:mese","default:desert_stone",},
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
}
},
sky={{r=219, g=168, b=117},"plain",{}},
})
multidimensions.register_dimension("hot",{

View File

@ -8,6 +8,11 @@ multidimensions={
remake_bed=true,
dimensions={},
user={},
player_pos={},
earth = {
above=31000,
under=-31000,
},
craftable_teleporters=true,
registered_dimensions={},
first_dimensions_appear_at = 2000,

View File

@ -61,10 +61,16 @@ minetest.register_on_player_receive_fields(function(player, form, pressed)
local d = multidimensions.registered_dimensions[dims[dim]]
if not d then
multidimensions.move(object,{x=pos.x,y=0,z=pos.z})
if object:is_player() then
multidimensions.apply_dimension(object)
end
else
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
multidimensions.move(object,pos2)
if object:is_player() then
multidimensions.apply_dimension(object)
end
end
end
multidimensions.user[name]=nil
@ -97,21 +103,49 @@ end
})
minetest.register_on_respawnplayer(function(player)
multidimensions.apply_gravity(player)
multidimensions.apply_dimension(player)
end)
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)
multidimensions.apply_gravity=function(player)
multidimensions.apply_dimension=function(player)
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
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})
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
end
end
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
multidimensions.move=function(object,pos)
@ -153,7 +187,7 @@ minetest.register_globalstep(function(dtime)
if capg > 2 then
capg=0
for _, player in pairs(minetest.get_connected_players()) do
multidimensions.apply_gravity(player)
multidimensions.apply_dimension(player)
end
end
end)