123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- local S = minetest.get_translator("travelnet")
- local player_formspec_data = travelnet.player_formspec_data
- travelnet.actions = {}
- function travelnet.actions.navigate_page(node_info, fields, _)
- local page = 1
- local network = travelnet.get_network(node_info.props.owner_name, node_info.props.station_network)
- local station_count = 0
- for _ in pairs(network) do
- station_count = station_count+1
- end
- local page_size = 7*3
- local pages = math.ceil(station_count/page_size)
- if fields.last_page then
- page = pages
- else
- local current_page = tonumber(fields.page_number)
- if current_page then
- if fields.next_page then
- page = math.min(current_page+1, pages)
- elseif fields.prev_page then
- page = math.max(current_page-1, 1)
- end
- end
- end
- return true, { formspec = travelnet.formspecs.primary, options = { page_number = page } }
- end
- function travelnet.actions.remove_station(node_info, _, player)
- local player_name = player:get_player_name()
- -- abort if protected by another mod
- if minetest.is_protected(node_info.pos, player_name)
- and not minetest.check_player_privs(player_name, { protection_bypass = true })
- then
- minetest.record_protection_violation(node_info.pos, player_name)
- return false,
- S("This @1 belongs to @2. You can't remove it.", node_info.props.description, node_info.props.owner_name)
- end
- -- players with travelnet_remove priv can dig the station
- if
- not minetest.get_player_privs(player_name)[travelnet.remove_priv]
- -- the function travelnet.allow_dig(..) may allow additional digging
- and not travelnet.allow_dig(player_name, node_info.props.owner_name, node_info.props.station_network, node_info.pos)
- -- the owner can remove the station
- and node_info.props.owner_name ~= player_name
- -- stations without owner can be removed/edited by anybody
- and node_info.props.owner_name ~= ""
- then
- return false,
- S("This @1 belongs to @2. You can't remove it.", node_info.props.description, node_info.props.owner_name)
- end
- -- remove station
- local player_inventory = player:get_inventory()
- if not player_inventory:room_for_item("main", node_info.node.name) then
- return false, S("You do not have enough room in your inventory.")
- end
- -- give the player the box
- player_inventory:add_item("main", node_info.node.name)
- -- remove the box from the data structure
- travelnet.remove_box(node_info.pos, nil, node_info.meta:to_table(), player)
- -- remove the node as such
- minetest.remove_node(node_info.pos)
- return true
- end
- function travelnet.actions.edit_station(node_info, _, player)
- local player_name = player:get_player_name()
- -- abort if protected by another mod
- if minetest.is_protected(node_info.pos, player_name)
- and not minetest.check_player_privs(player_name, { protection_bypass=true })
- then
- minetest.record_protection_violation(node_info.pos, player_name)
- return false, S("This @1 belongs to @2. You can't edit it.",
- node_info.props.description,
- tostring(node_info.props.owner_name)
- )
- end
- return true, {
- formspec = node_info.props.is_elevator
- and travelnet.formspecs.edit_elevator
- or travelnet.formspecs.edit_travelnet
- }
- end
- function travelnet.actions.update_station(node_info, fields, player)
- if node_info.props.is_elevator then
- return travelnet.actions.update_elevator(node_info, fields, player)
- else
- return travelnet.actions.update_travelnet(node_info, fields, player)
- end
- end
- function travelnet.actions.toggle_door(node_info, _, player)
- travelnet.open_close_door(node_info.pos, player, "toggle")
- return true
- end
- function travelnet.actions.instruct_player(_, _, player)
- minetest.chat_send_player(player:get_player_name(), S("Please click on the target you want to travel to."))
- return true
- end
- function travelnet.actions.end_input(_, _, player)
- player_formspec_data[player:get_player_name()] = nil
- return true
- end
- function travelnet.actions.return_to_form()
- return true, { formspec = travelnet.formspecs.current }
- end
- travelnet.actions.repair_station = dofile(travelnet.path .. "/actions/repair_station.lua")
- travelnet.actions.change_order = dofile(travelnet.path .. "/actions/change_order.lua")
- travelnet.actions.add_station = dofile(travelnet.path .. "/actions/add_station.lua")
- travelnet.actions.transport_player = dofile(travelnet.path .. "/actions/transport_player.lua")
- travelnet.actions.update_elevator = dofile(travelnet.path .. "/actions/update_elevator.lua")
- travelnet.actions.update_travelnet = dofile(travelnet.path .. "/actions/update_travelnet.lua")
|