--- /dev/null
+-- Mod global namespace
+
+map = {}
+
+
+-- Cache creative mode setting
+
+local creative_mode_cache = minetest.settings:get_bool("creative_mode")
+
+
+-- Update HUD flags
+-- Global to allow overriding
+
+function map.update_hud_flags(player)
+ local creative_enabled =
+ (creative and creative.is_enabled_for(player:get_player_name())) or
+ creative_mode_cache
+
+ local minimap_enabled = creative_enabled or
+ player:get_inventory():contains_item("main", "map:mapping_kit")
+ local radar_enabled = creative_enabled
+
+ player:hud_set_flags({
+ minimap = minimap_enabled,
+ minimap_radar = radar_enabled
+ })
+end
+
+
+-- Set HUD flags 'on joinplayer'
+
+minetest.register_on_joinplayer(function(player)
+ map.update_hud_flags(player)
+end)
+
+
+-- Cyclic update of HUD flags
+
+local function cyclic_update()
+ for _, player in ipairs(minetest.get_connected_players()) do
+ map.update_hud_flags(player)
+ end
+ minetest.after(7, cyclic_update)
+end
+
+minetest.after(7, cyclic_update)
+
+
+-- Mapping kit item
+
+minetest.register_craftitem("map:mapping_kit", {
+ description = "Mapping Kit",
+ inventory_image = "map_mapping_kit.png",
+ stack_max = 1,
+ groups = {flammable = 3},
+ -- For instant update of HUD flags
+ on_use = function(itemstack, user, pointed_thing)
+ map.update_hud_flags(user)
+ end,
+})
+
+
+-- Crafting
+
+minetest.register_craft({
+ output = "map:mapping_kit",
+ recipe = {
+ {"default:glass", "default:paper", "default:stick"},
+ {"default:steel_ingot", "default:paper", "default:steel_ingot"},
+ {"default:wood", "default:paper", "dye:black"},
+ }
+})
+
+
+-- Fuel
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "map:mapping_kit",
+ burntime = 5,
+})