aboutsummaryrefslogtreecommitdiff
path: root/advtrains
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains')
-rw-r--r--advtrains/nodedb.lua17
-rw-r--r--advtrains/trainlogic.lua10
-rw-r--r--advtrains/wagons.lua9
3 files changed, 25 insertions, 11 deletions
diff --git a/advtrains/nodedb.lua b/advtrains/nodedb.lua
index 763edbc..a4fbf0a 100644
--- a/advtrains/nodedb.lua
+++ b/advtrains/nodedb.lua
@@ -233,8 +233,9 @@ minetest.register_lbm({
--used when restoring stuff after a crash
ndb.restore_all = function()
- atwarn("Updating the map from the nodedb, this may take a while")
+ --atlog("Updating the map from the nodedb, this may take a while")
local cnt=0
+ local dcnt=0
for y, ny in pairs(ndb_nodes) do
for x, nx in pairs(ny) do
for z, _ in pairs(nx) do
@@ -246,17 +247,21 @@ ndb.restore_all = function()
if ori_ndef and ori_ndef.groups.save_in_at_nodedb then --check if this node has been worldedited, and don't replace then
if (ndbnode.name~=node.name or ndbnode.param2~=node.param2) then
minetest.swap_node(pos, ndbnode)
- atwarn("Replaced",node.name,"@",pos,"with",ndbnode.name)
+ --atlog("Replaced",node.name,"@",pos,"with",ndbnode.name)
+ cnt=cnt+1
end
else
ndb.clear(pos)
- atwarn("Found ghost node (former",ndbnode and ndbnode.name,") @",pos,"deleting")
+ dcnt=dcnt+1
+ --atlog("Found ghost node (former",ndbnode and ndbnode.name,") @",pos,"deleting")
end
end
end
end
end
- atwarn("Updated",cnt,"nodes")
+ local text="Restore node database: Replaced",cnt,"nodes, removed",dcnt,"ghost nodes"
+ atlog(text)
+ return text
end
minetest.register_on_dignode(function(pos, oldnode, digger)
@@ -287,9 +292,9 @@ minetest.register_chatcommand("at_sync_ndb",
if not minetest.check_player_privs(name, {server=true}) and os.time() < ptime+30 then
return false, "Please wait at least 30s from the previous execution of /at_restore_ndb!"
end
- ndb.restore_all()
+ local text = ndb.restore_all()
ptime=os.time()
- return true
+ return true, text
end)
end,
privs = {train_operator=true}, -- Require the "privs" privilege to run
diff --git a/advtrains/trainlogic.lua b/advtrains/trainlogic.lua
index 76b0d1d..d98c9e8 100644
--- a/advtrains/trainlogic.lua
+++ b/advtrains/trainlogic.lua
@@ -252,29 +252,29 @@ function advtrains.train_step_a(id, train, dtime)
if front_off_track and back_off_track then--allow movement in both directions
if train.tarvelocity>1 then
train.tarvelocity=1
- atwarn("Train",t_info,"is off track at both ends. Clipping velocity to 1")
+ atprint("Train",t_info,"is off track at both ends. Clipping velocity to 1")
pprint=true
end
elseif front_off_track then--allow movement only backward
if train.movedir==1 and train.tarvelocity>0 then
train.tarvelocity=0
- atwarn("Train",t_info,"is off track. Trying to drive further out. Velocity clipped to 0")
+ atprint("Train",t_info,"is off track. Trying to drive further out. Velocity clipped to 0")
pprint=true
end
if train.movedir==-1 and train.tarvelocity>1 then
train.tarvelocity=1
- atwarn("Train",t_info,"is off track. Velocity clipped to 1")
+ atprint("Train",t_info,"is off track. Velocity clipped to 1")
pprint=true
end
elseif back_off_track then--allow movement only forward
if train.movedir==-1 and train.tarvelocity>0 then
train.tarvelocity=0
- atwarn("Train",t_info,"is off track. Trying to drive further out. Velocity clipped to 0")
+ atprint("Train",t_info,"is off track. Trying to drive further out. Velocity clipped to 0")
pprint=true
end
if train.movedir==1 and train.tarvelocity>1 then
train.tarvelocity=1
- atwarn("Train",t_info,"is off track. Velocity clipped to 1")
+ atprint("Train",t_info,"is off track. Velocity clipped to 1")
pprint=true
end
end
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index cc1f003..415665e 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -300,6 +300,15 @@ function wagon:on_step(dtime)
--check infotext
local outside=self:train().text_outside or ""
+
+ local train = self:train()
+ --show off-track information in outside text instead of notifying the whole server about this
+ local front_off_track=train.max_index_on_track and train.index and train.index>train.max_index_on_track
+ local back_off_track=train.min_index_on_track and train.end_index and train.end_index<train.min_index_on_track
+ if front_off_track or back_off_track then
+ outside = outside .."\n!!! Train off track !!!"
+ end
+
if self.infotext_cache~=outside then
self.object:set_properties({infotext=outside})
self.infotext_cache=outside