123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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
|