From feaf000b00db79a12a273971e8b4e2b51539f19c Mon Sep 17 00:00:00 2001 From: teknomunk <teknomunk@protonmail.com> Date: Thu, 23 Jan 2025 06:45:13 -0600 Subject: [PATCH] Turn powered rail conductor states into functions --- mods/ENTITIES/mcl_minecarts/rails.lua | 20 +++++++++++++++++-- mods/ENTITIES/mcl_minecarts/rails/powered.lua | 16 +++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/rails.lua b/mods/ENTITIES/mcl_minecarts/rails.lua index c4b3c9a4c..22ccd9b4f 100644 --- a/mods/ENTITIES/mcl_minecarts/rails.lua +++ b/mods/ENTITIES/mcl_minecarts/rails.lua @@ -239,10 +239,26 @@ local function make_mesecons(base_name, suffix, base_mesecons) mesecons.conductor = table.copy(base_mesecons.conductor) if mesecons.conductor.onstate then - mesecons.conductor.onstate = base_mesecons.conductor.onstate..suffix + if type(mesecons.conductor.onstate) == "function" then + local old_onstate = mesecons.conductor.onstate + mesecons.conductor.onstate = function(pos, node) + local res = old_onstate(pos, node) + return {res[1]..suffix, res[2]} + end + else + mesecons.conductor.onstate = base_mesecons.conductor.onstate..suffix + end end if base_mesecons.conductor.offstate then - mesecons.conductor.offstate = base_mesecons.conductor.offstate..suffix + if type(mesecons.conductor.offstate) == "function" then + local old_offstate = mesecons.conductor.offstate + mesecons.conductor.offstate = function(pos, node) + local res = old_offstate(pos, node) + return {res[1]..suffix, res[2]} + end + else + mesecons.conductor.offstate = base_mesecons.conductor.offstate..suffix + end end end diff --git a/mods/ENTITIES/mcl_minecarts/rails/powered.lua b/mods/ENTITIES/mcl_minecarts/rails/powered.lua index f249799bb..976672e7e 100644 --- a/mods/ENTITIES/mcl_minecarts/rails/powered.lua +++ b/mods/ENTITIES/mcl_minecarts/rails/powered.lua @@ -21,8 +21,12 @@ mod.register_curves_rail("mcl_minecarts:golden_rail_v2",{ mesecons = { conductor = { state = mesecon.state.off, - offstate = "mcl_minecarts:golden_rail_v2", - onstate = "mcl_minecarts:golden_rail_v2_on", + offstate = function(pos, node) + return {"mcl_minecarts:golden_rail_v2", node.param2} + end, + onstate = function(pos, node) + return {"mcl_minecarts:golden_rail_v2_on", node.param2} + end, rules = mod.rail_rules_long, }, }, @@ -73,8 +77,12 @@ mod.register_curves_rail("mcl_minecarts:golden_rail_v2_on",{ mesecons = { conductor = { state = mesecon.state.on, - offstate = "mcl_minecarts:golden_rail_v2", - onstate = "mcl_minecarts:golden_rail_v2_on", + offstate = function(pos, node) + return {"mcl_minecarts:golden_rail_v2", node.param2} + end, + onstate = function(pos, node) + return {"mcl_minecarts:golden_rail_v2_on", node.param2} + end, rules = mod.rail_rules_long, }, },