Altar de rituales (Tier 2)
- Reorganizada la estructura del mod para tener más sentido - Reordenada la api para que tenga más sentido - Añadido el altar de rituales y su receta - Añadido sistema de generación de tiers - El altar ya es capaz de reconocer si tiene algo encima y qué es lo que tiene encima, queda construir un sistema que cuente cuántos de cada tipo hay y chequee las recetas - Cambiado el "crafteo" de la verita: Ahora se hace usando un palo en el agua mágica - Añadido "crafteo" del altar: usando un slab de "Stone block" en el agua mágica. - Rediseñada la runa de "Compass" para que no necesite ningún schem. - Creada flor "Lightbloom" para tener un primer ritual con el que hacer las pruebas. -- Yawinmaster
parent
a48f009192
commit
2f0cc83001
|
@ -1,4 +1,3 @@
|
|||
|
||||
local reverse = true
|
||||
|
||||
local function destruct_bed(pos, n)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
|
||||
|
||||
local chest = minetest.get_content_id("default:chest")
|
||||
|
||||
local chest_formspec =
|
||||
|
|
|
@ -28,58 +28,6 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
end
|
||||
end)
|
||||
|
||||
--[[for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 2.3)) do
|
||||
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
|
||||
if object:get_luaentity().collect then
|
||||
if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
|
||||
local pos1 = pos
|
||||
pos1.y = pos1.y+0.2
|
||||
local pos2 = object:getpos()
|
||||
local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z}
|
||||
vec.x = vec.x*2
|
||||
vec.y = vec.y*2
|
||||
vec.z = vec.z*2
|
||||
object:setvelocity(vec)
|
||||
object:get_luaentity().physical_state = false
|
||||
object:get_luaentity().flying = false
|
||||
object:get_luaentity().object:set_properties({
|
||||
physical = false,
|
||||
collisionbox = {0,0,0, 0,0,0},
|
||||
})
|
||||
|
||||
minetest.after(1, function(args)
|
||||
local lua = object:get_luaentity()
|
||||
if object == nil or lua == nil or lua.itemstring == nil then
|
||||
return
|
||||
end
|
||||
if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
|
||||
inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
|
||||
if object:get_luaentity().itemstring ~= "" then
|
||||
minetest.sound_play("item_drop_pickup", {
|
||||
to_player = player:get_player_name(),
|
||||
gain = 0.4,
|
||||
})
|
||||
end
|
||||
object:get_luaentity().itemstring = ""
|
||||
object:remove()
|
||||
else
|
||||
object:setvelocity({x=0,y=0,z=0})
|
||||
object:get_luaentity().physical_state = true
|
||||
object:get_luaentity().object:set_properties({
|
||||
physical = true,
|
||||
collisionbox = {-0.17,-0.17,-0.17, 0.17,0.17,0.17},
|
||||
})
|
||||
end
|
||||
end, {player, object})
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)]]--
|
||||
|
||||
function minetest.handle_node_drops(pos, drops, digger)
|
||||
local inv
|
||||
|
|
|
@ -1,3 +1,34 @@
|
|||
function magic.do_spell(itemstack, placer, pointed_thing)
|
||||
local name
|
||||
|
||||
if pointed_thing.type == "object" then
|
||||
return
|
||||
elseif pointed_thing.type == "node" then
|
||||
name = minetest.get_node(pointed_thing.under).name
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local coincidences = magic.find_possible_recipes(pointed_thing)
|
||||
|
||||
if #coincidences > 0 then
|
||||
for n_rec, rec in ipairs(coincidences) do
|
||||
local pt = pointed_thing
|
||||
|
||||
if magic.check_recipe(rec, pt) then
|
||||
magic.recipes[rec][2](pt, placer)
|
||||
return
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- MULTIBLOCK RECIPES -------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
function magic.register_recipe(name, recipe, action)
|
||||
magic.recipes[name] = {recipe, action}
|
||||
end
|
||||
|
@ -5,10 +36,9 @@ end
|
|||
function magic.check_recipe(recipe_id, target)
|
||||
local recipe = magic.recipes[recipe_id][1]
|
||||
|
||||
--[[ Por alguna razón si las unifico en una lista me sobreescribe target ]]--
|
||||
local posx = target.under.x
|
||||
local posy = target.under.y
|
||||
local posz = target.under.z
|
||||
local posx = target.under.x
|
||||
local posy = target.under.y
|
||||
local posz = target.under.z
|
||||
|
||||
local reference = {x = posx - math.floor(#recipe[1][1] / 2),
|
||||
y = posy - math.floor(#recipe / 2),
|
||||
|
@ -89,3 +119,71 @@ function magic.find_possible_recipes(node)
|
|||
|
||||
return to_ret
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- ALTAR RITUALS ------------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
function magic.register_ritual(name, ritual, action)
|
||||
magic.rituals[name] = {ritual, action}
|
||||
end
|
||||
|
||||
function magic.check_ritual(things)
|
||||
local list = {}
|
||||
|
||||
--for i in ipairs(things) do
|
||||
-- if list[things[i]] then
|
||||
-- list[i] = list[i] + 1
|
||||
-- else
|
||||
-- table.insert(things, {i = 0})
|
||||
-- end
|
||||
--end
|
||||
--
|
||||
--for n, i in pairs(list) do
|
||||
-- minetest.chat_send_all(n .. ", " .. i)
|
||||
--end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- HOME WARP ----------------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
function magic.warp(player)
|
||||
local playerName = player:get_player_name()
|
||||
local home = magic.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
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- TIER REGISTERING UTILS ----------------------------------------------------
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
function magic.add_group_to_node(n, group)
|
||||
local def = minetest.registered_items[n]
|
||||
if not def then
|
||||
return false
|
||||
end
|
||||
|
||||
local dg = def.groups or {}
|
||||
for _group, value in pairs(group) do
|
||||
if value ~= 0 then
|
||||
dg[_group] = value
|
||||
else
|
||||
dg[_group] = nil
|
||||
end
|
||||
end
|
||||
|
||||
minetest.override_item(n, {groups = dg})
|
||||
return true
|
||||
end
|
||||
|
||||
function magic.add_group(group, node_list)
|
||||
for i in ipairs(node_list) do
|
||||
magic.add_group_to_node(node_list[i], group)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,17 @@
|
|||
function magic.altar_action(node, player)
|
||||
--Comprobamos de qué rito se trata
|
||||
local pos = node.under
|
||||
local things = {}
|
||||
|
||||
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do
|
||||
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
|
||||
table.insert(things,object:get_luaentity().itemstring)
|
||||
end
|
||||
end
|
||||
|
||||
if #things > 0 then
|
||||
magic.check_ritual(things)
|
||||
else
|
||||
minetest.chat_send_player(player:get_player_name(), "[Mod magic] The altar is empty")
|
||||
end
|
||||
end
|
|
@ -0,0 +1,52 @@
|
|||
-----------------------------------------------------------------
|
||||
-- HOME WARP LOGIC ----------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
function magic.loadHomes()
|
||||
local fh,err = io.open(magic.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]),
|
||||
},
|
||||
token = paramlist[5],
|
||||
}
|
||||
table.insert(magic.playerHomes, w)
|
||||
end
|
||||
fh:close()
|
||||
end
|
||||
|
||||
function magic.saveHomes()
|
||||
local fh,err = io.open(magic.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 .. " " .. magic.playerHomes[i].token .. "\n"
|
||||
fh:write(s)
|
||||
end
|
||||
fh:close()
|
||||
end
|
||||
|
||||
function magic.checkHome(player)
|
||||
for i = 1,table.getn(magic.playerHomes) do
|
||||
if magic.playerHomes[i].player == player then
|
||||
return i
|
||||
end
|
||||
end
|
||||
|
||||
return -1
|
||||
end
|
|
@ -1,232 +0,0 @@
|
|||
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]),
|
||||
},
|
||||
token = paramlist[5],
|
||||
}
|
||||
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 .. " " .. magic.playerHomes[i].token .. "\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())
|
||||
|
||||
local token = node.under.x .. node.under.y .. node.under.z
|
||||
|
||||
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}
|
||||
magic.playerHomes[arrID].token = token
|
||||
|
||||
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("magic_referido",player:get_player_name())
|
||||
meta:set_string("magic_token",token)
|
||||
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("magic_referido")
|
||||
|
||||
local home = checkHome(s)
|
||||
if home ~= -1 then
|
||||
if magic.playerHomes[home].token == meta:get_string("magic_token") then
|
||||
table.remove(magic.playerHomes,home)
|
||||
saveHomes()
|
||||
end
|
||||
end
|
||||
return
|
||||
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()
|
|
@ -1,19 +1,32 @@
|
|||
-- Definitions made by this mod that other mods can use too
|
||||
magic = {}
|
||||
magic.recipes = {}
|
||||
magic.rituals = {}
|
||||
magic.playerHomes = {}
|
||||
magic.path = minetest.get_modpath("magic")
|
||||
magic.worldpath = minetest.get_worldpath()
|
||||
|
||||
-- Load files
|
||||
dofile(magic.path.."/functions/homewarp.lua")
|
||||
dofile(magic.path.."/functions/altar.lua")
|
||||
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")
|
||||
|
||||
dofile(magic.path.."/spells.lua")
|
||||
--[[
|
||||
dofile(path.."/functions.lua")
|
||||
dofile(path.."/nodes.lua")
|
||||
dofile(path.."/craftitems.lua")
|
||||
dofile(path.."/crafting.lua")
|
||||
]]--
|
||||
dofile(magic.path.."/items/wand.lua")
|
||||
dofile(magic.path.."/items/home_stone.lua")
|
||||
|
||||
dofile(magic.path.."/nodes/magical_altar.lua")
|
||||
dofile(magic.path.."/nodes/magical_cobble.lua")
|
||||
dofile(magic.path.."/nodes/magical_lightbloom.lua")
|
||||
dofile(magic.path.."/nodes/magical_obsidian.lua")
|
||||
dofile(magic.path.."/nodes/magical_water.lua")
|
||||
|
||||
dofile(magic.path.."/recipes/t0_begining.lua")
|
||||
dofile(magic.path.."/recipes/t1_altar.lua")
|
||||
dofile(magic.path.."/recipes/t1_big_tree.lua")
|
||||
dofile(magic.path.."/recipes/t1_compass.lua")
|
||||
dofile(magic.path.."/recipes/t1_home_stone.lua")
|
||||
dofile(magic.path.."/recipes/t1_home_warp.lua")
|
||||
|
||||
dofile(magic.path.."/tiers.lua")
|
||||
|
||||
magic.loadHomes()
|
|
@ -0,0 +1,9 @@
|
|||
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,
|
||||
})
|
|
@ -1,8 +1,6 @@
|
|||
--[[
|
||||
Este fichero contiene todas las declaraciones y registros que
|
||||
implican a la varita
|
||||
]]--
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- WAND -------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
minetest.register_craftitem("magic:wand",{
|
||||
description = "Magical wand",
|
||||
inventory_image = "magic_wand.png",
|
||||
|
@ -13,10 +11,20 @@ minetest.register_craftitem("magic:wand",{
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.override_item("default:sapling",{
|
||||
minetest.override_item("default:stick",{
|
||||
liquids_pointable = true,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
})
|
||||
|
||||
minetest.override_item("default:leaves",{
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
if itemstack:get_name() == "default:sapling" then
|
||||
if magic.check_recipe("begining", pointed_thing) then
|
||||
magic.recipes["begining"][2](pointed_thing)
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
--[[on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type == "object" then
|
||||
pointed_thing.ref:punch(user, 1.0, { full_punch_interval=1.0 }, nil)
|
||||
return user:get_wielded_item()
|
||||
|
@ -39,6 +47,10 @@ minetest.override_item("default:sapling",{
|
|||
|
||||
--return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.env:add_item(user:get_pos(), "magic:wand")
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
]]--
|
|
@ -0,0 +1,28 @@
|
|||
minetest.register_node("magic:magical_altar", {
|
||||
description = "Magical altar",
|
||||
drawtype = "nodebox",
|
||||
tiles = {"altar_top.png","altar_top.png","altar_side.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.19, 0.5},
|
||||
},
|
||||
groups = {cracky = 2, stone = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local p = pos
|
||||
p.x = p.x + math.random(-4, 4)/10
|
||||
p.z = p.z + math.random(-4, 4)/10
|
||||
|
||||
minetest.env:add_item(p, itemstack:get_name())
|
||||
itemstack:take_item()
|
||||
player:set_wielded_item(itemstack)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.override_item("stairs:slab_stone_block",{
|
||||
liquids_pointable = true,
|
||||
})
|
|
@ -0,0 +1,21 @@
|
|||
minetest.register_node("magic:lightbloom", {
|
||||
description = "Lightbloom",
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
tiles = {"magic_lightbloom.png"},
|
||||
inventory_image = "magic_lightbloom.png",
|
||||
wield_image = "magic_lightbloom.png",
|
||||
light_source = 15,
|
||||
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
stack_max = 64,
|
||||
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-2 / 16, -0.5, -2 / 16, 2 / 16, 2 / 16, 2 / 16},
|
||||
}
|
||||
})
|
|
@ -0,0 +1,49 @@
|
|||
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("magic_referido")
|
||||
|
||||
local home = magic.checkHome(s)
|
||||
if home ~= -1 then
|
||||
if magic.playerHomes[home].token == meta:get_string("magic_token") then
|
||||
table.remove(magic.playerHomes,home)
|
||||
magic.saveHomes()
|
||||
end
|
||||
end
|
||||
return
|
||||
end,
|
||||
|
||||
drop = "default:obsidian",
|
||||
light_source = 5,
|
||||
paramtype = "light",
|
||||
groups = {cracky = 2, stone = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
|
@ -1,5 +1,23 @@
|
|||
-- Agua mágica, su cubo y la fuenta donde se puede encontrar
|
||||
-----------------------------------------------------------------
|
||||
-- MAGICAL WATER AND THE BUCKET ---------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
local function get_wand(pos, node, player, itemstack, pointed_thing)
|
||||
local p = pos
|
||||
p.y = p.y + 1
|
||||
|
||||
if itemstack:get_name() == "default:stick" then
|
||||
minetest.env:add_item(p, "magic:wand")
|
||||
|
||||
itemstack:take_item()
|
||||
player:set_wielded_item(itemstack)
|
||||
elseif itemstack:get_name() == "stairs:slab_stone_block" then
|
||||
minetest.env:add_item(p, "magic:magical_altar")
|
||||
|
||||
itemstack:take_item()
|
||||
player:set_wielded_item(itemstack)
|
||||
end
|
||||
end
|
||||
minetest.register_node("magic:magicalwater_source", {
|
||||
description = "Magical Water Source",
|
||||
drawtype = "liquid",
|
||||
|
@ -44,6 +62,10 @@ minetest.register_node("magic:magicalwater_source", {
|
|||
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
|
||||
groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1},
|
||||
sounds = default.node_sound_water_defaults(),
|
||||
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
get_wand(pos, node, player, itemstack, pointed_thing)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("magic:magicalwater_flowing", {
|
||||
|
@ -91,6 +113,10 @@ minetest.register_node("magic:magicalwater_flowing", {
|
|||
groups = {water = 3, liquid = 3, puts_out_fire = 1,
|
||||
not_in_creative_inventory = 1, cools_lava = 1},
|
||||
sounds = default.node_sound_water_defaults(),
|
||||
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
get_wand(pos, node, player, itemstack, pointed_thing)
|
||||
end,
|
||||
})
|
||||
|
||||
bucket.register_liquid(
|
||||
|
@ -101,24 +127,3 @@ bucket.register_liquid(
|
|||
"Magical Water Bucket",
|
||||
{water_bucket = 1}
|
||||
)
|
||||
|
||||
--[[minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.0003,
|
||||
scale = 0.0009,
|
||||
spread = {x = 200, y = 200, z = 200},
|
||||
seed = 230,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"rainforest", "deciduous_forest"},
|
||||
y_min = 1,
|
||||
y_max = 31000,
|
||||
schematic = minetest.get_modpath("magic") .. "/schems/magical_font.mts",
|
||||
flags = "place_center_x",
|
||||
rotation = "random",
|
||||
})
|
||||
]]--
|
|
@ -0,0 +1,25 @@
|
|||
-----------------------------------------------------------------
|
||||
-- BEGINING RECIPE (Creates the Magical Water Source) -----------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
magic.register_recipe("begining",
|
||||
{
|
||||
{
|
||||
{"air", "air", "air", "default:cobble", "air", "air", "air",},
|
||||
{"air", "air", "default:cobble", "default:cobble", "default:cobble", "air", "air",},
|
||||
{"air", "default:cobble", "air", "default:cobble", "air", "default:cobble", "air",},
|
||||
{"default:cobble", "default:cobble", "default:cobble", "default:leaves", "default:cobble", "default:cobble", "default:cobble",},
|
||||
{"air", "default:cobble", "air", "default:cobble", "air", "default:cobble", "air",},
|
||||
{"air", "air", "default:cobble", "default:cobble", "default:cobble", "air", "air",},
|
||||
{"air", "air", "air", "default:cobble", "air", "air", "air",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x - 3
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z - 3
|
||||
|
||||
local sch = magic.path .. "/schems/magical_font.mts"
|
||||
minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
|
@ -0,0 +1,67 @@
|
|||
magic.register_recipe("altar",
|
||||
{
|
||||
{
|
||||
{"", "", "", "", "", "tier1", "tier1", "tier1", "", "", "", "", ""},
|
||||
{"", "", "", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "", "", ""},
|
||||
{"", "", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "", ""},
|
||||
{"", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", ""},
|
||||
{"", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", ""},
|
||||
{"tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1"},
|
||||
{"tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1"},
|
||||
{"tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1"},
|
||||
{"", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", ""},
|
||||
{"", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", ""},
|
||||
{"", "", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "", ""},
|
||||
{"", "", "", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "tier1", "", "", ""},
|
||||
{"", "", "", "", "", "tier1", "tier1", "tier1", "", "", "", "", ""},
|
||||
},
|
||||
{
|
||||
{"", "", "", "", "", "default:stone_block", "air", "default:stone_block", "", "", "", "", ""},
|
||||
{"", "", "", "air", "default:stone_block", "air", "air", "air", "default:stone_block", "air", "", "", ""},
|
||||
{"", "", "default:stone_block", "air", "air", "air", "air", "air", "air", "air", "default:stone_block", "", ""},
|
||||
{"", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", ""},
|
||||
{"", "default:stone_block", "air", "air", "air", "air", "air", "air", "air", "air", "air", "default:stone_block", ""},
|
||||
{"default:stone_block", "air", "air", "air", "air", "stairs:slab_stone_block", "stairs:stair_stone_block", "stairs:slab_stone_block", "air", "air", "air", "air", "default:stone_block"},
|
||||
{"air", "air", "air", "air", "air", "stairs:stair_stone_block", "default:stone_block", "stairs:stair_stone_block", "air", "air", "air", "air", "air"},
|
||||
{"default:stone_block", "air", "air", "air", "air", "stairs:slab_stone_block", "stairs:stair_stone_block", "stairs:slab_stone_block", "air", "air", "air", "air", "default:stone_block"},
|
||||
{"", "default:stone_block", "air", "air", "air", "air", "air", "air", "air", "air", "air", "default:stone_block", ""},
|
||||
{"", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", ""},
|
||||
{"", "", "default:stone_block", "air", "air", "air", "air", "air", "air", "air", "default:stone_block", "", ""},
|
||||
{"", "", "", "air", "default:stone_block", "air", "air", "air", "default:stone_block", "air", "", "", ""},
|
||||
{"", "", "", "", "", "default:stone_block", "air", "default:stone_block", "", "", "", "", ""},
|
||||
},
|
||||
{
|
||||
{"", "", "", "", "", "t_altar", "air", "t_altar", "", "", "", "", ""},
|
||||
{"", "", "", "air", "t_altar", "air", "air", "air", "t_altar", "air", "", "", ""},
|
||||
{"", "", "t_altar", "air", "air", "air", "air", "air", "air", "air", "t_altar", "", ""},
|
||||
{"", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", ""},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar"},
|
||||
{"air", "air", "air", "air", "air", "air", "magic:magical_altar", "air", "air", "air", "air", "air", "air"},
|
||||
{"t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar"},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", ""},
|
||||
{"", "", "t_altar", "air", "air", "air", "air", "air", "air", "air", "t_altar", "", ""},
|
||||
{"", "", "", "air", "t_altar", "air", "air", "air", "t_altar", "air", "", "", ""},
|
||||
{"", "", "", "", "", "t_altar", "air", "t_altar", "", "", "", "", ""},
|
||||
},
|
||||
{
|
||||
{"", "", "", "", "", "t_altar", "t_altar", "t_altar", "", "", "", "", ""},
|
||||
{"", "", "", "t_altar", "t_altar", "air", "air", "air", "t_altar", "t_altar", "", "", ""},
|
||||
{"", "", "t_altar", "air", "air", "air", "air", "air", "air", "air", "t_altar", "", ""},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar"},
|
||||
{"t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar"},
|
||||
{"t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar"},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"", "t_altar", "air", "air", "air", "air", "air", "air", "air", "air", "air", "t_altar", ""},
|
||||
{"", "", "t_altar", "air", "air", "air", "air", "air", "air", "air", "t_altar", "", ""},
|
||||
{"", "", "", "t_altar", "t_altar", "air", "air", "air", "t_altar", "t_altar", "", "", ""},
|
||||
{"", "", "", "", "", "t_altar", "t_altar", "t_altar", "", "", "", "", ""},
|
||||
},
|
||||
},
|
||||
function(node, player)
|
||||
magic.altar_action(node, player)
|
||||
end
|
||||
)
|
|
@ -0,0 +1,29 @@
|
|||
-----------------------------------------------------------------
|
||||
-- BIG TREE RECIPE ----------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
-- ToDo: Spawn different trees for different randomly and
|
||||
-- different type of tree for different type of sappling
|
||||
|
||||
magic.register_recipe("big_tree",
|
||||
{
|
||||
{
|
||||
{"default:dirt_with_grass", "field", "default:dirt_with_grass",},
|
||||
{"field", "", "field",},
|
||||
{"field", "default:dirt_with_grass", "field",},
|
||||
},
|
||||
{
|
||||
{"air", "air", "air",},
|
||||
{"air", "default:sapling", "air",},
|
||||
{"air", "air", "air",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x - 5
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z - 7
|
||||
|
||||
local sch = magic.path .. "/schems/magical_big_tree.mts"
|
||||
minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
|
@ -0,0 +1,33 @@
|
|||
-----------------------------------------------------------------
|
||||
-- COMPASS RECIPE -----------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
magic.register_recipe("compass",
|
||||
{
|
||||
{
|
||||
{"tier1", "air", "tier1",},
|
||||
{"air", "tier1", "air",},
|
||||
{"tier1", "air", "tier1",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z
|
||||
|
||||
local nod = minetest.get_node({x = posx - 1, y = posy, z = posz + 1})
|
||||
minetest.set_node({x = posx - 1, y = posy, z = posz}, {name = nod.name})
|
||||
minetest.set_node({x = posx - 1, y = posy, z = posz + 1}, {name = "air"})
|
||||
|
||||
nod = minetest.get_node({x = posx + 1, y = posy, z = posz + 1})
|
||||
minetest.set_node({x = posx + 1, y = posy, z = posz}, {name = nod.name})
|
||||
minetest.set_node({x = posx + 1, y = posy, z = posz + 1}, {name = "air"})
|
||||
|
||||
nod = minetest.get_node(node.under)
|
||||
minetest.set_node({x = posx, y = posy, z = posz + 1}, {name = nod.name})
|
||||
minetest.set_node({x = posx, y = posy, z = posz}, {name = "air"})
|
||||
|
||||
--local sch = magic.path .. "/schems/compass.mts"
|
||||
--minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
|
@ -0,0 +1,58 @@
|
|||
-----------------------------------------------------------------
|
||||
-- HOME STONE RECIPE --------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
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
|
||||
)
|
|
@ -0,0 +1,56 @@
|
|||
-----------------------------------------------------------------
|
||||
-- HOME WARP RECIPE ---------------------------------------------
|
||||
-----------------------------------------------------------------
|
||||
|
||||
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 = magic.checkHome(player:get_player_name())
|
||||
|
||||
local token = node.under.x .. node.under.y .. node.under.z
|
||||
|
||||
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}
|
||||
magic.playerHomes[arrID].token = token
|
||||
|
||||
magic.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("magic_referido",player:get_player_name())
|
||||
meta:set_string("magic_token",token)
|
||||
end
|
||||
j = j + 1
|
||||
end
|
||||
j = -2
|
||||
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
)
|
|
@ -1,91 +0,0 @@
|
|||
-- Hechizos
|
||||
|
||||
function magic.do_spell(itemstack, placer, pointed_thing)
|
||||
local name
|
||||
|
||||
if pointed_thing.type == "object" then
|
||||
return
|
||||
elseif pointed_thing.type == "node" then
|
||||
name = minetest.get_node(pointed_thing.under).name
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local coincidences = magic.find_possible_recipes(pointed_thing)
|
||||
|
||||
if #coincidences > 0 then
|
||||
for n_rec, rec in ipairs(coincidences) do
|
||||
local pt = 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, placer)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
magic.register_recipe("begining",
|
||||
{
|
||||
{
|
||||
{"air", "air", "air", "default:cobble", "air", "air", "air",},
|
||||
{"air", "air", "default:cobble", "default:cobble", "default:cobble", "air", "air",},
|
||||
{"air", "default:cobble", "air", "default:cobble", "air", "default:cobble", "air",},
|
||||
{"default:cobble", "default:cobble", "default:cobble", "default:leaves", "default:cobble", "default:cobble", "default:cobble",},
|
||||
{"air", "default:cobble", "air", "default:cobble", "air", "default:cobble", "air",},
|
||||
{"air", "air", "default:cobble", "default:cobble", "default:cobble", "air", "air",},
|
||||
{"air", "air", "air", "default:cobble", "air", "air", "air",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x - 3
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z - 3
|
||||
|
||||
local sch = magic.path .. "/schems/magical_font.mts"
|
||||
minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
||||
|
||||
magic.register_recipe("big_tree",
|
||||
{
|
||||
{
|
||||
{"default:dirt_with_grass", "field", "default:dirt_with_grass",},
|
||||
{"field", "", "field",},
|
||||
{"field", "default:dirt_with_grass", "field",},
|
||||
},
|
||||
{
|
||||
{"air", "air", "air",},
|
||||
{"air", "default:sapling", "air",},
|
||||
{"air", "air", "air",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x - 5
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z - 7
|
||||
|
||||
local sch = magic.path .. "/schems/magical_big_tree.mts"
|
||||
minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
||||
|
||||
magic.register_recipe("compass",
|
||||
{
|
||||
{
|
||||
{"default:cobble", "air", "default:cobble",},
|
||||
{"air", "default:cobble", "air",},
|
||||
{"default:cobble", "air", "default:cobble",},
|
||||
},
|
||||
},
|
||||
function(node)
|
||||
local posx = node.under.x - 1
|
||||
local posy = node.under.y
|
||||
local posz = node.under.z - 1
|
||||
|
||||
local sch = magic.path .. "/schems/compass.mts"
|
||||
minetest.place_schematic({x = posx, y = posy, z = posz}, sch, 0, nil, true)
|
||||
end
|
||||
)
|
Binary file not shown.
After Width: | Height: | Size: 735 B |
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 301 B |
|
@ -0,0 +1,9 @@
|
|||
magic.add_group(
|
||||
{tier1 = 1},
|
||||
{"default:stone", "default:cobble", "default:stonebrick", "default:stone_block", "default:mossycobble", "default:desert_stone", "default:desert_cobble", "default:desert_stonebrick", "default:desert_stone_block", "default:sandstone", "default:sandstonebrick", "default:sandstone_block", "default:dirt", "default:dirt_with_grass", "default:dirt_with_grass_footsteps", "default:dirt_with_dry_grass", "default:sand", "default:desert_sand", "default:silver_sand", "default:gravel", "default:clay"}
|
||||
)
|
||||
|
||||
magic.add_group(
|
||||
{t_altar = 1},
|
||||
{"default:stone", "default:cobble", "default:mossycobble"}
|
||||
)
|
Loading…
Reference in New Issue