e92d6f6d64
Another option to override sunlight_propagates heuristics.
194 lines
9.2 KiB
Lua
194 lines
9.2 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local io, minetest, nodecore, pairs, setmetatable, string, table
|
|
= io, minetest, nodecore, pairs, setmetatable, string, table
|
|
local io_open, string_format, string_gsub, table_concat, table_sort
|
|
= io.open, string.format, string.gsub, table.concat, table.sort
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
if not nodecore.infodump() then return end
|
|
|
|
--[[--
|
|
|
|
- Things marked (specific) are not intended to be used by new things not
|
|
already present in the game, and use in mod content is not supported.
|
|
|
|
- Things marked (api-managed) should not be applied manually but only
|
|
by using an appropriate API.
|
|
|
|
- Things marked (deprecated) are subject to removal and should neither
|
|
be used nor relied upon by mods.
|
|
|
|
--]]--
|
|
|
|
local groups = {
|
|
activates_lens = "always activates optics lenses, regardless of light_source",
|
|
adobe = "any node made of adobe (patterned, bricked, etc)",
|
|
alpha_glyph = "(specific) nc_writing glyphs",
|
|
always_scalable = "nodes that can always be scaled even if they define on_rightclick",
|
|
amalgam = "(specific) nc_igneous amalgamation",
|
|
attached_node = "built-in: drops as item if node below is removed",
|
|
canopy = "leaves or equivalent",
|
|
charcoal = "(specific) nc_fire coal nodes",
|
|
chisel = "metal shaft that can be used as a chisel with a mallet",
|
|
choppy = "dig group: hatchets and adzes",
|
|
coalstone = "any node made of tarstone (patterned, bricked, etc)",
|
|
cobble = "(specific) nc_terrain cobble",
|
|
cobbley = "any \"cobble with filler\" type node (e.g. ores)",
|
|
concrete_etchable = "(api-managed) concrete nodes that can be etched",
|
|
concrete_flow = "(api-managed) concrete flowing liquids",
|
|
concrete_powder = "(api-managed) concrete mix powders",
|
|
concrete_source = "(api-managed) concrete liquid sources",
|
|
concrete_wet = "(api-managed) concreted source or flowing liquid",
|
|
container = "container grade; can only be placed inside containers of higher grade",
|
|
coolant = "quenches nearby heated things",
|
|
cracky = "dig group: picks and mattocks",
|
|
crumbly = "dig group: spades, mattocks, and adzes",
|
|
damage_radiant = "amount of radiant heat emitted that damages players slowly",
|
|
damage_touch = "damage to deal player when punching or trying to pick up",
|
|
dirt = "(specific) nc_terrain dirt and loose dirt",
|
|
dirt_loose = "(specific) nc_terrain loose dirt",
|
|
dirt_raked = "(specific) raked nc_terrain dirt",
|
|
door = "door level of hinged panel",
|
|
door_panel = "level of door that a panel would make if it were hinged",
|
|
dungeon_mapgen = "dungeon nodes that are replaced with real ones after mapgen",
|
|
dynamic_light = "light level of invisible dynamic lights from nc_api_active",
|
|
ember = "(specific) fuel level of burning nc_fire embers",
|
|
falling_node = "built-in: falls as a node if not supported below",
|
|
falling_repose = "angle of repose for falling nodes, higher is steeper",
|
|
fire_fuel = "for flammable nodes, convert into ember of this grade (1-8)",
|
|
firestick = "can be rubbed against another firestick to make fire; success rate factor",
|
|
flame = "(specific) open flame",
|
|
flame_ambiance = "emits crackling fire ambiance (e.g. flames, torches)",
|
|
flammable = "can catch fire; becomes ember if fire_fuel, or flame otherwise",
|
|
float = "built-in: falling node lands on top of liquids",
|
|
flora = "decorative plants (nc_flora) or equivalent",
|
|
flora_dry = "decorative plants that are dry (dried rushes, wilted flowers, all sedges)",
|
|
flora_sedges = "(specific) sedge grass height",
|
|
flower_living = "flowers that are still alive",
|
|
flower_mutant = "flowers that are not found in mapgen",
|
|
flower_wilted = "flowers that have died",
|
|
grass = "(specific) nc_terrain dirt_with_grass",
|
|
grassable = "grass can spread onto this node (converting substrate to dirt)",
|
|
gravel = "(specific) nc_terrain gravel",
|
|
gravel_raked = "(specific) nc_writing raked gravel",
|
|
green = "things containing significant amounts of living plant matter",
|
|
hard_stone = "stratum of hard stone for stone, ores, and similar",
|
|
humus = "(specific) nc_tree humus",
|
|
humus_raked = "(specific) raked nc_tree humus",
|
|
igniter = "causes nearby flammable things to ignite",
|
|
is_stack_only = "(specific) a bare item stack as a node",
|
|
lava = "(specific) source or flowing pumwater",
|
|
leaf_decay = "decays into its leaf_decay_as items if not connected to tree trunk",
|
|
leafy = "(deprecated) loose leaves",
|
|
lens_glow_start = "(specific) glowing lenses in warm-up state",
|
|
lode_cobble = "(specific) lode cobble or loose lode cobble",
|
|
lode_cube = "full cubes made of lode (lode cubes, crates)",
|
|
lode_prill = "(specific) lode prills of various temper",
|
|
lode_temper_annealed = "any lode thing in a slow-cooled and workable state",
|
|
lode_temper_hot = "any lode thing in a heated and glowing",
|
|
lode_temper_tempered = "any lode thing in a quenched and hardened state",
|
|
lodey = "stone with lode in various states",
|
|
log = "tree trunks and logs, can be split to planks",
|
|
loose_repack = "loose nodes that self-repack over time",
|
|
lux_absorb = "lux radiation absorption proportion in 64ths of total",
|
|
lux_cobble = "lux cobble that reacts to nearby lux cobble",
|
|
lux_cobble_max = "lux cobble that produces lux flows",
|
|
lux_emit = "things that emit lux radiation that irradiates players over time",
|
|
lux_fluid = "(specific) lux source and flowing liquids",
|
|
lux_hot = "lux cobble in a moderately excited but still subcritical state",
|
|
lux_tool = "infused lode tools",
|
|
metallic = "made of metal, efficiently absorbs lux radiation",
|
|
moist = "water or other source of moisture esp. for plant cultivation",
|
|
nc_scaling = "(specific) player-created climbing and light spots",
|
|
nc_scaling_fx = "display black dust mote particles like scaling spots",
|
|
not_in_creative_inventory = "built-in: not meaningful in nodecore",
|
|
optic_check = "automatically run optic check callbacks",
|
|
optic_gluable = "any optic that can be glued in place with an eggcorn",
|
|
optic_lens_emit = "a lens emitting a full-intensity beam (firestart, ablate)",
|
|
optic_lens = "equivalent/replaceable by a lens when held in inventory",
|
|
optic_opaque = "force node to be opaque to optic beams",
|
|
optic_source = "produces optic beams",
|
|
optic_transparent = "force node to be transparent to optic beams",
|
|
peat_grindable_item = "stack of 8 can be ground into peat automatically",
|
|
peat_grindable_node = "single one can be ground into peat automatically",
|
|
radiant_opaque = "force radiant heat damage to be blocked",
|
|
radiant_transparent = "force radiant heat damage to pass through",
|
|
raked = "a node whose surface has been raked",
|
|
rakey = "is a rake tool, can rake line patterns into sand/gravel",
|
|
rock = "all non-glassy rocky/stony things, including stone, cobble, brick, etc",
|
|
sand = "(specific) nc_terrain sand",
|
|
sand_raked = "(specific) nc_writing raked sand",
|
|
sandstone = "any node made of sandstone (patterned, bricked, etc)",
|
|
scaling_time = "percentage time it takes to scale this node",
|
|
silica = "any glass, can be ground back to sand",
|
|
silica_clear = "any clear glass, grinds to crude, passes light",
|
|
silica_lens = "equivalent to only half a node of sand by weight",
|
|
silica_molten = "(specific) nc_optics molten glass",
|
|
silica_prism = "glass prism in any state",
|
|
smoothstone = "smooth stone that can be chiseled to bricks",
|
|
snappy = "dig group: by hand",
|
|
soil = "dirt that provides nutrients to plant growth",
|
|
sponge = "(specific) nc_sponge sponges",
|
|
stack_as_node = "single items landing on ground should be placed as node",
|
|
stone = "variants of smooth stone, including ones with inclusions (ore)",
|
|
stone_bricks = "smooth stone that's been chiseled into bricks",
|
|
storebox = "storage containers (e.g. shelves, cases, crates)",
|
|
support_falling = "falling_nodes can rest on it even if not walkable",
|
|
thumpy = "dig group: mallets and hand",
|
|
torch_lit = "(specific) lit torches, subject to various events/timers",
|
|
totable = "nodes that can be packed up into a tote",
|
|
tote = "totes and tote handles",
|
|
visinv = "display nodecore.stack_get() stack as an entity in node",
|
|
water = "water, artificial water, or equivalent",
|
|
witness_opaque = "force things to be treated as opaque for hint witnessing",
|
|
witness_transparent = "force things to be treated as transparent for hint witnessing",
|
|
}
|
|
|
|
local dumpqueued
|
|
|
|
local function dumpfile()
|
|
dumpqueued = nil
|
|
local sorted = {}
|
|
for k in pairs(groups) do sorted[#sorted + 1] = k end
|
|
table_sort(sorted)
|
|
for i = 1, #sorted do
|
|
local k = sorted[i]
|
|
sorted[i] = (string_gsub(string_gsub(k, "%w", ""), "_", "")
|
|
~= "" and string_format("[% q]", k) or k) .. " = "
|
|
.. string_format("%q", groups[k]) .. ","
|
|
end
|
|
local f = io_open(minetest.get_worldpath() .. "/groups.txt", "wb")
|
|
f:write(table_concat(sorted, "\n"))
|
|
f:close()
|
|
end
|
|
|
|
dumpqueued = true
|
|
minetest.after(0, dumpfile)
|
|
|
|
local function learngroup(name)
|
|
if groups[name] then return end
|
|
groups[name] = ""
|
|
if dumpqueued then return end
|
|
dumpqueued = true
|
|
minetest.after(0, dumpfile)
|
|
end
|
|
|
|
local oldgetgroup = minetest.get_item_group
|
|
function minetest.get_item_group(name, group, ...)
|
|
learngroup(group)
|
|
return oldgetgroup(name, group, ...)
|
|
end
|
|
|
|
minetest.after(0, function()
|
|
for _, def in pairs(minetest.registered_items) do
|
|
for k in pairs(def.groups) do
|
|
groups[k] = groups[k] or ""
|
|
end
|
|
setmetatable(def.groups, {
|
|
__index = function(_, k)
|
|
learngroup(k)
|
|
end
|
|
})
|
|
end
|
|
end)
|