diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..34a18a5 --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +Teleport through the gate \ No newline at end of file diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..ba94e6c --- /dev/null +++ b/init.lua @@ -0,0 +1,158 @@ +local tpgate={} + +tpgate.teleport_move=function(pos,player) + local d=minetest.registered_nodes[minetest.get_node(pos).name] + if d and d.walkable==false then + player:set_pos(pos) + end +end + +tpgate.teleport=function(pos,player) + local p=player:getpos() + local x=math.floor((p.x-pos.x)+ 0.5) + local y=math.floor((p.y-pos.y)+ 0.5) + local z=math.floor(( p.z-pos.z)+ 0.5) + if y>0 then + tpgate.teleport_move({x=pos.x,y=pos.y-2,z=pos.z},player) + elseif y<-1 then + tpgate.teleport_move({x=pos.x,y=pos.y+1,z=pos.z},player) + elseif x>0 and x>z then + tpgate.teleport_move({x=pos.x-1,y=pos.y-1,z=pos.z},player) + elseif x<0 and x0 and z>x then + tpgate.teleport_move({x=pos.x,y=pos.y-1,z=pos.z-1},player) + elseif z<0 and z