1 -- Mod global namespace
6 -- Cache creative mode setting
8 local creative_mode_cache = minetest.settings:get_bool("creative_mode")
11 -- Update player property
12 -- Global to allow overriding
14 function binoculars.update_player_property(player)
15 local creative_enabled =
16 (creative and creative.is_enabled_for(player:get_player_name())) or
19 if creative_enabled or
20 player:get_inventory():contains_item("main", "binoculars:binoculars") then
21 player:set_properties({can_zoom = true})
23 player:set_properties({can_zoom = false})
28 -- Set player property 'on joinplayer'
30 minetest.register_on_joinplayer(function(player)
31 binoculars.update_player_property(player)
35 -- Cyclic update of player property
37 local function cyclic_update()
38 for _, player in ipairs(minetest.get_connected_players()) do
39 binoculars.update_player_property(player)
41 minetest.after(4.7, cyclic_update)
44 minetest.after(4.7, cyclic_update)
49 minetest.register_craftitem("binoculars:binoculars", {
50 description = "Binoculars\nUse with 'Zoom' key",
51 inventory_image = "binoculars_binoculars.png",
54 on_use = function(itemstack, user, pointed_thing)
55 binoculars.update_player_property(user)
62 minetest.register_craft({
63 output = "binoculars:binoculars",
65 {"default:obsidian_glass", "", "default:obsidian_glass"},
66 {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
67 {"default:obsidian_glass", "", "default:obsidian_glass"},