Turn powered rail conductor states into functions

This commit is contained in:
teknomunk 2025-01-23 06:45:13 -06:00 committed by the-real-herowl
parent b7538bb64d
commit feaf000b00
2 changed files with 30 additions and 6 deletions
mods/ENTITIES/mcl_minecarts

View file

@ -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

View file

@ -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,
},
},