Changer Gamemode selon les dimensions pour Serveur PVP - Factions

Finedeniel

Nouveau
20 Avril 2020
2
1
3
25
Bonjour à tous et toutes ami(e)s du cube !

Je voudrais faire un serveur pvp avec 2 factions, une première aillant son domicile dans l'END et une seconde aillant son domicile dans le NETHER. Pour ce faire j'aimerais que le gamemode des joueurs soit automatiquement switché lorsqu'ils passent dans la dimension adverse.
Je ne pense pas que ça soit possible de créer une commande qui permettrait de différencier si un joueur fait partie d'une équipe, et si il passe un certain portail, que ça le change de gamemode .....
J'ai alors eu l'idée que les joueurs dans l'Overworld soient en Survival par défaut mais si ils se trouvent dans l'END ou le NETHER ils changent de gamemode pour passer en Aventure, indépendamment de leur équipe.
Du coup chaque Equipe aurait dans sa base un command bloc qui permet de changer son gamemode vers Survival. Ainsi ils auraient la possibilité d'être en Survie dans leur monde respectif et dans l'overworld, mais seraient en mode aventure si ils vont dans le monde de l'équipe adverse.
Seulement je ne connais pas de command ou plug-in qui permettrait de changer de gamemode pour une dimension unique. Cela existe-t-il ?

C'est assez spécifique, mais Minecraft Java 'a de limite que l'imagination donc j'ai bon espoir !

Je précise que je suis en Snapshot 1.16 = 20w16a
La plus part des plug ins n'ont pas l'air d'être update dans cette version, j'aimerais utiliser les command bloc pour rester en Vanilla également ....

Merci d'avance à ceux et celles qui se pencheront sur mon problème !

J'ai continuer à chercher des solutions et je pense être sur une piste.
Serait-il possible de créer une chaîne de command bloc reliés par de la redstone qui marcherait ainsi :

Detect if player is from Team X -> Detect if player is in dimension X -> Change Gamemode to

Je devrais alors créer 2 chaînes (une pour chaque équipe, comprenant la dimension opposée)
ainsi qu'une chaîne pour leur retour dans l'overwworld (pour qu'ils puissent toujours être en mode survie dans le monde normal)

Etant donné qu'il faut passer par l'overworld pour passer de l'end au Nether, cela éviterait que certains se retrouvent en aventure dans leur monde.

Ce genre de détection est-il possible ? Quelqu'un connaîtrait-il/elle les commandes adaptées ?
 
Dernière édition:

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 380
2
1 063
297
22
Bretagne
Hey !
Donc je résume pour voir si j'ai bien compris :
  • 2 équipes (que j'appelerais ici Nether et End) associée aux deux dimensions du même nom
  • Si les membres de l'une vont dans la dimension de l'autre, alors le gamemode est adventure
  • Sinon, le gamemode est creative

Pour si c'est bien cela, c'est faisable en 4 command-blocks !
Déjà, il faut placer les command-blocks dans les chunks du spawn, pas dans les dimensions respectives.
Ensuite, je vais supposer ici que les équipes ont été crées par la commande /team.

Le système contiendra 5 command-blocks, deux par dimensions non neutres, et un pour l'Overworld.
Le premier command-block doit être en repeat et pointer vers le haut, on va y placer le premier switch de gamemode dans le Nether :
Code:
gamemode survival @a[nbt={Dimension:-1b},team=Nether]
Donc ici, si le joueur est dans l'équipe "Nether" et dans la dimension -1 (Nether) alors on le met en survie.

Les autres command-blocks sont en chain, always active et qui se place au-dessus des précédents pointant vers le haut.
Code:
gamemode adventure @a[nbt={Dimension:-1b},team=End]
De même pour l'équipe End mais ça les passe en adventure dans le Nether

Code:
gamemode survival @a[nbt={Dimension:1b},team=End]
Code:
gamemode adventure @a[nbt={Dimension:1b},team=Nether]
On fait la même avec la dimension de l'End

Code:
gamemode survival @a[nbt={Dimension:0b}]
Puis dans l'Overworld, on met tout le monde en survie.

Voilà voilà, en espérant que cela t'aide ;)
 
Dernière édition:
  • J'aime
Reactions: Detobel36

Finedeniel

Nouveau
20 Avril 2020
2
1
3
25
Yes merci beaucoup @Oromis !
J'avais fais des tests un peu différents en termes de commandes car je n'arrivais pas à faire les détections de dimensions, mais je m'en vais essayer ça de suite !

J'ai testé à la fois dans un monde en solo et sur un serveur privé, ça ne marche pas. J'aime bcp la technique car elle est élégante mais visiblement i la un soucis de détection de monde .... en fait même le command bloc qui est sensé me bloquer en survie dans l'overworld ne fait pas effet.
Il me marque "no player was found". j'ai alors testé de changer le @s en @a, mais pas de résultat plus probant.

En faisant mes tests à l'arrache hier soir j'ai trouvé une "solution" moins propre mais qui fonctionnait assez bien.
Au lieu de repérer si un jouer est dans une dimension particulière, j'ai préféré repérer si un jouer de la team End se trouvait à une certaine distance du command bloc (alors dans la dimension Nether) en mettant un radius assez vénère (10 000 blocs pour le test, je pensais l'agrandir pour le serveur final) et inversément.
C'est clairement moins propre, mais ça marchait dans mes tests en solo.

Je ne sais pas d'où vient le problème dans la solution proposée par @Oromis mais déjà merci d'avoir pris le temps de te pencher sur la question

Salut,


Oui totalement possible.

Mais tu aurais du posté dans la section "Command Block" ;) Tu aurais surement reçu l'aide du grand @Oromis


Cordialement,
Detobel36

Merci de l'info, je suis nouveau ici, et je n'ai pas pris le temps de fouiller assez profondément dans les différentes discussions, je m'en souviendrai !
 
  • J'aime
Reactions: Oromis

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 380
2
1 063
297
22
Bretagne
Hey !

En effet, j'avais laissé des @s au lieu des @a ! J'ai fixé la chose entre temps, mais tu avais déjà dû récupérer les commandes avant.
Je viens de trouver une petite coquille aussi dans mes commandes, la valeur est un Integer et pas un Byte, tu dois juste retirer tous les 'b' que j'ai mis après les valeurs '0', '-1' et '1' et les commandes fonctionneront ;)
 

Le__Geek

J'aime les datapacks et j'ai 13 ans :D
23 Février 2020
42
3
22
levraigeek.github.io
Au pire tu peut faire
Code:
/execute in minecraft:"monde" run gamemode @a "mode de jeu"
.
C'est tout simple. J’espère que ça t'as aidé !:D
J'ai remis une réponse parce que le topic n'est pas résolu. Pour le résoudre, il faut ajouter le tag "résolu". Si tu ne le savait pas, bien sûr.
 
Dernière édition:

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 380
2
1 063
297
22
Bretagne
Au pire tu peut faire
Code:
/execute in minecraft:"monde" run gamemode @a "mode de jeu"
.
C'est tout simple. J’espère que ça t'as aidé !:D
J'ai remis une réponse parce que le topic n'est pas résolu. Pour le résoudre, il faut ajouter le tag "résolu". Si tu ne le savait pas, bien sûr.
Ça ne fait qu'exécuter la commande dans la dimension précisée, ça changera le gamemode de tous le monde peu importe la dimension ^^