mirror of
				https://github.com/luanti-org/minetest_game.git
				synced 2025-10-30 23:25:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- binoculars/init.lua
 | |
| 
 | |
| -- Mod global namespace
 | |
| 
 | |
| binoculars = {}
 | |
| 
 | |
| -- Load support for MT game translation.
 | |
| local S = minetest.get_translator("binoculars")
 | |
| 
 | |
| 
 | |
| -- Update player property
 | |
| -- Global to allow overriding
 | |
| 
 | |
| function binoculars.update_player_property(player)
 | |
| 	local new_zoom_fov = 0
 | |
| 
 | |
| 	if player:get_inventory():contains_item(
 | |
| 			"main", "binoculars:binoculars") then
 | |
| 		new_zoom_fov = 10
 | |
| 	elseif minetest.is_creative_enabled(player:get_player_name()) then
 | |
| 		new_zoom_fov = 15
 | |
| 	end
 | |
| 
 | |
| 	-- Only set property if necessary to avoid player mesh reload
 | |
| 	if player:get_properties().zoom_fov ~= new_zoom_fov then
 | |
| 		player:set_properties({zoom_fov = new_zoom_fov})
 | |
| 	end
 | |
| end
 | |
| 
 | |
| 
 | |
| -- Set player property 'on joinplayer'
 | |
| 
 | |
| minetest.register_on_joinplayer(function(player)
 | |
| 	binoculars.update_player_property(player)
 | |
| end)
 | |
| 
 | |
| 
 | |
| -- Cyclic update of player property
 | |
| 
 | |
| local function cyclic_update()
 | |
| 	for _, player in ipairs(minetest.get_connected_players()) do
 | |
| 		binoculars.update_player_property(player)
 | |
| 	end
 | |
| 	minetest.after(4.7, cyclic_update)
 | |
| end
 | |
| 
 | |
| minetest.after(4.7, cyclic_update)
 | |
| 
 | |
| 
 | |
| -- Binoculars item
 | |
| 
 | |
| minetest.register_craftitem("binoculars:binoculars", {
 | |
| 	description = S("Binoculars") .. "\n" .. S("Use with 'Zoom' key"),
 | |
| 	inventory_image = "binoculars_binoculars.png",
 | |
| 	stack_max = 1,
 | |
| 	groups = {tool = 1},
 | |
| 
 | |
| 	on_use = function(itemstack, user, pointed_thing)
 | |
| 		binoculars.update_player_property(user)
 | |
| 	end,
 | |
| })
 | |
| 
 | |
| 
 | |
| -- Crafting
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	output = "binoculars:binoculars",
 | |
| 	recipe = {
 | |
| 		{"default:obsidian_glass", "", "default:obsidian_glass"},
 | |
| 		{"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
 | |
| 		{"default:obsidian_glass", "", "default:obsidian_glass"},
 | |
| 	}
 | |
| })
 |