1 votes

Y a-t-il un moyen d'entrer une commande lorsque le premier joueur rejoint et que le dernier joueur quitte mon serveur Minecraft?

Nous exploitons un serveur moddé avec Serene Seasons et j'aimerais activer la règle de jeu du cycle des saisons chaque fois que des joueurs sont en ligne, puis à nouveau lorsque tout le monde est hors ligne. Je ne semble pas avoir de fonctionnalités de tâches automatisées sur mon tableau de bord de serveur, donc je me demande comment je pourrais le faire avec des commandblocks ou s'il existe d'autres options alternatives.

2voto

BunnyMerz Points 1286

Simple

Si vous ne vous souciez pas de le faire fonctionner à chaque coche, voici la solution la plus simple:

/execute if entity @a[limit=1] run gamerule DoSeasonsCycle true
/execute unless entity @a[limit=1] run gamerule DoSeasonsCycle false

La seule raison pour laquelle je donne une solution plus complexe par la suite est que je ne suis pas sûr si cela inonderait les journaux du serveur.


Un peu plus

Mais si vous voulez l'exécuter une seule fois, et ne pas utiliser de datapacks:

Réponse en bref:

Exécutez une fois dans votre chat:

/scoreboard objectives add AnyPlayer dummy
/scoreboard players set $State AnyPlayer 0

En boucle:

/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

Explication

Nous avons besoin d'un scoreboard pour suivre les états:

  • 0: Aucun joueur
  • Si 0 et qu'il y a un joueur : Quelqu'un vient de se connecter
  • 1: Au moins un joueur
  • Si 1 et qu'il n'y a pas de joueur : Dernière personne partie

Créez le scoreboard et définissez son état initial à 0:

/scoreboard objectives add AnyPlayer dummy
/scoreboard players set $State AnyPlayer 0

L'idée est, si vous n'avez pas de joueurs et que le score est défini à 1 (ce qui signifie qu'il y en avait), exécutez les commandes suivies de réinitialiser le score à 0. L'idée opposée s'applique.

Si les joueurs partent:

/execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run (votre commande gamerule ici, définie sur false)
/execute if score $State AnyPlayer matches 1 unless entity @a[limit=1] run scoreboard players set $State AnyPlayer 0

Une fois qu'un joueur rejoint:

/execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run (votre commande gamerule ici, définie sur true)
/execute if score $State AnyPlayer matches 0 if entity @a[limit=1] run scoreboard players set $State AnyPlayer 1

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X