Minecraft-Commands
無論如何在第一個玩家加入和最後一個玩家離開我的 Minecraft 伺服器時輸入命令?
我們正在執行一個帶有 Serene Seasons 的改裝伺服器,我想在玩家線上時切換季節循環遊戲規則,然後在每個人離線時再次切換。我的伺服器儀表板上似乎沒有任何自動化任務功能,所以我想知道如何使用 Commandblocks 來做到這一點,或者是否有任何替代選項。
簡單的
如果您不關心它在每個刻度上執行,這是最簡單的解決方案:
/execute if entity @a[limit=1] run gamerule DoSeasonsCycle true /execute unless entity @a[limit=1] run gamerule DoSeasonsCycle false
之後我給出更複雜的唯一原因是我不確定這是否會淹沒伺服器日誌
有點額外
但是,如果您想一次性執行它,而不是使用數據包:
總結答案:
在您的聊天中執行一次:
/scoreboard objectives add AnyPlayer dummy /scoreboard players set $State AnyPlayer 0
在循環中:
/execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run gamerule DoSeasonsCycle true /execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run scoreboard players set $State AnyPlayer 1 /execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run gamerule DoSeasonsCycle false /execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run scoreboard players set $State AnyPlayer 0
解釋
我們需要一個記分牌來跟踪狀態:
- 0:沒有玩家
- 如果為0且有玩家:有人剛加入
- 1:至少一名球員
- 如果 1 並且沒有玩家:最後一個人離開
創建記分牌並將其初始狀態設置為 0:
/scoreboard objectives add AnyPlayer dummy /scoreboard players set $State AnyPlayer 0
這個想法是,如果您沒有玩家並且分數設置為 1(這意味著有),請執行命令,然後將分數設置為 0。相反的想法適用。
如果玩家離開:
/execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run (your gamerule command here, set to false) /execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run scoreboard players set $State AnyPlayer 0
玩家加入後:
/execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run (your gamerule command here, set to true) /execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run scoreboard players set $State AnyPlayer 1