Minecraft-Commands

無論如何在第一個玩家加入和最後一個玩家離開我的 Minecraft 伺服器時輸入命令?

  • July 19, 2022

我們正在執行一個帶有 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

引用自:https://gaming.stackexchange.com/questions/398207