player_api: Prevent knockback when player is set as attached
[oweals/minetest_game.git] / mods / map / init.lua
1 -- map/init.lua
2
3 -- Mod global namespace
4
5 map = {}
6
7
8 -- Load support for MT game translation.
9 local S = minetest.get_translator("map")
10
11
12 -- Cache creative mode setting
13
14 local creative_mode_cache = minetest.settings:get_bool("creative_mode")
15
16
17 -- Update HUD flags
18 -- Global to allow overriding
19
20 function map.update_hud_flags(player)
21         local creative_enabled =
22                 (creative and creative.is_enabled_for(player:get_player_name())) or
23                 creative_mode_cache
24
25         local minimap_enabled = creative_enabled or
26                 player:get_inventory():contains_item("main", "map:mapping_kit")
27         local radar_enabled = creative_enabled
28
29         player:hud_set_flags({
30                 minimap = minimap_enabled,
31                 minimap_radar = radar_enabled
32         })
33 end
34
35
36 -- Set HUD flags 'on joinplayer'
37
38 minetest.register_on_joinplayer(function(player)
39         map.update_hud_flags(player)
40 end)
41
42
43 -- Cyclic update of HUD flags
44
45 local function cyclic_update()
46         for _, player in ipairs(minetest.get_connected_players()) do
47                 map.update_hud_flags(player)
48         end
49         minetest.after(5.3, cyclic_update)
50 end
51
52 minetest.after(5.3, cyclic_update)
53
54
55 -- Mapping kit item
56
57 minetest.register_craftitem("map:mapping_kit", {
58         description = S("Mapping Kit") .. "\n" .. S("Use with 'Minimap' key"),
59         inventory_image = "map_mapping_kit.png",
60         stack_max = 1,
61         groups = {flammable = 3},
62
63         on_use = function(itemstack, user, pointed_thing)
64                 map.update_hud_flags(user)
65         end,
66 })
67
68
69 -- Crafting
70
71 minetest.register_craft({
72         output = "map:mapping_kit",
73         recipe = {
74                 {"default:glass", "default:paper", "group:stick"},
75                 {"default:steel_ingot", "default:paper", "default:steel_ingot"},
76                 {"group:wood", "default:paper", "dye:black"},
77         }
78 })
79
80
81 -- Fuel
82
83 minetest.register_craft({
84         type = "fuel",
85         recipe = "map:mapping_kit",
86         burntime = 5,
87 })