-- player_detector70 --
-- CONFIGURATION --
local detectionRange = 70 -- Detection range in blocks
local redstoneSide = "front" -- Side where redstone signal is sent
local checkDelay = 2 -- Delay between each detection (in seconds)
-- FINDING THE PLAYER DETECTOR AUTOMATICALLY --
local detector = nil
for _, name in ipairs(peripheral.getNames()) do
if peripheral.getType(name) == "player_detector" then
detector = peripheral.wrap(name)
break
end
end
if not detector then
print("No player detector found!")
return
end
print("Player detector found on " .. peripheral.getName(detector))
print("Monitoring players in range " .. detectionRange .. "...")
-- STATE TRACKING --
local redstoneState = false
-- FUNCTION TO SET REDSTONE CLEANLY --
local function setRedstone(state)
if redstoneState ~= state then
redstone.setOutput(redstoneSide, state)
redstoneState = state
print("Redstone " .. (state and "ON" or "OFF"))
end
end
-- MAIN LOOP --
while true do
local players = detector.getPlayersInRange(detectionRange)
local detected = #players > 0
if detected then
setRedstone(true)
else
setRedstone(false)
end
sleep(checkDelay)
end