Skip to content

Commit

Permalink
monitoring mod support / config
Browse files Browse the repository at this point in the history
  • Loading branch information
BuckarooBanzay committed May 19, 2020
1 parent c1c21e7 commit 012f04e
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ read_globals = {
"dump", "screwdriver",

-- Deps
"default"
"default", "monitoring"
}
40 changes: 39 additions & 1 deletion disable_far_away.lua
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
local has_monitoring_mod = minetest.get_modpath("monitoring")

local active_trains_metric, inactive_trains_metric

if has_monitoring_mod then
active_trains_metric = monitoring.gauge(
"advtrains_custom_active_trains",
"number of active trains"
)
inactive_trains_metric = monitoring.gauge(
"advtrains_custom_inactive_trains",
"number of inactive trains"
)
end


-- id -> true
local disabled_trains = {}
Expand All @@ -9,8 +24,13 @@ minetest.register_globalstep(function(dtime)
timer=0

disabled_trains = {}
local max_range = 500
local max_range_setting = minetest.settings:get("advtrains_custom.max_range") or "500"
local max_range = tonumber(max_range_setting)
local players = minetest.get_connected_players()

local active_trains = 0
local inactive_trains = 0

for id, train in pairs(advtrains.trains) do
disabled_trains[id] = true
local tpos = train.last_pos
Expand All @@ -20,12 +40,28 @@ minetest.register_globalstep(function(dtime)
if distance < max_range then
-- enable train
disabled_trains[id] = nil
-- skip other players
break
end
end

if has_monitoring_mod then
-- collect metrics
if disabled_trains[id] then
inactive_trains = inactive_trains + 1
else
active_trains = active_trains + 1
end

active_trains_metric.set(active_trains)
inactive_trains_metric.set(inactive_trains)
end
end
end)

-- overrides

assert(type(advtrains.train_ensure_init) == "function")
local old_train_ensure_init = advtrains.train_ensure_init
advtrains.train_ensure_init = function(k, v)
if disabled_trains[k] then
Expand All @@ -35,6 +71,7 @@ advtrains.train_ensure_init = function(k, v)
end
end

assert(type(advtrains.train_step_b) == "function")
local old_train_step_b = advtrains.train_step_b
advtrains.train_step_b = function(k, v, dtime)
if disabled_trains[k] then
Expand All @@ -44,6 +81,7 @@ advtrains.train_step_b = function(k, v, dtime)
end
end

assert(type(advtrains.train_step_c) == "function")
local old_train_step_c = advtrains.train_step_c
advtrains.train_step_c = function(k, v, dtime)
if disabled_trains[k] then
Expand Down
3 changes: 2 additions & 1 deletion mod.conf
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
depends = advtrains
name = advtrains_custom
depends = advtrains
optional_depends = monitoring
4 changes: 4 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ various advtrains hacks and customizations
## Far away trains

Disables far away (>500 nodes) trains

# Settings

* **advtrains_custom.max_range** max range of active trains (default: 500 nodes)

0 comments on commit 012f04e

Please sign in to comment.