forked from VoxeLibre/VoxeLibre
Update all rail types to new version
This commit is contained in:
parent
8773e515d6
commit
f18bd9b8e7
|
@ -201,6 +201,25 @@ local BASE_DEF = {
|
||||||
update_rail_connections(pos, true)
|
update_rail_connections(pos, true)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
local function register_straight_rail(base_name, tiles, def)
|
||||||
|
def = def or {}
|
||||||
|
local base_def = table.copy(BASE_DEF)
|
||||||
|
table_merge(base_def,{
|
||||||
|
_mcl_minecarts = { base_name = base_name },
|
||||||
|
drop = base_name,
|
||||||
|
})
|
||||||
|
table_merge(base_def, def)
|
||||||
|
|
||||||
|
-- Register the base node
|
||||||
|
mod.register_rail(base_name, table_merge(table.copy(base_def),{
|
||||||
|
tiles = { tiles[1] },
|
||||||
|
_mcl_minecarts = {
|
||||||
|
get_next_dir = rail_dir_straight
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
BASE_DEF.craft = nil
|
||||||
|
end
|
||||||
|
mod.register_straight_rail = register_straight_rail
|
||||||
local function register_curves_rail(base_name, tiles, def)
|
local function register_curves_rail(base_name, tiles, def)
|
||||||
def = def or {}
|
def = def or {}
|
||||||
local base_def = table.copy(BASE_DEF)
|
local base_def = table.copy(BASE_DEF)
|
||||||
|
@ -303,9 +322,6 @@ local function register_rail_sloped(itemstring, def)
|
||||||
end
|
end
|
||||||
mod.register_rail_sloped = register_rail_sloped
|
mod.register_rail_sloped = register_rail_sloped
|
||||||
|
|
||||||
-- Register rails
|
|
||||||
dofile(modpath.."/rails/standard.lua")
|
|
||||||
|
|
||||||
-- Redstone rules
|
-- Redstone rules
|
||||||
local rail_rules_long =
|
local rail_rules_long =
|
||||||
{{x=-1, y= 0, z= 0, spread=true},
|
{{x=-1, y= 0, z= 0, spread=true},
|
||||||
|
@ -327,15 +343,6 @@ local rail_rules_long =
|
||||||
local rail_rules_short = mesecon.rules.pplate
|
local rail_rules_short = mesecon.rules.pplate
|
||||||
|
|
||||||
-- Normal rail
|
-- Normal rail
|
||||||
register_rail("mcl_minecarts:rail",
|
|
||||||
{"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
|
|
||||||
{
|
|
||||||
description = S("Rail"),
|
|
||||||
_tt_help = S("Track for minecarts"),
|
|
||||||
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."),
|
|
||||||
_doc_items_usagehelp = railuse,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
mod.register_curves_rail("mcl_minecarts:rail_v2", {
|
mod.register_curves_rail("mcl_minecarts:rail_v2", {
|
||||||
"default_rail.png",
|
"default_rail.png",
|
||||||
"default_rail_curved.png",
|
"default_rail_curved.png",
|
||||||
|
@ -343,6 +350,10 @@ mod.register_curves_rail("mcl_minecarts:rail_v2", {
|
||||||
"default_rail_t_junction_on.png",
|
"default_rail_t_junction_on.png",
|
||||||
"default_rail_crossing.png"
|
"default_rail_crossing.png"
|
||||||
},{
|
},{
|
||||||
|
description = S("Rail"),
|
||||||
|
_tt_help = S("Track for minecarts"),
|
||||||
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."),
|
||||||
|
_doc_items_usagehelp = railuse,
|
||||||
craft = {
|
craft = {
|
||||||
output = "mcl_minecarts:rail_v2 16",
|
output = "mcl_minecarts:rail_v2 16",
|
||||||
recipe = {
|
recipe = {
|
||||||
|
@ -352,188 +363,178 @@ mod.register_curves_rail("mcl_minecarts:rail_v2", {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
register_rail("mcl_minecarts:rail", {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, {}, false ) -- deprecated
|
||||||
|
|
||||||
-- Powered rail (off = brake mode)
|
-- Powered rail (off = brake mode)
|
||||||
register_rail("mcl_minecarts:golden_rail",
|
mod.register_straight_rail("mcl_minecarts:golden_rail_v2",{ "mcl_minecarts_rail_golden.png" },{
|
||||||
{"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"},
|
description = S("Powered Rail"),
|
||||||
{
|
_tt_help = S("Track for minecarts").."\n"..S("Speed up when powered, slow down when not powered"),
|
||||||
description = S("Powered Rail"),
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."),
|
||||||
_tt_help = S("Track for minecarts").."\n"..S("Speed up when powered, slow down when not powered"),
|
_doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate"..
|
||||||
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."),
|
" minecarts, power it with redstone power."),
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate"..
|
_doc_items_create_entry = false,
|
||||||
" minecarts, power it with redstone power."),
|
_rail_acceleration = -3,
|
||||||
_rail_acceleration = -3,
|
_max_acceleration_velocity = 8,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
conductor = {
|
conductor = {
|
||||||
state = mesecon.state.off,
|
state = mesecon.state.off,
|
||||||
offstate = "mcl_minecarts:golden_rail",
|
offstate = "mcl_minecarts:golden_rail_v2",
|
||||||
onstate = "mcl_minecarts:golden_rail_on",
|
onstate = "mcl_minecarts:golden_rail_v2_on",
|
||||||
rules = rail_rules_long,
|
rules = rail_rules_long,
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
drop = "mcl_minecarts:golden_rail_v2",
|
||||||
|
craft = {
|
||||||
|
output = "mcl_minecarts:golden_rail_v2 6",
|
||||||
|
recipe = {
|
||||||
|
{"mcl_core:gold_ingot", "", "mcl_core:gold_ingot"},
|
||||||
|
{"mcl_core:gold_ingot", "mcl_core:stick", "mcl_core:gold_ingot"},
|
||||||
|
{"mcl_core:gold_ingot", "mesecons:redstone", "mcl_core:gold_ingot"},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
})
|
||||||
|
register_rail("mcl_minecarts:golden_rail", {"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"}, {}, false ) -- deprecated
|
||||||
|
|
||||||
-- Powered rail (on = acceleration mode)
|
-- Powered rail (on = acceleration mode)
|
||||||
register_rail("mcl_minecarts:golden_rail_on",
|
mod.register_straight_rail("mcl_minecarts:golden_rail_v2_on",{ "mcl_minecarts_rail_golden_powered.png" },{
|
||||||
{"mcl_minecarts_rail_golden_powered.png", "mcl_minecarts_rail_golden_curved_powered.png", "mcl_minecarts_rail_golden_t_junction_powered.png", "mcl_minecarts_rail_golden_crossing_powered.png"},
|
_doc_items_create_entry = false,
|
||||||
{
|
_rail_acceleration = 4,
|
||||||
_doc_items_create_entry = false,
|
_max_acceleration_velocity = 8,
|
||||||
_rail_acceleration = 4,
|
groups = {
|
||||||
_max_acceleration_velocity = 8,
|
not_in_creative_inventory = 1,
|
||||||
mesecons = {
|
|
||||||
conductor = {
|
|
||||||
state = mesecon.state.on,
|
|
||||||
offstate = "mcl_minecarts:golden_rail",
|
|
||||||
onstate = "mcl_minecarts:golden_rail_on",
|
|
||||||
rules = rail_rules_long,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
drop = "mcl_minecarts:golden_rail",
|
|
||||||
},
|
},
|
||||||
false
|
mesecons = {
|
||||||
)
|
conductor = {
|
||||||
|
state = mesecon.state.on,
|
||||||
|
offstate = "mcl_minecarts:golden_rail_v2",
|
||||||
|
onstate = "mcl_minecarts:golden_rail_v2_on",
|
||||||
|
rules = rail_rules_long,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
drop = "mcl_minecarts:golden_rail_v2",
|
||||||
|
})
|
||||||
|
register_rail("mcl_minecarts:golden_rail_on", {"mcl_minecarts_rail_golden_powered.png", "mcl_minecarts_rail_golden_curved_powered.png", "mcl_minecarts_rail_golden_t_junction_powered.png", "mcl_minecarts_rail_golden_crossing_powered.png"}, { }, false ) -- deprecated
|
||||||
|
|
||||||
-- Activator rail (off)
|
-- Activator rail (off)
|
||||||
register_rail("mcl_minecarts:activator_rail",
|
mod.register_straight_rail("mcl_minecarts:activator_rail_v2", {"mcl_minecarts_rail_activator.png"},{
|
||||||
{"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"},
|
description = S("Activator Rail"),
|
||||||
{
|
_tt_help = S("Track for minecarts").."\n"..S("Activates minecarts when powered"),
|
||||||
description = S("Activator Rail"),
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."),
|
||||||
_tt_help = S("Track for minecarts").."\n"..S("Activates minecarts when powered"),
|
_doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."),
|
||||||
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."),
|
mesecons = {
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."),
|
conductor = {
|
||||||
mesecons = {
|
state = mesecon.state.off,
|
||||||
conductor = {
|
offstate = "mcl_minecarts:activator_rail_v2",
|
||||||
state = mesecon.state.off,
|
onstate = "mcl_minecarts:activator_rail_v2_on",
|
||||||
offstate = "mcl_minecarts:activator_rail",
|
rules = rail_rules_long,
|
||||||
onstate = "mcl_minecarts:activator_rail_on",
|
|
||||||
rules = rail_rules_long,
|
|
||||||
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
)
|
craft = {
|
||||||
|
output = "mcl_minecarts:activator_rail_v2 6",
|
||||||
|
recipe = {
|
||||||
|
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
||||||
|
{"mcl_core:iron_ingot", "mesecons_torch:mesecon_torch_on", "mcl_core:iron_ingot"},
|
||||||
|
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
register_rail("mcl_minecarts:activator_rail", {"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"}, {} ) -- deprecated
|
||||||
|
|
||||||
-- Activator rail (on)
|
-- Activator rail (on)
|
||||||
register_rail("mcl_minecarts:activator_rail_on",
|
mod.register_straight_rail("mcl_minecarts:activator_rail_v2_on", {"mcl_minecarts_rail_activator_powered.png"},{
|
||||||
{"mcl_minecarts_rail_activator_powered.png", "mcl_minecarts_rail_activator_curved_powered.png", "mcl_minecarts_rail_activator_t_junction_powered.png", "mcl_minecarts_rail_activator_crossing_powered.png"},
|
_doc_items_create_entry = false,
|
||||||
{
|
groups = {
|
||||||
_doc_items_create_entry = false,
|
not_in_creative_inventory = 1,
|
||||||
mesecons = {
|
|
||||||
conductor = {
|
|
||||||
state = mesecon.state.on,
|
|
||||||
offstate = "mcl_minecarts:activator_rail",
|
|
||||||
onstate = "mcl_minecarts:activator_rail_on",
|
|
||||||
rules = rail_rules_long,
|
|
||||||
},
|
|
||||||
effector = {
|
|
||||||
-- Activate minecarts
|
|
||||||
action_on = function(pos, node)
|
|
||||||
local pos2 = { x = pos.x, y =pos.y + 1, z = pos.z }
|
|
||||||
local objs = minetest.get_objects_inside_radius(pos2, 1)
|
|
||||||
for _, o in pairs(objs) do
|
|
||||||
local l = o:get_luaentity()
|
|
||||||
if l and string.sub(l.name, 1, 14) == "mcl_minecarts:" and l.on_activate_by_rail then
|
|
||||||
l:on_activate_by_rail()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
},
|
|
||||||
_mcl_minecarts_on_enter = function(pos, cart)
|
|
||||||
if cart.on_activate_by_rail then
|
|
||||||
cart:on_activate_by_rail()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
drop = "mcl_minecarts:activator_rail",
|
|
||||||
},
|
},
|
||||||
false
|
mesecons = {
|
||||||
)
|
conductor = {
|
||||||
|
state = mesecon.state.on,
|
||||||
|
offstate = "mcl_minecarts:activator_rail_v2",
|
||||||
|
onstate = "mcl_minecarts:activator_rail_v2_on",
|
||||||
|
rules = rail_rules_long,
|
||||||
|
},
|
||||||
|
effector = {
|
||||||
|
-- Activate minecarts
|
||||||
|
action_on = function(pos, node)
|
||||||
|
local pos2 = { x = pos.x, y =pos.y + 1, z = pos.z }
|
||||||
|
local objs = minetest.get_objects_inside_radius(pos2, 1)
|
||||||
|
for _, o in pairs(objs) do
|
||||||
|
local l = o:get_luaentity()
|
||||||
|
if l and string.sub(l.name, 1, 14) == "mcl_minecarts:" and l.on_activate_by_rail then
|
||||||
|
l:on_activate_by_rail()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
_mcl_minecarts_on_enter = function(pos, cart)
|
||||||
|
if cart.on_activate_by_rail then
|
||||||
|
cart:on_activate_by_rail()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
drop = "mcl_minecarts:activator_rail_v2",
|
||||||
|
})
|
||||||
|
register_rail("mcl_minecarts:activator_rail_on", {"mcl_minecarts_rail_activator_powered.png", "mcl_minecarts_rail_activator_curved_powered.png", "mcl_minecarts_rail_activator_t_junction_powered.png", "mcl_minecarts_rail_activator_crossing_powered.png"}, { }, false ) -- deprecated
|
||||||
|
|
||||||
-- Detector rail (off)
|
-- Detector rail (off)
|
||||||
register_rail("mcl_minecarts:detector_rail",
|
mod.register_straight_rail("mcl_minecarts:detector_rail_v2",{"mcl_minecarts_rail_detector.png"},{
|
||||||
{"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"},
|
description = S("Detector Rail"),
|
||||||
{
|
_tt_help = S("Track for minecarts").."\n"..S("Emits redstone power when a minecart is detected"),
|
||||||
description = S("Detector Rail"),
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms."),
|
||||||
_tt_help = S("Track for minecarts").."\n"..S("Emits redstone power when a minecart is detected"),
|
_doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."),
|
||||||
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms."),
|
mesecons = {
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."),
|
receptor = {
|
||||||
mesecons = {
|
state = mesecon.state.off,
|
||||||
receptor = {
|
rules = rail_rules_short,
|
||||||
state = mesecon.state.off,
|
|
||||||
rules = rail_rules_short,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
_mcl_minecarts_on_enter = function(pos, cart)
|
},
|
||||||
local node = minetest.get_node(pos)
|
_mcl_minecarts_on_enter = function(pos, cart)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
|
||||||
local newnode = {
|
local newnode = {
|
||||||
name = "mcl_minecarts:detector_rail_on",
|
name = "mcl_minecarts:detector_rail_v2_on",
|
||||||
param2 = node.param2
|
param2 = node.param2
|
||||||
}
|
}
|
||||||
minetest.swap_node( pos, newnode )
|
minetest.swap_node( pos, newnode )
|
||||||
mesecon.receptor_on(pos)
|
mesecon.receptor_on(pos)
|
||||||
end,
|
end,
|
||||||
|
craft = {
|
||||||
|
output = "mcl_minecarts:detector_rail_v2 6",
|
||||||
|
recipe = {
|
||||||
|
{"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"},
|
||||||
|
{"mcl_core:iron_ingot", "mesecons_pressureplates:pressure_plate_stone_off", "mcl_core:iron_ingot"},
|
||||||
|
{"mcl_core:iron_ingot", "mesecons:redstone", "mcl_core:iron_ingot"},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
})
|
||||||
|
register_rail("mcl_minecarts:detector_rail", {"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"}, {} ) -- deprecated
|
||||||
|
|
||||||
-- Detector rail (on)
|
-- Detector rail (on)
|
||||||
register_rail("mcl_minecarts:detector_rail_on",
|
mod.register_straight_rail("mcl_minecarts:detector_rail_v2_on",{"mcl_minecarts_rail_detector_powered.png"},{
|
||||||
{"mcl_minecarts_rail_detector_powered.png", "mcl_minecarts_rail_detector_curved_powered.png", "mcl_minecarts_rail_detector_t_junction_powered.png", "mcl_minecarts_rail_detector_crossing_powered.png"},
|
groups = {
|
||||||
{
|
not_in_creative_inventory = 1,
|
||||||
_doc_items_create_entry = false,
|
|
||||||
mesecons = {
|
|
||||||
receptor = {
|
|
||||||
state = mesecon.state.on,
|
|
||||||
rules = rail_rules_short,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_mcl_minecarts_on_leave = function(pos, cart)
|
|
||||||
local node = minetest.get_node(pos)
|
|
||||||
|
|
||||||
local newnode = {
|
|
||||||
name = "mcl_minecarts:detector_rail",
|
|
||||||
param2 = node.param2
|
|
||||||
}
|
|
||||||
minetest.swap_node( pos, newnode )
|
|
||||||
mesecon.receptor_off(pos)
|
|
||||||
end,
|
|
||||||
drop = "mcl_minecarts:detector_rail",
|
|
||||||
},
|
},
|
||||||
false
|
_doc_items_create_entry = false,
|
||||||
)
|
mesecons = {
|
||||||
|
receptor = {
|
||||||
|
state = mesecon.state.on,
|
||||||
|
rules = rail_rules_short,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_mcl_minecarts_on_leave = function(pos, cart)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
|
||||||
|
local newnode = {
|
||||||
-- Crafting
|
name = "mcl_minecarts:detector_rail",
|
||||||
minetest.register_craft({
|
param2 = node.param2
|
||||||
output = "mcl_minecarts:golden_rail 6",
|
}
|
||||||
recipe = {
|
minetest.swap_node( pos, newnode )
|
||||||
{"mcl_core:gold_ingot", "", "mcl_core:gold_ingot"},
|
mesecon.receptor_off(pos)
|
||||||
{"mcl_core:gold_ingot", "mcl_core:stick", "mcl_core:gold_ingot"},
|
end,
|
||||||
{"mcl_core:gold_ingot", "mesecons:redstone", "mcl_core:gold_ingot"},
|
drop = "mcl_minecarts:detector_rail_v2",
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
register_rail("mcl_minecarts:detector_rail_on", {"mcl_minecarts_rail_detector_powered.png", "mcl_minecarts_rail_detector_curved_powered.png", "mcl_minecarts_rail_detector_t_junction_powered.png", "mcl_minecarts_rail_detector_crossing_powered.png"}, { }, false ) -- deprecated
|
||||||
minetest.register_craft({
|
|
||||||
output = "mcl_minecarts:activator_rail 6",
|
|
||||||
recipe = {
|
|
||||||
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
|
||||||
{"mcl_core:iron_ingot", "mesecons_torch:mesecon_torch_on", "mcl_core:iron_ingot"},
|
|
||||||
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "mcl_minecarts:detector_rail 6",
|
|
||||||
recipe = {
|
|
||||||
{"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"},
|
|
||||||
{"mcl_core:iron_ingot", "mesecons_pressureplates:pressure_plate_stone_off", "mcl_core:iron_ingot"},
|
|
||||||
{"mcl_core:iron_ingot", "mesecons:redstone", "mcl_core:iron_ingot"},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
-- Aliases
|
-- Aliases
|
||||||
if minetest.get_modpath("doc") then
|
if minetest.get_modpath("doc") then
|
||||||
|
|
Loading…
Reference in New Issue