microexpansion/api.lua

136 lines
3.5 KiB
Lua
Raw Normal View History

2017-02-09 07:08:29 +01:00
-- microexpansion/api.lua
local BASENAME = "microexpansion"
-- [function] Register Recipe
function microexpansion.register_recipe(output, recipe)
2023-12-31 00:52:43 +01:00
-- Check if disabled
if recipe.disabled == true then
return
end
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
for _,r in ipairs(recipe) do
local def = {
2021-04-05 10:36:01 +02:00
type = type(r[2]) == "string" and r[2] or nil,
output = output.." "..(r[1] or 1),
recipe = r[3] or r[2]
}
minetest.register_craft(def)
2023-12-31 00:52:43 +01:00
end
2017-02-09 07:08:29 +01:00
end
2017-02-27 02:52:36 +01:00
-- [function] Register oredef
2020-02-27 15:33:45 +01:00
function microexpansion.register_oredef(ore, defs)
2023-12-31 00:52:43 +01:00
-- Check if disabled
if defs.disabled == true then
return
end
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
for _,d in ipairs(defs) do
d.ore = "microexpansion:"..ore
2020-02-27 15:33:45 +01:00
minetest.register_ore(d)
2023-12-31 00:52:43 +01:00
end
2017-02-27 02:52:36 +01:00
end
-- [local function] Choose description colour
local function desc_colour(status, desc)
2023-12-31 00:52:43 +01:00
if status == "unstable" then
return minetest.colorize("orange", desc)
elseif status == "no" then
return minetest.colorize("red", desc)
else
return minetest.colorize("white", desc)
end
end
-- [function] Register Item
2017-02-09 07:08:29 +01:00
function microexpansion.register_item(itemstring, def)
2023-12-31 00:52:43 +01:00
-- Check if disabled
if def.disabled == true then
return
end
-- Set usedfor
if def.usedfor then
def.description = def.description .. "\n"..minetest.colorize("grey", def.usedfor)
end
-- Update inventory image
if def.inventory_image then
def.inventory_image = BASENAME.."_"..def.inventory_image..".png"
else
def.inventory_image = BASENAME.."_"..itemstring..".png"
end
-- Colour description
def.description = desc_colour(def.status, def.description)
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
-- Register craftitem
minetest.register_craftitem(BASENAME..":"..itemstring, def)
2017-07-25 19:47:25 +02:00
2020-03-04 16:46:22 +01:00
-- if recipe, Register recipe
if def.recipe then
microexpansion.register_recipe(BASENAME..":"..itemstring, def.recipe)
end
end
-- [function] Register Node
function microexpansion.register_node(itemstring, def)
2020-03-04 16:46:22 +01:00
-- Check if disabled
if def.disabled == true then
return
end
-- Set usedfor
if def.usedfor then
def.description = def.description .. "\n"..minetest.colorize("grey", def.usedfor)
end
-- Update texture
if def.auto_complete ~= false then
for i,n in ipairs(def.tiles) do
if #def.tiles[i]:split("^") <= 1 then
local prefix = ""
if def.type == "ore" then
prefix = "ore_"
end
2017-07-25 19:47:25 +02:00
2020-03-04 16:46:22 +01:00
def.tiles[i] = BASENAME.."_"..prefix..n..".png"
end
end
end
2023-12-31 00:52:43 +01:00
-- Colour description
def.description = desc_colour(def.status, def.description)
-- Update connect_sides
if def.connect_sides == "nobottom" then
def.connect_sides = { "top", "front", "left", "back", "right" }
elseif def.connect_sides == "machine" then
def.connect_sides = { "top", "bottom", "left", "back", "right" }
end
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
-- Register node
minetest.register_node(BASENAME..":"..itemstring, def)
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
-- if recipe, Register recipe
if def.recipe then
microexpansion.register_recipe(BASENAME..":"..itemstring, def.recipe)
end
2017-07-25 19:47:25 +02:00
2023-12-31 00:52:43 +01:00
-- if oredef, Register oredef
if def.oredef then
microexpansion.register_oredef(BASENAME..":"..itemstring, def.oredef)
end
2017-02-09 07:08:29 +01:00
end
2023-12-31 00:52:43 +01:00
-- get a node, if necessary load it
function microexpansion.get_node(pos)
2023-12-31 00:52:43 +01:00
local node = minetest.get_node_or_nil(pos)
if node then return node end
local vm = VoxelManip()
vm:read_from_map(pos, pos)
return minetest.get_node(pos)
end
function microexpansion.update_node(pos,event)
local node = microexpansion.get_node(pos)
2023-12-31 00:52:43 +01:00
local def = minetest.registered_nodes[node.name]
local ev = event or {type = "n/a"}
if def.me_update then
2023-12-31 00:52:43 +01:00
def.me_update(pos,node,ev)
end
end