Añadida runa de teletransporte a casa
- Obsidiana mágica: Obsidiana decorativa. Si forma parte de una runa de teletransporte a casa, al romperla elimina el punto de teletransporte con el que está enlazada. - Runa de "set home": cambia la obsidiana por obsidiana mágica y registra sus coordenadas. - Piedra de hogar (home stone): Teletransporta a la última runa activada por el jugador. - Runa para crear la Piedra del hogar. - BugFix: Las varitas se stackeaban en más de una por stack. Ya no. -- Yawinmaster
parent
a0abcb4882
commit
9f3ad200a1
|
@ -50,57 +50,6 @@ minetest.register_node("default_override:bedrock", {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
--[[
|
||||
minetest.register_node("default:rail", {
|
||||
description = "Rail",
|
||||
drawtype = "raillike",
|
||||
tiles = {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
|
||||
inventory_image = "default_rail.png",
|
||||
wield_image = "default_rail.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
stack_max = 64,
|
||||
groups = {bendy=2,dig_immediate=2,attached_node=1},
|
||||
})
|
||||
|
||||
|
||||
minetest.register_node("default:torch", {
|
||||
description = "Torch",
|
||||
drawtype = "torchlike",
|
||||
--tiles = {"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"},
|
||||
tiles = {
|
||||
{name="default_torch_on_floor_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
{name="default_torch_on_ceiling_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
{name="default_torch_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}
|
||||
},
|
||||
inventory_image = "default_torch_on_floor.png",
|
||||
wield_image = "default_torch_on_floor.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
light_source = LIGHT_MAX-1,
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
|
||||
wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
|
||||
wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
|
||||
},
|
||||
stack_max = 64,
|
||||
groups = {choppy=2,dig_immediate=3,flammable=1,attached_node=1},
|
||||
legacy_wallmounted = true,
|
||||
sounds = default.node_sound_defaults(),
|
||||
action = function(pos)
|
||||
add_fire(pos)
|
||||
end
|
||||
})
|
||||
]]--
|
||||
|
||||
minetest.register_node("default_override:lapisblock", {
|
||||
description = "Lapis Lazul Block",
|
||||
tiles = {"default_lapis_block.png"},
|
||||
|
|
|
@ -17,7 +17,6 @@ function magic.check_recipe(recipe_id, target)
|
|||
local i = 0
|
||||
local j = 0
|
||||
local k = 0
|
||||
|
||||
|
||||
k = 0
|
||||
for n_lin, lin in ipairs(recipe) do
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
default
|
||||
bucket
|
||||
walls
|
||||
stairs
|
|
@ -0,0 +1,225 @@
|
|||
magic.playerHomes = {}
|
||||
|
||||
local worldpath = minetest.get_worldpath()
|
||||
|
||||
local loadHomes = function ()
|
||||
local fh,err = io.open(worldpath .. "/magic_homes.txt", "r")
|
||||
if err then
|
||||
print("No existing warps to read.")
|
||||
return
|
||||
end
|
||||
while true do
|
||||
local line = fh:read()
|
||||
if line == nil then
|
||||
break
|
||||
end
|
||||
local paramlist = string.split(line, " ")
|
||||
local w = {
|
||||
player = paramlist[1],
|
||||
homepos = {
|
||||
x = tonumber(paramlist[2]),
|
||||
y = tonumber(paramlist[3]),
|
||||
z = tonumber(paramlist[4]),
|
||||
}
|
||||
}
|
||||
table.insert(magic.playerHomes, w)
|
||||
end
|
||||
fh:close()
|
||||
end
|
||||
|
||||
local saveHomes = function()
|
||||
local fh,err = io.open(worldpath .. "/magic_homes.txt", "w")
|
||||
if err then
|
||||
print("No existing warps to read.")
|
||||
return
|
||||
end
|
||||
for i = 1,table.getn(magic.playerHomes) do
|
||||
local s = magic.playerHomes[i].player .. " " .. magic.playerHomes[i].homepos.x .. " " .. magic.playerHomes[i].homepos.y .. " " .. magic.playerHomes[i].homepos.z .. "\n"
|
||||
fh:write(s)
|
||||
end
|
||||
fh:close()
|
||||
end
|
||||
|
||||
local function checkHome(player)
|
||||
for i = 1,table.getn(magic.playerHomes) do
|
||||
if magic.playerHomes[i].player == player then
|
||||
return i
|
||||
end
|
||||
end
|
||||
|
||||
return -1
|
||||
end
|
||||
|
||||
minetest.register_craftitem("magic:home_stone",{
|
||||
description = "Home stone",
|
||||
inventory_image = "home_stone.png",
|
||||
stack_max = 1,
|
||||
|
||||
on_use = function(itemstack, placer, pointed_thing)
|
||||
magic.warp(placer)
|
||||
end,
|
||||
})
|
||||
|
||||
magic.register_recipe("home_stone",
|
||||
{
|
||||
{
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
{"","","","","","","","","","","","",""},
|
||||
},
|
||||
{
|
||||
{"","","","","","","default:cobble","","","","","",""},
|
||||
{"","","","default:cobble","air","air","air","air","air","default:cobble","","",""},
|
||||
{"","","air","air","air","air","air","air","air","air","air","",""},
|
||||
{"","default:cobble","air","air","air","air","air","air","air","air","air","default:cobble",""},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"air","air","air","air","air","air","stairs:slab_cobble","air","air","air","air","air","air"},
|
||||
{"default:cobble","air","air","air","air","stairs:slab_cobble","default:obsidian","stairs:slab_cobble","air","air","air","air","default:cobble"},
|
||||
{"air","air","air","air","air","air","stairs:slab_cobble","air","air","air","air","air","air"},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"","default:cobble","air","air","air","air","air","air","air","air","air","default:cobble",""},
|
||||
{"","","air","air","air","air","air","air","air","air","air","",""},
|
||||
{"","","","default:cobble","air","air","air","air","air","default:cobble","","",""},
|
||||
{"","","","","","","default:cobble","","","","","",""},
|
||||
},
|
||||
{
|
||||
{"","","","","","","default:cobble","","","","","",""},
|
||||
{"","","","air","air","air","air","air","air","air","","",""},
|
||||
{"","","air","air","air","air","air","air","air","air","air","",""},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"air","air","air","air","air","air","air","air","air","air","air","air","air"},
|
||||
{"default:cobble","air","air","air","air","air","air","air","air","air","air","air","default:cobble"},
|
||||
{"air","air","air","air","air","air","air","air","air","air","air","air","air"},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"","air","air","air","air","air","air","air","air","air","air","air",""},
|
||||
{"","","air","air","air","air","air","air","air","air","air","",""},
|
||||
{"","","","air","air","air","air","air","air","air","","",""},
|
||||
{"","","","","","","default:cobble","","","","","",""},
|
||||
},
|
||||
},
|
||||
|
||||
function(node)
|
||||
minetest.set_node(node.under, {name="magic:magicalobsidian"})
|
||||
minetest.env:add_item({x = node.under.x, y = node.under.y + 1, z = node.under.z}, "magic:home_stone")
|
||||
end
|
||||
)
|
||||
magic.register_recipe("home_warp",
|
||||
{
|
||||
{
|
||||
{"","default:obsidian","default:obsidian","default:obsidian",""},
|
||||
{"default:obsidian","","","","default:obsidian"},
|
||||
{"","","default:obsidian","","default:obsidian"},
|
||||
{"","default:obsidian","","","default:obsidian"},
|
||||
{"","","default:obsidian","default:obsidian",""},
|
||||
},
|
||||
},
|
||||
|
||||
function(node, player)
|
||||
local posx = node.under.x
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z
|
||||
|
||||
local i = -2
|
||||
local j = -2
|
||||
|
||||
|
||||
local arrID = checkHome(player:get_player_name())
|
||||
|
||||
if arrID == -1 then
|
||||
arrID = #magic.playerHomes + 1
|
||||
end
|
||||
|
||||
magic.playerHomes[arrID] = {}
|
||||
magic.playerHomes[arrID].player = player:get_player_name()
|
||||
magic.playerHomes[arrID].homepos = {x = node.under.x, y = node.under.y + 1, z = node.under.z}
|
||||
|
||||
saveHomes()
|
||||
|
||||
while i <= 2 do
|
||||
while j <= 2 do
|
||||
if "default:obsidian" == minetest.get_node({x = posx + i, y = posy, z = posz + j}).name then
|
||||
minetest.set_node({x = posx + i, y = posy, z = posz + j}, {name="magic:magicalobsidian"})
|
||||
|
||||
local meta = minetest.get_meta({x = posx + i, y = posy, z = posz + j})
|
||||
meta:set_string("referido",player:get_player_name())
|
||||
end
|
||||
j = j + 1
|
||||
end
|
||||
j = -2
|
||||
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
)
|
||||
minetest.register_node("magic:magicalobsidian", {
|
||||
description = "Magical Obsidian",
|
||||
tiles = {
|
||||
{
|
||||
name = "magic_magicalobsidian_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 10.0,
|
||||
},
|
||||
},
|
||||
},
|
||||
special_tiles = {
|
||||
-- New-style water source material (mostly unused)
|
||||
{
|
||||
name = "magic_magicalobsidian_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 10.0,
|
||||
},
|
||||
--backface_culling = false,
|
||||
},
|
||||
},
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata)
|
||||
local meta = minetest.env:get_meta(pos)
|
||||
meta:from_table(oldmetadata)
|
||||
|
||||
local s = meta:get_string("referido")
|
||||
|
||||
local home = checkHome(s)
|
||||
if home ~= -1 then
|
||||
table.remove(magic.playerHomes,home)
|
||||
saveHomes()
|
||||
return
|
||||
end
|
||||
end,
|
||||
|
||||
drop = "default:obsidian",
|
||||
light_source = 5,
|
||||
paramtype = "light",
|
||||
groups = {cracky = 2, stone = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
magic.warp = function(player)
|
||||
local playerName = player:get_player_name()
|
||||
local home = checkHome(playerName)
|
||||
if home == -1 then
|
||||
minetest.chat_send_player(playerName, "[Mod Magic] Unknown home")
|
||||
return
|
||||
end
|
||||
|
||||
player:setpos(magic.playerHomes[home].homepos)
|
||||
player:set_look_yaw(0)
|
||||
end
|
||||
|
||||
loadHomes()
|
|
@ -6,6 +6,7 @@ magic.path = minetest.get_modpath("magic")
|
|||
-- Load files
|
||||
dofile(magic.path.."/api.lua")
|
||||
dofile(magic.path.."/wand.lua")
|
||||
dofile(magic.path.."/home_stone.lua")
|
||||
dofile(magic.path.."/magical_water.lua")
|
||||
dofile(magic.path.."/magical_cobble.lua")
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ function magic.do_spell(itemstack, placer, pointed_thing)
|
|||
|
||||
if magic.check_recipe(rec, pt) then
|
||||
--minetest.chat_send_all(pointed_thing.under.x .. ", " .. pointed_thing.under.y .. ", " .. pointed_thing.under.z)
|
||||
magic.recipes[rec][2](pt)
|
||||
magic.recipes[rec][2](pt, placer)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -72,7 +72,6 @@ magic.register_recipe("big_tree",
|
|||
end
|
||||
)
|
||||
|
||||
|
||||
magic.register_recipe("compass",
|
||||
{
|
||||
{
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 430 B |
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
|
@ -6,6 +6,7 @@
|
|||
minetest.register_craftitem("magic:wand",{
|
||||
description = "Magical wand",
|
||||
inventory_image = "magic_wand.png",
|
||||
stack_max = 1,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
magic.do_spell(itemstack, placer, pointed_thing)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 117 KiB |
|
@ -0,0 +1,4 @@
|
|||
default
|
||||
|
||||
beds?
|
||||
sethome?
|
|
@ -0,0 +1,157 @@
|
|||
local ores={"default:stone_with_coal","default:stone_with_iron","default:stone_with_copper","default:stone_with_gold","default:stone_with_mese","default:stone_with_diamond","default:mese"}
|
||||
multidimensions.dimensions[1]={}
|
||||
multidimensions.dimensions[2]={
|
||||
"default:stone","default:dirt","default:dirt_with_grass",
|
||||
name="Alternative earth",color="007003",ores=ores,
|
||||
craft="default:stonebrick",
|
||||
nature={
|
||||
flower1={size=3,scarcity=20,num=2,node="flowers:mushroom_brown"},
|
||||
flower2={size=3,scarcity=20,num=2,node="flowers:mushroom_red"},
|
||||
flower3={size=3,scarcity=20,num=2,node="flowers:rose"},
|
||||
flower4={size=3,scarcity=20,num=2,node="flowers:tulip"},
|
||||
flower5={size=3,scarcity=20,num=2,node="flowers:dandelion_yellow"},
|
||||
flower6={size=3,scarcity=20,num=2,node="flowers:geranium"},
|
||||
flower7={size=3,scarcity=20,num=2,node="flowers:viola"},
|
||||
flower8={size=3,scarcity=20,num=2,node="flowers:dandelion_white"},
|
||||
flower9={size=3,scarcity=20,num=2,node="default:junglegrass"},
|
||||
grass={size=3,scarcity=4,num=4,node="default:grass_3"},
|
||||
papyrus={size=1,scarcity=20,num=1,node="default:papyrus"},
|
||||
tree={size=1,scarcity=5,num=1,node="multidimensions:tree"},
|
||||
aspen_tree={size=1,scarcity=10,num=1,node="multidimensions:aspen_tree"},
|
||||
pine_tree={size=1,scarcity=15,num=1,node="multidimensions:pine_tree"},
|
||||
},
|
||||
blob={
|
||||
water={node="default:water_source",wherein="group:soil",miny=995,maxy=1003,clust_clust_size=5,clust_scarcity=32},
|
||||
cave1={node="air",wherein="default:stone",miny=10,maxy=1005,clust_clust_size=5,clust_scarcity=32},
|
||||
cave2={node="air",wherein="default:stone",miny=10,maxy=905,clust_clust_size=10,clust_scarcity=32},
|
||||
cave3={node="air",wherein="default:stone",miny=10,maxy=905,clust_clust_size=20,clust_scarcity=64},
|
||||
cliff={node="default:stone",wherein="air",miny=990,maxy=1005,clust_clust_size=10,clust_scarcity=32},
|
||||
cliff2={node="default:stone",wherein="air",miny=990,maxy=1020,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff3={node="default:stone",wherein="air",miny=970,maxy=1035,clust_clust_size=30,clust_scarcity=60},
|
||||
clay={node="default:clay",wherein="default:stone",miny=200,maxy=980,clust_clust_size=5,clust_scarcity=32},
|
||||
sand={node="default:sand",wherein="group:soil",miny=990,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
gravel={node="default:gravel",wherein="group:soil",miny=1000,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
lava={node="default:lava_source",wherein="default:stone",miny=10,maxy=950,clust_clust_size=5,clust_scarcity=64},
|
||||
lava2={node="default:lava_source",wherein="default:stone",miny=10,maxy=900,clust_clust_size=20,clust_scarcity=128},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[3]={}
|
||||
multidimensions.dimensions[4]={
|
||||
"default:stone","default:dirt","default:dirt_with_dry_grass",
|
||||
name="Savana",color="ffb847",ores=ores,
|
||||
craft="default:acacia_wood",
|
||||
nature={
|
||||
flower1={size=3,scarcity=20,num=2,node="flowers:mushroom_brown"},
|
||||
flower2={size=3,scarcity=20,num=2,node="flowers:mushroom_red"},
|
||||
flower3={size=3,scarcity=20,num=2,node="flowers:rose"},
|
||||
flower4={size=3,scarcity=20,num=2,node="flowers:tulip"},
|
||||
flower5={size=3,scarcity=20,num=2,node="flowers:dandelion_yellow"},
|
||||
flower6={size=3,scarcity=20,num=2,node="flowers:geranium"},
|
||||
flower7={size=3,scarcity=20,num=2,node="flowers:viola"},
|
||||
flower8={size=3,scarcity=20,num=2,node="flowers:dandelion_white"},
|
||||
flower9={size=3,scarcity=20,num=2,node="default:junglegrass"},
|
||||
grass={size=3,scarcity=4,num=4,node="default:grass_5"},
|
||||
grass2={size=4,scarcity=8,num=3,node="default:dry_shrub"},
|
||||
grass3={size=3,scarcity=7,num=2,node="default:dry_grass_4"},
|
||||
papyrus={size=1,scarcity=20,num=1,node="default:papyrus"},
|
||||
tree={size=1,scarcity=20,num=1,node="multidimensions:acacia_tree"},
|
||||
tree2={size=1,scarcity=25,num=1,node="multidimensions:jungle_tree"},
|
||||
},
|
||||
blob={
|
||||
water={node="default:river_water_source",wherein="group:soil",miny=995,maxy=1003,clust_clust_size=5,clust_scarcity=64},
|
||||
cave1={node="air",wherein="default:stone",miny=10,maxy=1005,clust_clust_size=5,clust_scarcity=32},
|
||||
cave2={node="air",wherein="default:stone",miny=10,maxy=905,clust_clust_size=10,clust_scarcity=32},
|
||||
cave3={node="air",wherein="default:stone",miny=10,maxy=905,clust_clust_size=20,clust_scarcity=64},
|
||||
cliff={node="default:stone",wherein="air",miny=990,maxy=1005,clust_clust_size=10,clust_scarcity=32},
|
||||
cliff2={node="default:stone",wherein="air",miny=990,maxy=1010,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff3={node="default:stone",wherein="air",miny=970,maxy=1035,clust_clust_size=30,clust_scarcity=64},
|
||||
clay={node="default:clay",wherein="default:stone",miny=200,maxy=980,clust_clust_size=5,clust_scarcity=32},
|
||||
sand={node="default:desert_sand",wherein="group:soil",miny=990,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
gravel={node="default:gravel",wherein="group:soil",miny=1000,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
lava={node="default:lava_source",wherein="default:stone",miny=10,maxy=950,clust_clust_size=5,clust_scarcity=64},
|
||||
lava2={node="default:lava_source",wherein="default:stone",miny=10,maxy=900,clust_clust_size=20,clust_scarcity=128},
|
||||
grass2={node="default:dirt_with_grass",wherein="group:soil",miny=990,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[5]={
|
||||
"default:ice","default:snowblock","default:snowblock",
|
||||
name="Cold",color="1effe8",ores={"default:stone","default:snowblock"},
|
||||
craft="default:ice",
|
||||
nature={
|
||||
snow={size=1,scarcity=2,num=2,node="default:snow"},
|
||||
snowblock={size=3,scarcity=10,num=5,node="default:snowblock"},
|
||||
pine_tree={size=1,scarcity=20,num=1,node="multidimensions:pine_treesnow"},
|
||||
},
|
||||
blob={
|
||||
water={node="default:ice",wherein="default:ice",miny=995,maxy=1003,clust_clust_size=5,clust_scarcity=32},
|
||||
cave1={node="air",wherein="default:ice",miny=10,maxy=1005,clust_clust_size=5,clust_scarcity=32},
|
||||
cave2={node="air",wherein="default:ice",miny=10,maxy=905,clust_clust_size=10,clust_scarcity=32},
|
||||
cave3={node="air",wherein="default:ice",miny=10,maxy=905,clust_clust_size=20,clust_scarcity=64},
|
||||
cliff={node="default:ice",wherein="air",miny=990,maxy=1005,clust_clust_size=10,clust_scarcity=32},
|
||||
cliff2={node="default:ice",wherein="air",miny=990,maxy=1010,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff3={node="default:snowblock",wherein="air",miny=970,maxy=1035,clust_clust_size=30,clust_scarcity=32},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[6]={
|
||||
"default:stone","default:desert_sand","default:desert_sand",
|
||||
name="Desert",color="ffcf91",ores=ores,
|
||||
craft="default:desert_stone",
|
||||
nature={
|
||||
grass2={size=2,scarcity=20,num=3,node="default:dry_shrub"},
|
||||
tree={size=1,scarcity=25,num=1,node="multidimensions:large_cactus"},
|
||||
},
|
||||
blob={
|
||||
cave1={node="air",wherein="default:desert_stone",miny=10,maxy=1005,clust_clust_size=5,clust_scarcity=32},
|
||||
cave2={node="air",wherein="default:desert_stone",miny=10,maxy=905,clust_clust_size=10,clust_scarcity=32},
|
||||
cave3={node="air",wherein="default:desert_stone",miny=10,maxy=905,clust_clust_size=20,clust_scarcity=64},
|
||||
cliff={node="default:desert_stone",wherein="air",miny=990,maxy=1005,clust_clust_size=10,clust_scarcity=32},
|
||||
cliff2={node="default:desert_stone",wherein="air",miny=990,maxy=1010,clust_clust_size=20,clust_scarcity=32},
|
||||
clay={node="default:clay",wherein="default:desert_stone",miny=200,maxy=980,clust_clust_size=5,clust_scarcity=32},
|
||||
cliff3={node="default:desert_sand",wherein="air",miny=900,maxy=1020,clust_clust_size=50,clust_scarcity=32},
|
||||
gravel={node="default:gravel",wherein="default:desert_stone",miny=100,maxy=1000,clust_clust_size=5,clust_scarcity=32},
|
||||
lava={node="default:lava_source",wherein="default:desert_stone",miny=10,maxy=950,clust_clust_size=5,clust_scarcity=64},
|
||||
lava2={node="default:lava_source",wherein="default:desert_stone",miny=10,maxy=900,clust_clust_size=20,clust_scarcity=128},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[7]={
|
||||
"default:lava_source","default:lava_source","default:lava_source",
|
||||
name="Hot",color="ff4300",
|
||||
craft="bucket:bucket_lava",
|
||||
nature={
|
||||
fire={size=1,scarcity=2,num=3,node="fire:permanent_flame"},
|
||||
},
|
||||
blob={
|
||||
cliff={node="fire:permanent_flame",wherein="air",miny=995,maxy=1005,clust_clust_size=5,clust_scarcity=16},
|
||||
--cliff2={node="fire:permanent_flame",wherein="air",miny=900,maxy=1020,clust_clust_size=50,clust_scarcity=32},
|
||||
cliff3={node="default:stone",wherein="air",miny=990,maxy=1005,clust_clust_size=10,clust_scarcity=32},
|
||||
cliff4={node="default:stone",wherein="air",miny=990,maxy=1020,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff5={node="default:stone",wherein="air",miny=970,maxy=1035,clust_clust_size=30,clust_scarcity=60},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[8]={
|
||||
"default:water_source","default:water_source","default:water_source",
|
||||
name="Water",color="1e38ff",ores=ores,
|
||||
craft="bucket:bucket_water",
|
||||
blob={
|
||||
cliff={node="default:stone",wherein="default:water_source",miny=200,maxy=1000,clust_clust_size=10,clust_scarcity=16},
|
||||
cliff2={node="default:stone",wherein="default:water_source",miny=200,maxy=1000,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff2={node="default:stone",wherein="default:water_source",miny=200,maxy=1000,clust_clust_size=50,clust_scarcity=50},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[9]={
|
||||
"default:sandstone","default:sandstone","default:sandstone",
|
||||
name="Sandstone",color="fdffbf",
|
||||
craft="default:sandstone",
|
||||
blob={
|
||||
cliff={node="default:sandstone",wherein="air",miny=995,maxy=1010,clust_clust_size=10,clust_scarcity=16},
|
||||
cliff2={node="default:sandstone",wherein="air",miny=980,maxy=1020,clust_clust_size=20,clust_scarcity=32},
|
||||
cliff2={node="default:sandstone",wherein="air",miny=950,maxy=1050,clust_clust_size=50,clust_scarcity=50},
|
||||
}
|
||||
}
|
||||
multidimensions.dimensions[3]={
|
||||
"default:stone","default:dirt","default:dirt_with_grass",ores=ores,color="008003",
|
||||
name="Alternative earth 2",
|
||||
craft="default:sandstonebrick",
|
||||
nature=multidimensions.dimensions[2].nature,
|
||||
blob=multidimensions.dimensions[2].blob,
|
||||
}
|
|
@ -0,0 +1,291 @@
|
|||
multidimensions={
|
||||
|
||||
start_y=4000
|
||||
,max_distance=50 --(50 is 800)
|
||||
,max_distance_chatt=800
|
||||
,limited_chat=true
|
||||
,limeted_nametag=true
|
||||
,teleports=true
|
||||
,craftable=true
|
||||
,remake_home=true
|
||||
,remake_bed=true
|
||||
|
||||
,dimensions={},user={},
|
||||
levels={{4,994},{994,998},{998,1000}}}
|
||||
--stone, dirt, grass
|
||||
|
||||
dofile(minetest.get_modpath("multidimensions") .. "/dimensions.lua")
|
||||
dofile(minetest.get_modpath("multidimensions") .. "/tools.lua")
|
||||
|
||||
|
||||
local level=multidimensions.start_y
|
||||
local leveln=1
|
||||
multidimensions.distance=function(p,o)
|
||||
return math.sqrt((p.x-o.x)*(p.x-o.x) + (p.y-o.y)*(p.y-o.y)+(p.z-o.z)*(p.z-o.z))
|
||||
end
|
||||
|
||||
for i, dim in pairs(multidimensions.dimensions) do
|
||||
if dim.name then
|
||||
leveln=leveln+1
|
||||
multidimensions.dimensions[leveln].y=multidimensions.levels[3][2]+level+2
|
||||
for ii = 1, 3, 1 do
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore= dim[ii],
|
||||
wherein= "air",
|
||||
clust_scarcity = 1,
|
||||
clust_num_ores = 10,
|
||||
clust_size = 2,
|
||||
y_min= level+multidimensions.levels[ii][1],
|
||||
y_max= level+multidimensions.levels[ii][2],
|
||||
})
|
||||
end
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore="multidimensions:bedrock",
|
||||
wherein= "air",
|
||||
clust_scarcity = 1,
|
||||
clust_num_ores = 10,
|
||||
clust_size = 2,
|
||||
y_min= level,
|
||||
y_max= level+4,
|
||||
})
|
||||
if dim.ores then
|
||||
local ore_y=0
|
||||
local ore_scarcity=8
|
||||
for i, ore in pairs(dim.ores) do
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore= ore,
|
||||
wherein=dim[1],
|
||||
clust_scarcity = ore_scarcity*ore_scarcity*ore_scarcity,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
y_min= level+multidimensions.levels[1][1],
|
||||
y_max= level+multidimensions.levels[1][2]+ore_y,
|
||||
})
|
||||
ore_scarcity=ore_scarcity+2
|
||||
ore_y=ore_y-50
|
||||
end
|
||||
end
|
||||
if dim.nature then
|
||||
for i, nat in pairs(dim.nature) do
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = nat.node,
|
||||
wherein ="air",
|
||||
clust_scarcity = nat.scarcity*nat.scarcity*nat.scarcity,
|
||||
clust_num_ores = nat.num,
|
||||
clust_size = nat.size,
|
||||
y_min = level+multidimensions.levels[3][2]-3,
|
||||
y_max = level+multidimensions.levels[3][2]+1,
|
||||
})
|
||||
end
|
||||
end
|
||||
if dim.blob then
|
||||
for i, blob in pairs(dim.blob) do
|
||||
minetest.register_ore({
|
||||
ore_type= "blob",
|
||||
ore = blob.node,
|
||||
wherein = {blob.wherein},
|
||||
clust_scarcity= blob.clust_scarcity * blob.clust_scarcity * blob.clust_scarcity,
|
||||
clust_size= blob.clust_clust_size,
|
||||
y_min = level+blob.miny,
|
||||
y_max = level+blob.maxy,
|
||||
noise_threshold = 0.0,
|
||||
noise_params= {
|
||||
offset = 0.5,
|
||||
scale = 0.2,
|
||||
spread = {x = 5, y = 5, z = 5},
|
||||
octaves = 1,
|
||||
persist = 0.0
|
||||
},
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
if multidimensions.teleports and dim.color and dim.name then
|
||||
local y=multidimensions.dimensions[leveln].y
|
||||
minetest.register_node("multidimensions:teleporter" .. leveln, {
|
||||
description = "Teleport to dimension " .. dim.name,
|
||||
tiles = {"default_steel_block.png","default_steel_block.png","default_mese_block.png^[colorize:#" .. dim.color .."cc"},
|
||||
groups = {choppy=2,oddly_breakable_by_hand=1},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
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","Teleport to dimension " .. dim.name)
|
||||
|
||||
end,
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local owner=minetest.get_meta(pos):get_string("owner")
|
||||
local pos2={x=pos.x,y=y,z=pos.z}
|
||||
if minetest.is_protected(pos2, owner)==false then
|
||||
multidimensions.move(player,pos2)
|
||||
end
|
||||
end,
|
||||
mesecons = {effector = {
|
||||
action_on = function (pos, node)
|
||||
local owner=minetest.get_meta(pos):get_string("owner")
|
||||
local pos2={x=pos.x,y=y,z=pos.z}
|
||||
if minetest.is_protected(pos2, owner)==false then
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do
|
||||
multidimensions.move(ob,pos2)
|
||||
end
|
||||
return false
|
||||
end}},
|
||||
})
|
||||
|
||||
if multidimensions.craftable and dim.craft then
|
||||
minetest.register_craft({
|
||||
output = "multidimensions:teleporter" .. leveln,
|
||||
recipe = {
|
||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||
{dim.craft, "default:mese", dim.craft,},
|
||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
level=level+2000
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("multidimensions:bedrock", {
|
||||
description = "Bedrock",
|
||||
tiles = {"default_stone.png","default_cloud.png","default_stone.png","default_stone.png","default_stone.png","default_stone.png",},
|
||||
groups = {unbreakable=1,not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
drop = "",
|
||||
diggable = false,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("multidimensions:tree", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:pine_tree", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:pine_treesnow", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:jungle_tree", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:aspen_tree", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:acacia_tree", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
minetest.register_node("multidimensions:large_cactus", {
|
||||
drawtype="airlike",
|
||||
groups = {multidimensions_tree=1,not_in_creative_inventory=1},
|
||||
})
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"group:multidimensions_tree"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.set_node(pos, {name = "air"})
|
||||
local tree=""
|
||||
if node.name=="multidimensions:tree" then tree=minetest.get_modpath("default") .. "/schematics/apple_tree.mts" end
|
||||
if node.name=="multidimensions:pine_tree" then tree=minetest.get_modpath("default") .. "/schematics/pine_tree.mts" end
|
||||
if node.name=="multidimensions:pine_treesnow" then tree=minetest.get_modpath("default") .. "/schematics/snowy_pine_tree_from_sapling.mts" end
|
||||
if node.name=="multidimensions:jungle_tree" then tree=minetest.get_modpath("default") .. "/schematics/jungle_tree.mts" end
|
||||
if node.name=="multidimensions:aspen_tree" then tree=minetest.get_modpath("default") .. "/schematics/aspen_tree.mts" end
|
||||
if node.name=="multidimensions:acacia_tree" then tree=minetest.get_modpath("default") .. "/schematics/acacia_tree.mts" end
|
||||
if node.name=="multidimensions:large_cactus" then tree=minetest.get_modpath("default") .. "/schematics/large_cactus.mts" end
|
||||
minetest.place_schematic({x=pos.x,y=pos.y,z=pos.z}, tree, "random", {}, true)
|
||||
end,
|
||||
})
|
||||
|
||||
if multidimensions.limited_chat then
|
||||
minetest.register_on_chat_message(function(name, message)
|
||||
local msger = minetest.get_player_by_name(name)
|
||||
local pos1 = msger:getpos()
|
||||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
local pos2 = player:getpos()
|
||||
if player:get_player_name()~=name and multidimensions.distance(pos1,pos2)<multidimensions.max_distance_chatt then
|
||||
minetest.chat_send_player(player:get_player_name(), "<"..name.."> "..message)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
minetest.register_node("multidimensions:teleporter0", {
|
||||
description = "Teleport to dimension earth",
|
||||
tiles = {"default_steel_block.png","default_steel_block.png","default_mese_block.png^[colorize:#1e6600cc"},
|
||||
groups = {choppy=2,oddly_breakable_by_hand=1},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
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","Teleport to dimension earth")
|
||||
end,
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local owner=minetest.get_meta(pos):get_string("owner")
|
||||
local pos2={x=pos.x,y=0,z=pos.z}
|
||||
if minetest.is_protected(pos2, owner)==false then
|
||||
multidimensions.move(player,pos2)
|
||||
end
|
||||
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}
|
||||
if minetest.is_protected(pos2, owner)==false then
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do
|
||||
multidimensions.move(ob,pos2)
|
||||
end
|
||||
return false
|
||||
end}},
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "multidimensions:teleporter0",
|
||||
recipe = {
|
||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||
{"default:dirt", "default:mese","default:dirt",},
|
||||
{"default:obsidianbrick", "default:steel_ingot", "default:obsidianbrick"},
|
||||
}
|
||||
})
|
||||
if multidimensions.limeted_nametag==true and minetest.setting_getbool("unlimited_player_transfer_distance")~=false then
|
||||
minetest.setting_setbool("unlimited_player_transfer_distance",false)
|
||||
minetest.setting_set("player_transfer_distance",multidimensions.max_distance)
|
||||
minetest.setting_save()
|
||||
elseif multidimensions.limeted_nametag==false and minetest.setting_getbool("unlimited_player_transfer_distance")==false then
|
||||
minetest.setting_setbool("unlimited_player_transfer_distance",true)
|
||||
minetest.setting_set("player_transfer_distance",0)
|
||||
minetest.setting_save()
|
||||
end
|
||||
|
||||
local del_un=1 --remove unnecessary memory
|
||||
for i, dim in pairs(multidimensions.dimensions) do
|
||||
multidimensions.dimensions[del_un].nature=nil
|
||||
multidimensions.dimensions[del_un].blob=nil
|
||||
multidimensions.dimensions[del_un].color=nil
|
||||
multidimensions.dimensions[del_un].ores=nil
|
||||
multidimensions.dimensions[del_un].craft=nil
|
||||
multidimensions.dimensions[del_un][1]=nil
|
||||
multidimensions.dimensions[del_un][2]=nil
|
||||
multidimensions.dimensions[del_un][3]=nil
|
||||
del_un=del_un+1
|
||||
end
|
||||
ores=nil
|
|
@ -0,0 +1,31 @@
|
|||
License: code and media CC0
|
||||
Created by: UjEdwin
|
||||
Version: 1
|
||||
|
||||
Multi dimensions
|
||||
This mod adds a few dimensions to the game (you can add more)
|
||||
|
||||
You can find the "Dimensions teleport tool" in creative to go to them, or type "/giveme dim"
|
||||
(You need the "dimensions" privilege to use it)
|
||||
Teleport yourself to dimensions by point in air/blocks, or teleport other players/objects by pointing them.
|
||||
|
||||
There are also crafable "teleport blocks" (click to teleport, and works with mesecons)
|
||||
|
||||
All teleported players that not have the "dimensions" privilege will get there spawnpoin and home set in the new dimension (using "beds" and "sethome")
|
||||
They cant get back unless teleporting in somehow or have/making "teleport blocks"
|
||||
|
||||
Player cant see or hear players from "other diamnsions" or just if they are 800 blocks away
|
||||
|
||||
You can change settings in the init.lua
|
||||
|
||||
Advanced information:
|
||||
The dimensions starts at +4000 height and there are 2000 height between them
|
||||
all diamnsions are 31000x2000x31000 big (exept the earth that are 31000x35000x31000)
|
||||
the earth alternativ starts at y+4000... ground 5000, eath alternativ 2 y+6000, ground y+7000...
|
||||
|
||||
If you are teleporting using commands you can easily teleport between y+5000, y+7000, y+9000...
|
||||
|
||||
Used settings:
|
||||
unlimited_player_transfer_distance=false
|
||||
player_transfer_distance=50
|
||||
[Main manu[--> [Settings[ --> [Advanced Settings[ --> [Server / Singleplayer[ --> [Game]
|
|
@ -0,0 +1,141 @@
|
|||
minetest.register_privilege("dimensions", {
|
||||
description = "Can use dimensions teleport tool",
|
||||
give_to_singleplayer= false,
|
||||
})
|
||||
|
||||
minetest.register_alias("dim", "multidimensions:teleporttool")
|
||||
|
||||
multidimensions.setrespawn=function(object,pos)
|
||||
if not object:is_player() then return false end
|
||||
local name=object:get_player_name()
|
||||
if minetest.check_player_privs(name, {dimensions=true}) then return false end
|
||||
if multidimensions.remake_bed and minetest.get_modpath("beds")~=nil then
|
||||
beds.spawn[name]=pos
|
||||
beds.save_spawns()
|
||||
end
|
||||
if multidimensions.remake_home and minetest.get_modpath("sethome")~=nil then
|
||||
sethome.set(name, pos)
|
||||
end
|
||||
end
|
||||
|
||||
multidimensions.move=function(object,pos)
|
||||
local move=false
|
||||
object:setpos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
minetest.after(1, function(pos,object,move)
|
||||
for i=1,100,1 do
|
||||
local nname=minetest.get_node(pos).name
|
||||
if nname~="air" and nname~="ignore" then
|
||||
pos.y=pos.y+1
|
||||
move=true
|
||||
elseif move then
|
||||
object:setpos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
break
|
||||
end
|
||||
end
|
||||
end, pos,object,move)
|
||||
minetest.after(5, function(pos,object,move)
|
||||
for i=1,100,1 do
|
||||
local nname=minetest.get_node(pos).name
|
||||
if nname~="air" and nname~="ignore" then
|
||||
pos.y=pos.y+1
|
||||
move=true
|
||||
elseif move then
|
||||
object:setpos(pos)
|
||||
multidimensions.setrespawn(object,pos)
|
||||
break
|
||||
end
|
||||
end
|
||||
end, pos,object,move)
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
multidimensions.form=function(player,object)
|
||||
local name=player:get_player_name()
|
||||
local buttons=""
|
||||
local y=1
|
||||
local x=3
|
||||
local n=2
|
||||
local info=""
|
||||
multidimensions.user[name]={}
|
||||
multidimensions.user[name].pos=object:getpos()
|
||||
multidimensions.user[name].object=object
|
||||
if object:is_player() and object:get_player_name()==name then
|
||||
info="Teleport you"
|
||||
elseif object:is_player() and object:get_player_name()~=name then
|
||||
info="Teleport "..object:get_player_name()
|
||||
else
|
||||
info="Teleport object"
|
||||
end
|
||||
buttons="button_exit[0,1;3,1;b1;Earth]"
|
||||
for i, but in pairs(multidimensions.dimensions) do
|
||||
if but.name then
|
||||
buttons=buttons .."button_exit[" .. x.. "," .. y .. ";3,1;b" .. n .. ";" .. but.name .. "]"
|
||||
if x==3 then
|
||||
y=y+1
|
||||
x=0
|
||||
else
|
||||
x=3
|
||||
end
|
||||
n=n+1
|
||||
end
|
||||
end
|
||||
local gui=""
|
||||
gui=""
|
||||
.."size[6.5," .. (y+1) .."]"
|
||||
.."label[2,0;" .. info .."]"
|
||||
..buttons
|
||||
minetest.after(0.1, function(gui)
|
||||
return minetest.show_formspec(player:get_player_name(), "multidimensions.form",gui)
|
||||
end, gui)
|
||||
end
|
||||
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, form, pressed)
|
||||
if form=="multidimensions.form" then
|
||||
local name=player:get_player_name()
|
||||
local pos=multidimensions.user[name].pos
|
||||
local object=multidimensions.user[name].object
|
||||
local n=1
|
||||
local y=0
|
||||
multidimensions.user[name]=nil
|
||||
for i, but in pairs(multidimensions.dimensions) do
|
||||
local pos=object:getpos()
|
||||
local pos2={x=pos.x,y=multidimensions.dimensions[n].y,z=pos.z}
|
||||
if pressed["b"..n] and minetest.is_protected(pos2, name)==false then
|
||||
if n==1 then pos2.y=0 end
|
||||
multidimensions.move(object,pos2)
|
||||
return true
|
||||
end
|
||||
n=n+1
|
||||
end
|
||||
return false
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_tool("multidimensions:teleporttool", {
|
||||
description = "Dimensions teleport tool",
|
||||
inventory_image = "default_stick.png^[colorize:#e9ff00ff",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local pos=user:getpos()
|
||||
local name=user:get_player_name()
|
||||
|
||||
if minetest.check_player_privs(name, {dimensions=true})==false then
|
||||
itemstack:replace(nil)
|
||||
minetest.chat_send_player(name,"You need the dimensions privilege to use this tool")
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local object={}
|
||||
if pointed_thing.type=="object" then
|
||||
object=pointed_thing.ref
|
||||
else
|
||||
object=user
|
||||
end
|
||||
multidimensions.form(user,object)
|
||||
return itemstack
|
||||
end
|
||||
})
|
Loading…
Reference in New Issue