Add files via upload
parent
aaf75c49ab
commit
ef1b583393
51
api.lua
51
api.lua
|
@ -104,13 +104,27 @@ multidimensions.register_dimension=function(name,def,self)
|
|||
node.after_place_node = function(pos, placer, itemstack)
|
||||
local meta=minetest.get_meta(pos)
|
||||
meta:set_string("owner",placer:get_player_name())
|
||||
meta:set_string("infotext",node.description)
|
||||
meta:set_string("infotext",node.description)
|
||||
end
|
||||
node.on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local owner=minetest.get_meta(pos):get_string("owner")
|
||||
local pos2={x=pos.x,y=def.dirt_start+def.dirt_depth+2,z=pos.z}
|
||||
if not minetest.is_protected(pos2, owner) then
|
||||
multidimensions.move(player,pos2)
|
||||
local meta=minetest.get_meta(pos)
|
||||
local owner=meta:get_string("owner")
|
||||
local pos2
|
||||
|
||||
local sp = meta:get_string("pos")
|
||||
if sp ~= "" then
|
||||
pos2 = minetest.string_to_pos(sp)
|
||||
else
|
||||
pos2 = {x=pos.x,y=def.dirt_start+def.dirt_depth+2,z=pos.z}
|
||||
end
|
||||
|
||||
if owner ~= "" and not minetest.is_protected(pos2, owner) then
|
||||
local REset
|
||||
if meta:get_int("re_set") == 0 then
|
||||
meta:set_int("re_set",1)
|
||||
REset = pos
|
||||
end
|
||||
multidimensions.move(player,pos2,REset)
|
||||
end
|
||||
end
|
||||
node.mesecons = {
|
||||
|
@ -346,6 +360,33 @@ minetest.register_node("multidimensions:teleporter0", {
|
|||
end}},
|
||||
})
|
||||
|
||||
minetest.register_node("multidimensions:teleporterre", {
|
||||
description = "Teleport back",
|
||||
tiles = {"default_steel_block.png"},
|
||||
groups = {cracky=3},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drop = "default:cobble",
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local p = minetest.get_meta(pos):get_string("pos")
|
||||
if p == "" then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
multidimensions.move(player,minetest.string_to_pos(p),nil,true)
|
||||
end,
|
||||
mesecons = {effector = {
|
||||
action_on = function (pos, node)
|
||||
local owner=minetest.get_meta(pos):get_string("owner")
|
||||
local pos2={x=pos.x,y=0,z=pos.z}
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do
|
||||
multidimensions.move(ob,pos2)
|
||||
end
|
||||
return false
|
||||
end}},
|
||||
})
|
||||
|
||||
|
||||
if multidimensions.limeted_nametag==true and minetest.settings:get_bool("unlimited_player_transfer_distance")~=false then
|
||||
minetest.settings:set_bool("unlimited_player_transfer_distance",false)
|
||||
minetest.settings:set_bool("player_transfer_distance",multidimensions.max_distance)
|
||||
|
|
58
tools.lua
58
tools.lua
|
@ -152,36 +152,68 @@ multidimensions.apply_dimension=function(player)
|
|||
}
|
||||
end
|
||||
|
||||
multidimensions.move=function(object,pos)
|
||||
multidimensions.move=function(object,pos,set_re)
|
||||
local move=false
|
||||
object:set_pos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
minetest.after(1, function(pos,object,move)
|
||||
|
||||
if set_re == nil then
|
||||
return
|
||||
end
|
||||
|
||||
minetest.set_node({x=pos.x,y=pos.y-2,z=pos.z},{name="default:cobble"})
|
||||
minetest.after(1, function(pos,object,move,set_re)
|
||||
for i=1,100,1 do
|
||||
local nname=minetest.get_node(pos).name
|
||||
if nname~="air" and nname~="ignore" then
|
||||
if nname~="air" and nname~="ignore" and nname ~= "multidimensions:teleporterre" then
|
||||
pos.y=pos.y+1
|
||||
move=true
|
||||
elseif move then
|
||||
object:set_pos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
break
|
||||
minetest.set_node(pos,{name="multidimensions:teleporterre"})
|
||||
minetest.get_meta(pos):set_string("pos",minetest.pos_to_string({x=set_re.x,y=set_re.y+1,z=set_re.z}))
|
||||
pos.y = pos.y + 1
|
||||
minetest.get_meta(set_re):set_string("pos",minetest.pos_to_string(pos))
|
||||
object:set_pos({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
multidimensions.setrespawn(object,{x=pos.x,y=pos.y+1,z=pos.z})
|
||||
return
|
||||
end
|
||||
end
|
||||
end, pos,object,move)
|
||||
minetest.after(5, function(pos,object,move)
|
||||
pos.y = pos.y - 2
|
||||
local reg = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
if reg == nil or reg.walkable == false or reg.name == "default:cobble" then
|
||||
for x = -2,2,1 do
|
||||
for z = -2,2,1 do
|
||||
minetest.set_node({x=pos.x+x,y=pos.y,z=pos.z+z},{name="default:cobble"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end, pos,object,move,set_re)
|
||||
minetest.after(5, function(pos,object,move,set_re)
|
||||
for i=1,100,1 do
|
||||
local nname=minetest.get_node(pos).name
|
||||
if nname~="air" and nname~="ignore" then
|
||||
if nname~="air" and nname~="ignore" and nname ~= "multidimensions:teleporterre" then
|
||||
pos.y=pos.y+1
|
||||
move=true
|
||||
elseif move then
|
||||
object:set_pos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
break
|
||||
minetest.set_node(pos,{name="multidimensions:teleporterre"})
|
||||
minetest.get_meta(pos):set_string("pos",minetest.pos_to_string({x=set_re.x,y=set_re.y+1,z=set_re.z}))
|
||||
pos.y = pos.y + 1
|
||||
minetest.get_meta(set_re):set_string("pos",minetest.pos_to_string(pos))
|
||||
object:set_pos({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
multidimensions.setrespawn(object,{x=pos.x,y=pos.y+1,z=pos.z})
|
||||
return
|
||||
end
|
||||
end
|
||||
end, pos,object,move)
|
||||
pos.y = pos.y - 2
|
||||
local reg = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||
if reg == nil or reg.walkable == false or reg.name == "default:cobble" then
|
||||
for x = -2,2,1 do
|
||||
for z = -2,2,1 do
|
||||
minetest.set_node({x=pos.x+x,y=pos.y,z=pos.z+z},{name="default:cobble"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end, pos,object,move,set_re)
|
||||
return true
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue