Skip to content

Commit 08c60cf

Browse files
committed
Binoculars: Only set property if necessary to reduce mesh reloading
1 parent 9596d00 commit 08c60cf

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

mods/binoculars/init.lua

+12-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
binoculars = {}
44

55

6-
-- Cache creative mode setting
6+
-- Detect creative mod
7+
8+
local creative_mod = minetest.get_modpath("creative")
9+
10+
11+
-- Cache creative mode setting as fallback if creative mod not present
712

813
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
914

@@ -13,14 +18,13 @@ local creative_mode_cache = minetest.settings:get_bool("creative_mode")
1318

1419
function binoculars.update_player_property(player)
1520
local creative_enabled =
16-
(creative and creative.is_enabled_for(player:get_player_name())) or
21+
(creative_mod and creative.is_enabled_for(player:get_player_name())) or
1722
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})
23+
-- Only set property if necessary to avoid player mesh reload
24+
local new_can_zoom = creative_enabled or player:get_inventory():contains_item(
25+
"main", "binoculars:binoculars")
26+
if player:get_properties().can_zoom ~= new_can_zoom then
27+
player:set_properties({can_zoom = new_can_zoom})
2428
end
2529
end
2630

0 commit comments

Comments
 (0)