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