mods that hopefully work for a TechAge-based pack
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
local travelnet_form_name = "travelnet:show"
|
||||
|
||||
local player_formspec_data = travelnet.player_formspec_data
|
||||
|
||||
-- minetest.chat_send_player is sometimes not so well visible
|
||||
function travelnet.show_message(pos, player_name, title, message)
|
||||
if not pos or not player_name or not message then
|
||||
return
|
||||
end
|
||||
local formspec = travelnet.formspecs.error_message({
|
||||
title = title,
|
||||
message = message
|
||||
})
|
||||
travelnet.show_formspec(player_name, formspec)
|
||||
end
|
||||
|
||||
-- show the player the formspec they would see when right-clicking the node;
|
||||
-- needs to be simulated this way as calling on_rightclick would not do
|
||||
function travelnet.show_current_formspec(pos, meta, player_name)
|
||||
player_formspec_data[player_name] = player_formspec_data[player_name] or {}
|
||||
player_formspec_data[player_name].pos = pos
|
||||
local node = minetest.get_node(pos)
|
||||
travelnet.show_formspec(player_name,
|
||||
travelnet.formspecs.current({
|
||||
station_network = meta:get_string("station_network"),
|
||||
station_name = meta:get_string("station_name"),
|
||||
owner_name = meta:get_string("owner"),
|
||||
is_elevator = travelnet.is_elevator(node.name)
|
||||
}, player_name))
|
||||
end
|
||||
|
||||
-- a player clicked on something in the formspec hse was manually shown
|
||||
-- (back from help page, moved travelnet up or down etc.)
|
||||
function travelnet.form_input_handler(player, formname, fields)
|
||||
if formname ~= travelnet_form_name then return end
|
||||
if not player then return end
|
||||
|
||||
local name = player:get_player_name()
|
||||
player_formspec_data[name] = player_formspec_data[name] or {}
|
||||
local pos = player_formspec_data[name].pos
|
||||
|
||||
return travelnet.on_receive_fields(pos, nil, fields, player)
|
||||
end
|
||||
|
||||
-- most formspecs the travelnet uses are stored in the travelnet node itself,
|
||||
-- but some may require some "back"-button functionality (i.e. help page,
|
||||
-- move up/down etc.)
|
||||
minetest.register_on_player_receive_fields(travelnet.form_input_handler)
|
||||
|
||||
|
||||
function travelnet.reset_formspec()
|
||||
minetest.log("warning",
|
||||
"[travelnet] the travelnet.reset_formspec method is deprecated. "..
|
||||
"Run meta:set_string('station_network', '') to reset the travelnet.")
|
||||
end
|
||||
|
||||
|
||||
function travelnet.edit_formspec(pos, meta, player_name)
|
||||
if not pos or not meta or not player_name then
|
||||
return
|
||||
end
|
||||
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if not node then return end
|
||||
if travelnet.is_elevator(node.name) then
|
||||
return travelnet.edit_formspec_elevator(pos, meta, player_name)
|
||||
end
|
||||
|
||||
-- request changed data
|
||||
local formspec = travelnet.formspecs.edit_travelnet({
|
||||
owner_name = meta:get_string("owner"),
|
||||
station_network = meta:get_string("station_network"),
|
||||
station_name = meta:get_string("station_name")
|
||||
}, player_name)
|
||||
|
||||
-- show the formspec manually
|
||||
travelnet.show_formspec(player_name, formspec)
|
||||
end
|
||||
|
||||
|
||||
function travelnet.edit_formspec_elevator(pos, meta, player_name)
|
||||
if not pos or not meta or not player_name then
|
||||
return
|
||||
end
|
||||
|
||||
-- request changed data
|
||||
local formspec = travelnet.formspecs.edit_elevator(
|
||||
{ station_name = meta:get_string("station_name") },
|
||||
player_name
|
||||
)
|
||||
|
||||
-- show the formspec manually
|
||||
travelnet.show_formspec(player_name, formspec)
|
||||
end
|
||||
|
||||
function travelnet.show_formspec(player_name, formspec)
|
||||
if formspec and formspec ~= "" then
|
||||
minetest.show_formspec(player_name, travelnet_form_name, formspec)
|
||||
return true
|
||||
else
|
||||
minetest.show_formspec(player_name, "", "")
|
||||
return false
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user