Add files via upload

master
AiTechEye 2020-04-28 09:56:18 +02:00 committed by GitHub
parent aaf75c49ab
commit ef1b583393
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 91 additions and 18 deletions

51
api.lua
View File

@ -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)

View File

@ -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