summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pipeworks/luaentity.lua5
-rw-r--r--technic/machines/switching_station.lua29
2 files changed, 31 insertions, 3 deletions
diff --git a/pipeworks/luaentity.lua b/pipeworks/luaentity.lua
index 382b0c1..34b6665 100644
--- a/pipeworks/luaentity.lua
+++ b/pipeworks/luaentity.lua
@@ -362,13 +362,12 @@ local move_entities_globalstep_part2 = function(dtime)
end
end
-local handle_active_blocks_step = 0.2
local handle_active_blocks_timer = 0.1
minetest.register_globalstep(function(dtime)
handle_active_blocks_timer = handle_active_blocks_timer + dtime
- if handle_active_blocks_timer >= handle_active_blocks_step then
- handle_active_blocks_timer = handle_active_blocks_timer - handle_active_blocks_step
+ if dtime < 0.2 or handle_active_blocks_timer >= (dtime * 3) then
+ handle_active_blocks_timer = 0.1
move_entities_globalstep_part1(dtime)
move_entities_globalstep_part2(dtime)
end
diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua
index 40b40e7..dcc0520 100644
--- a/technic/machines/switching_station.lua
+++ b/technic/machines/switching_station.lua
@@ -2,6 +2,7 @@
technic.networks = {}
technic.cables = {}
+technic.redundant_warn = {}
local mesecons_path = minetest.get_modpath("mesecons")
local digilines_path = minetest.get_modpath("digilines")
@@ -44,11 +45,15 @@ minetest.register_node("technic:switching_station",{
meta:set_string("active", 1)
meta:set_string("channel", "switching_station"..minetest.pos_to_string(pos))
meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ local poshash = minetest.hash_node_position(pos)
+ technic.redundant_warn.poshash = nil
end,
after_dig_node = function(pos)
minetest.forceload_free_block(pos)
pos.y = pos.y - 1
minetest.forceload_free_block(pos)
+ local poshash = minetest.hash_node_position(pos)
+ technic.redundant_warn.poshash = nil
end,
on_receive_fields = function(pos, formname, fields, sender)
if not fields.channel then
@@ -189,12 +194,29 @@ end
-----------------------------------------------
-- The action code for the switching station --
-----------------------------------------------
+
+technic.powerctrl_state = true
+
+minetest.register_chatcommand("powerctrl", {
+ params = "state",
+ description = "Enables or disables technic's switching station ABM",
+ privs = { basic_privs = true },
+ func = function(name, state)
+ if state == "on" then
+ technic.powerctrl_state = true
+ else
+ technic.powerctrl_state = false
+ end
+ end
+})
+
minetest.register_abm({
nodenames = {"technic:switching_station"},
label = "Switching Station", -- allows the mtt profiler to profile this abm individually
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
+ if not technic.powerctrl_state then return end
local meta = minetest.get_meta(pos)
local meta1 = nil
local pos1 = {}
@@ -217,6 +239,13 @@ minetest.register_abm({
minetest.forceload_free_block(pos)
minetest.forceload_free_block(pos1)
meta:set_string("infotext",S("%s Already Present"):format(machine_name))
+
+ local poshash = minetest.hash_node_position(pos)
+
+ if not technic.redundant_warn.poshash then
+ technic.redundant_warn.poshash = true
+ print("[TECHNIC] Warning: redundant switching station found near "..minetest.pos_to_string(pos))
+ end
return
end