implement first draft of an API; weird bug when registering the crafts
parent
236e114b2b
commit
a617f6e213
4
api.lua
4
api.lua
|
@ -21,6 +21,6 @@ function streets.register_road_surface(nodename, nodedef)
|
|||
streets.api.register_road_surfaces[nodename] = nodedef
|
||||
end
|
||||
|
||||
function streets.register_road_marking(markingname, texture)
|
||||
streets.api.register_road_markings[markingname] = texture
|
||||
function streets.register_road_marking(markingdef)
|
||||
streets.api.register_road_markings[markingdef.suffix] = markingdef
|
||||
end
|
||||
|
|
|
@ -6,20 +6,49 @@
|
|||
]]
|
||||
|
||||
minetest.after(0, function()
|
||||
for nodename, nodedef in pairs(streets.api.register_road_surfaces) do
|
||||
-- Register the node
|
||||
minetest.register_node(nodename, nodedef)
|
||||
-- Register all markings for this node
|
||||
for markingname, markingtexture in pairs(streets.api.register_road_markings) do
|
||||
minetest.register_node(nodename .. "_" .. markingname, {
|
||||
tiles = {nodedef.tiles[1] .. "^" .. markingtexture, nodedef.tiles[1]},
|
||||
groups = nodedef.groups
|
||||
local surface_list = streets.api.register_road_surfaces
|
||||
local marking_list = streets.api.register_road_markings
|
||||
-- Loop thorugh the list of surfaces
|
||||
for surface_name, surface_definition in pairs(surface_list) do
|
||||
-- Register the surface itself (e.g. plain asphalt)
|
||||
minetest.register_node(surface_name, surface_definition)
|
||||
-- Register the craft for this surface
|
||||
minetest.register_craft(surface_definition.craft)
|
||||
-- Loop through the list of markings
|
||||
for marking_suffix, marking_data in pairs(marking_list) do
|
||||
-- Collect required data for node defintion
|
||||
local nn = surface_name .. "_" .. marking_suffix
|
||||
local description = surface_definition.description .. " " .. marking_data.friendly_suffix
|
||||
local tiles = {surface_definition.tiles[1] .. "^" .. marking_data.overlay, surface_definition.tiles[1]}
|
||||
local groups = surface_definition.groups
|
||||
local sounds = surface_definition.sounds
|
||||
-- Replace placeholders in craft recipe
|
||||
local craft = marking_data.craft
|
||||
local replacement = surface_name:sub(2, -1)
|
||||
if craft[1][1] == "?" then craft[1][1] = replacement end
|
||||
if craft[1][2] == "?" then craft[1][2] = replacement end
|
||||
if craft[1][3] == "?" then craft[1][3] = replacement end
|
||||
if craft[2][1] == "?" then craft[2][1] = replacement end
|
||||
if craft[2][2] == "?" then craft[2][2] = replacement end
|
||||
if craft[2][3] == "?" then craft[2][3] = replacement end
|
||||
if craft[3][1] == "?" then craft[3][1] = replacement end
|
||||
if craft[3][2] == "?" then craft[3][2] = replacement end
|
||||
if craft[3][3] == "?" then craft[3][3] = replacement end
|
||||
-- Register the combination of surface and marking
|
||||
minetest.register_node(nn, {
|
||||
description = description,
|
||||
tiles = tiles,
|
||||
groups = groups,
|
||||
sounds = sounds,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir"
|
||||
})
|
||||
local craft_output = nn:sub(2, -1)
|
||||
-- Register the craft for this node
|
||||
minetest.register_craft({
|
||||
output = craft_output,
|
||||
recipe = craft
|
||||
})
|
||||
end
|
||||
|
||||
-- Register the craft
|
||||
if nodedef.craft ~= nil then
|
||||
minetest.register_craft(nodedef.craft)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
|
@ -5,4 +5,13 @@
|
|||
Category: Roads
|
||||
]]
|
||||
|
||||
streets.register_road_marking("line_dashed", "streets_line_dashed.png")
|
||||
streets.register_road_marking({
|
||||
suffix = "line_dashed",
|
||||
friendly_suffix = "dashed line",
|
||||
overlay = "streets_line_dashed.png",
|
||||
craft = {
|
||||
{"?", "dye:white", "?"},
|
||||
{"?", "?", "?"},
|
||||
{"?", "dye:white", "?"}
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue