local utils, mod_storage = ... if minetest.get_translator and minetest.get_translator ("lwcomponents") then utils.S = minetest.get_translator ("lwcomponents") elseif minetest.global_exists ("intllib") then if intllib.make_gettext_pair then utils.S = intllib.make_gettext_pair () else utils.S = intllib.Getter () end else utils.S = function (s) return s end end -- check for mesecon if minetest.global_exists ("mesecon") then utils.mesecon_supported = true utils.mesecon_state_on = mesecon.state.on utils.mesecon_state_off = mesecon.state.off utils.mesecon_receptor_on = mesecon.receptor_on utils.mesecon_receptor_off = mesecon.receptor_off utils.mesecon_default_rules = mesecon.rules.default utils.mesecon_flat_rules = mesecon.rules.flat else utils.mesecon_supported = false utils.mesecon_state_on = "on" utils.mesecon_state_off = "off" utils.mesecon_default_rules = { } utils.mesecon_flat_rules = { } -- dummies utils.mesecon_receptor_on = function (pos, rules) end utils.mesecon_receptor_off = function (pos, rules) end end -- check for digilines if minetest.global_exists ("digilines") then utils.digilines_supported = true utils.digilines_default_rules = digiline.rules.default utils.digilines_flat_rules = { { x = 1, y = 0, z = 0 }, { x = -1, y = 0, z = 0 }, { x = 0, y = 0, z = 1 }, { x = 0, y = 0, z = -1 }, } utils.digilines_receptor_send = digilines.receptor_send else utils.digilines_supported = false utils.digilines_default_rules = { } utils.digilines_flat_rules = { } -- dummy utils.digilines_receptor_send = function (pos, rules, channel, msg) end end -- check for lwdrops if minetest.global_exists ("lwdrops") then utils.lwdrops_supported = true utils.on_destroy = lwdrops.on_destroy utils.item_pickup = lwdrops.item_pickup utils.item_drop = lwdrops.item_drop else utils.lwdrops_supported = false -- dummy utils.on_destroy = function (itemstack) end utils.item_pickup = function (entity, cleanup) local stack = nil if entity and entity.name and entity.name == "__builtin:item" and entity.itemstring and entity.itemstring ~= "" then stack = ItemStack (entity.itemstring) if cleanup ~= false then entity.itemstring = "" entity.object:remove () end end return stack end utils.item_drop = function (itemstack, dropper, pos) return minetest.item_drop (itemstack, dropper, pos) end end -- check for unifieddyes if minetest.global_exists ("unifieddyes") then utils.unifieddyes_supported = true else utils.unifieddyes_supported = false end function utils.can_interact_with_node (pos, player) if not player or not player:is_player () then return false end if minetest.check_player_privs (player, "protection_bypass") then return true end local meta = minetest.get_meta (pos) if meta then local owner = meta:get_string ("owner") local name = player:get_player_name () if not owner or owner == "" or owner == name then return true end end return false end --