-- hardware_fw.lua (Minimal-Version für Deko-Zwecke) laptop.node_config = {} -- 1. Die neue, extrem vereinfachte Punch-Funktion -- Diese Funktion tut nur noch eine Sache: Sie schaltet zum nächsten Node in der Sequenz um. local function on_punch(pos, node, puncher) -- Finde die Konfiguration des aktuellen Nodes local hwdef = laptop.node_config[node.name] -- Wenn ein "nächster Node" definiert ist, wechsle zu diesem. if hwdef and hwdef.next_node then -- KORREKTUR: Wir übergeben auch den alten param2-Wert, um die Ausrichtung beizubehalten. minetest.swap_node(pos, {name = hwdef.next_node, param2 = node.param2}) end end -- 2. Die neue, entschlackte Registrierungs-Funktion -- Diese "Fabrik" baut die Nodes. Wir haben alles entfernt, was nicht für die reine -- Darstellung und die simple Punch-Funktion gebraucht wird. function laptop.register_hardware(name, hwdef) local default_nodename = name.."_"..hwdef.sequence[1] for idx, variant in ipairs(hwdef.sequence) do local nodename = name.."_"..variant local def = table.copy(hwdef.node_defs[variant]) def.description = hwdef.description -- Basis-Gruppen, damit man den Node abbauen kann if def.groups then def.groups = table.copy(def.groups) -- Behalte ggf. spezifische Gruppen else def.groups = {choppy=2, oddly_breakably_by_hand=2, dig_immediate=2} end -- Wenn es nicht der Standard-Node ist, droppe den Standard-Node if nodename ~= default_nodename then def.drop = default_nodename def.groups.not_in_creative_inventory = 1 end -- Weise unsere simple Punch-Funktion zu def.on_punch = on_punch -- Registriere den Node bei Minetest minetest.register_node(nodename, def) -- Speichere die Konfiguration für unsere Punch-Funktion local merged_hwdef = {} merged_hwdef.name = name merged_hwdef.nodename = nodename -- Finde den nächsten Node in der Sequenz (z.B. "on" -> "off") local next_seq = hwdef.sequence[idx+1] or hwdef.sequence[1] local next_node = name.."_"..next_seq if next_node ~= nodename then merged_hwdef.next_node = next_node end laptop.node_config[nodename] = merged_hwdef end -- Wenn eine spezielle Item-Definition für Batterien etc. da war, -- ersetzen wir sie durch einen simplen Alias, damit die Crafting-Rezepte nicht ins Leere laufen. if hwdef.inventory_image then minetest.register_alias(name.."_item", default_nodename) end end