Binoculars / Map mods: Clarify key-activation of items in descriptions
[oweals/minetest_game.git] / mods / binoculars / init.lua
1 -- Mod global namespace
2
3 binoculars = {}
4
5
6 -- Cache creative mode setting
7
8 local creative_mode_cache = minetest.settings:get_bool("creative_mode")
9
10
11 -- Update player property
12 -- Global to allow overriding
13
14 function binoculars.update_player_property(player)
15         local creative_enabled =
16                 (creative and creative.is_enabled_for(player:get_player_name())) or
17                 creative_mode_cache
18
19         if creative_enabled or
20                         player:get_inventory():contains_item("main", "binoculars:binoculars") then
21                 player:set_properties({can_zoom = true})
22         else
23                 player:set_properties({can_zoom = false})
24         end
25 end
26
27
28 -- Set player property 'on joinplayer'
29
30 minetest.register_on_joinplayer(function(player)
31         binoculars.update_player_property(player)
32 end)
33
34
35 -- Cyclic update of player property
36
37 local function cyclic_update()
38         for _, player in ipairs(minetest.get_connected_players()) do
39                 binoculars.update_player_property(player)
40         end
41         minetest.after(4.7, cyclic_update)
42 end
43
44 minetest.after(4.7, cyclic_update)
45
46
47 -- Binoculars item
48
49 minetest.register_craftitem("binoculars:binoculars", {
50         description = "Binoculars\nUse with 'Zoom' key",
51         inventory_image = "binoculars_binoculars.png",
52         stack_max = 1,
53
54         on_use = function(itemstack, user, pointed_thing)
55                 binoculars.update_player_property(user)
56         end,
57 })
58
59
60 -- Crafting
61
62 minetest.register_craft({
63         output = "binoculars:binoculars",
64         recipe = {
65                 {"default:obsidian_glass", "", "default:obsidian_glass"},
66                 {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
67                 {"default:obsidian_glass", "", "default:obsidian_glass"},
68         }
69 })