aboutsummaryrefslogtreecommitdiff
path: root/advtrains/track_reg_helper.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains/track_reg_helper.lua')
-rw-r--r--advtrains/track_reg_helper.lua27
1 files changed, 17 insertions, 10 deletions
diff --git a/advtrains/track_reg_helper.lua b/advtrains/track_reg_helper.lua
index 31741d6..fe1d11d 100644
--- a/advtrains/track_reg_helper.lua
+++ b/advtrains/track_reg_helper.lua
@@ -4,6 +4,9 @@
-- Note to future: This is actually just a work-saver, avoiding me to port over all the crossing nodes as well as the linetrack tracks.
-- Future track mods should please directly use the appropriate advtrains.register_node_4rot() API and not rely on this!
+-- Get current translator
+local S = advtrains.translate
+
--definition preparation
local function conns(c1, c2, r1, r2) return {{c=c1, y=r1}, {c=c2, y=r2}} end
local function conns3(c1, c2, c3, r1, r2, r3) return {{c=c1, y=r1}, {c=c2, y=r2}, {c=c3, y=r3}} end
@@ -471,7 +474,7 @@ Depending on the number of connections:
local function can_dig_callback(pos, player)
local ok, reason = advtrains.can_dig_or_modify_track(pos)
if not ok and player then
- minetest.chat_send_player(player:get_player_name(), attrans("This track can not be removed!") .. " " .. reason)
+ minetest.chat_send_player(player:get_player_name(), S("This track can not be removed!") .. " " .. reason)
end
return ok
end
@@ -484,6 +487,11 @@ local function append_statemap_suffix(state_map, nnpref, rot)
return t
end
+function advtrains.default_suitable_substrate(upos)
+ return core.registered_nodes[core.get_node(upos).name]
+ and core.registered_nodes[core.get_node(upos).name].walkable
+end
+
function advtrains.register_tracks(tracktype, def, preset)
if not preset.v25_format then
error("advtrains.register_tracks(): A track preset for pre-v2.5 is used with advtrains 2.5+. Mod probably defines own track preset instead of using it from the advtrains.ap table! Please check track mod compatibility!")
@@ -509,8 +517,7 @@ function advtrains.register_tracks(tracktype, def, preset)
return itemstack, false
end
if minetest.registered_nodes[minetest.get_node(pos).name] and minetest.registered_nodes[minetest.get_node(pos).name].buildable_to then
- local s = minetest.registered_nodes[minetest.get_node(upos).name] and minetest.registered_nodes[minetest.get_node(upos).name].walkable
- if s then
+ if (def.suitable_substrate and def.suitable_substrate or advtrains.default_suitable_substrate)(upos) then
-- minetest.chat_send_all(nnprefix)
local yaw = placer:get_look_horizontal()
advtrains.trackplacer.place_track(pos, nnprefix, name, yaw)
@@ -652,7 +659,7 @@ end
local sl={}
function sl.register_placer(def, preset)
minetest.register_craftitem(":"..def.nodename_prefix.."_slopeplacer",{
- description = attrans("@1 Slope", def.description),
+ description = S("@1 Slope", def.description),
inventory_image = def.texture_prefix.."_slopeplacer.png",
wield_image = def.texture_prefix.."_slopeplacer.png",
groups={},
@@ -663,17 +670,17 @@ end
function sl.create_slopeplacer_on_place(def, preset)
return function(istack, player, pt)
if not pt.type=="node" then
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: not pointing at node"))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: not pointing at node"))
return istack
end
local pos=pt.above
if not pos then
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: not pointing at node"))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: not pointing at node"))
return istack
end
local node=minetest.get_node(pos)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].buildable_to then
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: space occupied!"))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: space occupied!"))
return istack
end
if not advtrains.check_track_protection(pos, player:get_player_name()) then
@@ -726,17 +733,17 @@ function sl.create_slopeplacer_on_place(def, preset)
pos=vector.subtract(pos, dirvec)
end
else
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: Not enough slope items left (@1 required)", step))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: Not enough slope items left (@1 required)", step))
end
else
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: There's no slope of length @1",step))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: There's no slope of length @1",step))
end
return istack
end
step=step+1
pos=vector.add(pos, dirvec)
end
- minetest.chat_send_player(player:get_player_name(), attrans("Can't place: no supporting node at upper end."))
+ minetest.chat_send_player(player:get_player_name(), S("Can't place: no supporting node at upper end."))
return itemstack
end
end