Plugin Faire des classes personalisées

Nsler_

Aventurier
24 Mai 2020
7
0
1
33
Bjr,
J'ai créé un serveur en 1.15.2 pour pouvoir jouer avec mes potes, et j'aimerait mettre en place un système de classes. Je m'explique:
-Chaque joueur aura une classe personalisée qu'il est le seul a avoir. (ex: guerrier, pyro-barbare, mage, etc)
-Chaque joueur, selon sa classe, bénéficie de:
-des items personnalisés, incassables et qu'ils ne perdent pas a leur mort (contrairement au reste de leur inventaire).
-des effets de potions qu'ils ne perdent pas a la mort.

J'ai cherché comment faire ce genre de choses mais je n'ai pas trouvé de méthode efficace.
Là ou je galère le plus, c'est de faire garder les objets et les effets quand on meurt.
Je peut utiliser des plugins des command blocks. (J'utiliserait le plus pratique)

Pour vous faciliter les explications, vous pourrez prendre comme exemple la classe pyro-barbare:
-Hache en diam's incassable et fire aspect 2
-briquet incassable
-force 2
-résistance au feu
Je compte sur vous pour me donner des solutions
Merci d'avance a tt ceux qui répondent

PS: si y'a déja une discution a ce sujet que je n'aurait pas vu, redirigez-moi vers cette discusion au lieu de vous faire chier a me répondre.
 
Dernière édition:

Karamouche

Développeur en beta
24 Avril 2020
10
2
4
www.youtube.com
Salut,
Avec un plugin je pense que c'est faisable. Tu as seulement à faire que des qu'un joueur meurt, tu regardes sa classe, et tu lui donnes les items/effets associés. Je pense que c'est également faisable en command block mais c'est selon moi moins pratique.
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 531
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr

Nsler_

Aventurier
24 Mai 2020
7
0
1
33
Salut,
Avec un plugin je pense que c'est faisable. Tu as seulement à faire que des qu'un joueur meurt, tu regardes sa classe, et tu lui donnes les items/effets associés. Je pense que c'est également faisable en command block mais c'est selon moi moins pratique.
C'est exactement ca que je cherche a faire.
Tu saurait me dire quel plugin permetterait de faire ca?

Sinon, pour @Detobel36, le plugin permet de garder des items d'un certain slot. je voudrait plutot garder certains items. Pour les commands blocks, dans le lien que tu m'a donné, ils utilisent la commande /testfor. Or, elle n'existe plus en 1.15
Et si je n'ai pas posté dans les command blocks, c'est que je n'avait pas envie de poster 2 messages identiques.
 

Karamouche

Développeur en beta
24 Avril 2020
10
2
4
www.youtube.com
C'est exactement ca que je cherche a faire.
Tu saurait me dire quel plugin permetterait de faire ca?

Sinon, pour @Detobel36, le plugin permet de garder des items d'un certain slot. je voudrait plutot garder certains items. Pour les commands blocks, dans le lien que tu m'a donné, ils utilisent la commande /testfor. Or, elle n'existe plus en 1.15
Et si je n'ai pas posté dans les command blocks, c'est que je n'avait pas envie de poster 2 messages identiques.
Tu peux, par exemple, utiliser un plugin de kit comme celui-ci, et ensuite gérer les permissions des kits en fonction de la classe des joueurs (si tu ne sais pas gérer les permissions avec spigot, tu peux utiliser un plugin comme LuckPerms)
 

Nsler_

Aventurier
24 Mai 2020
7
0
1
33
Effectivement, j'ai trouvé un plugin de kits: KitPvP. je ne l'ai pas encore tésté mais il permet apparement de faire des kits avec des effets. Donc je vais le tester et voir si ca répond a ce que je veux.
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Hé ho!

Le message qui suit est écrit en tant que "command-blocker", je n'ai malheureusement pas assez d'expérience pour t'aiguiller sur des pistes du côté des plugins, sinon de te dire que c'est très sûrement possible.
Je ne connais pas ton niveau en commandes vanilla alors ça se pourrait qu'il y aie des choses que tu ne comprennes pas, je pourrais te faire des exemples plus détaillés si tu le souhaites.
J'ai également vu plusieurs fois des situations où les serveurs modifiaient les commandes vanilla (syntaxe 1.8 sur un serveur 1.15, par exemple). Je n'ai donc aucune garantie du fonctionnement de ce que je te propose.


Donc déjà, items incassables, personnalisés, gardés à la mort, effets de potion permanents... tout ce que tu demandes est possible avec quelques blocs de commandes (ou un datapack)

Déjà, il faut un moyen efficace de stocker les classes de chaque joueur.
Je penserais à un objectif dummy "ClassID", et tu mettrais un score correspondant à l'ID de la classe choisie (par exemple, pyro-barbare = 1, mage = 2, etc).

Le joueur ayant un ClassID de 1 serait donc pyro-barbare.
C'est plus simple que de créer un paquet de tags, et en plus, tu peux ajouter environ 4 milliards de classes pour un seul objectif (autant dire que tu peux mettre toutes les classes que tu veux)
Les items peuvent avoir le tag "Unbreakable:1", qui ignore totalement les pertes de durabilité
Déjà, donner directement cette capacité à un item est impossible (vanilla). Cependant, on peut mettre en place une alternative. Exemple avec la hache de pyrobabar :fou: :

-Donner un tag custom à l'item : #CustomItem:"hache_pyro"#
-Chaque tick, pour chaque pyro-barbare, tu testes s'il a l'item tagué #CustomItem:"hache_pyro"# dans son inventaire. Tu dois également tester si son inventaire est plein (possible en testant si le joueur a moins de 41 données d'items dans son inventaire, soit le nombre de slots disponibles). S'il n'a pas la hache et que son inventaire n'est pas plein, tu lui en give simplement une autre. Donc quand le pyro perd son inventaire à la mort, il réobtient une hache une fois ressuscité.
-Important : ajouter malédiction de disparition à l'item; sinon, la hache drop à la mort et le gars peut s'amuser à la dupliquer. Il est possible de masquer la malédiction pour sembler plus "vrai"
Bien évidemment, c'est quelque chose à éviter; un membre drop son armure à toute sa team, qu'il réobtient automatiquement, etc.
La solution : Chaque tick, il faut kill tous les items ayant le tag Item.tag.CustomItem (la donnée d'un objet custom, évoquée en 2.2). Le joueur ayant droppé l'item le recevra à nouveau de toute façon avec le setup en 2.2.

On peut complêtement customiser les items même en vanilla : nom, description, avec des symboles spéciaux, couleurs et autres mises en forme.
Ici, pas trop compliqué : La meilleure solution est d'appliquer l'effet voulu selon la classe à chaque tick avec une durée d'une seconde. Ceci résoud la problématique de la mort, mais également le danger que le joueur perde ses effets (avec un seau de lait, par exemple).


Enfin point de vue vanilla, ça ressemblerait à ça.

Mais évidemment, comme à tous ceux qui cherchent un système pour leur serveur, je te dirais que les plugins ont vraiment beaucoup plus de possibilités que les commandes vanilla, et sont à prioriser.
 
  • J'aime
Reactions: Detobel36

Nsler_

Aventurier
24 Mai 2020
7
0
1
33
Oui, vraiment, merci, je n'avait pas du tout pensé a tester si il a ou pas les items. Seulement, je ne sais pas du tout comment faire. avec ta technique, pour le pyro-barbare ca donnerait ca:
dans un command block reapeat:
/execute as @a[{scores={classe=1}},c'est là que je ne sais pas quoi mettre] at @s run give @p give @a minecraft:diamond_axe 1 0 {Unbreakable:1,ench:[{id:20,lvl:2}]}
Mais comme tu le vois, il me manque une info. si tu peut me la donner.
d'ailleure, on peut remplacer "{scores={classe=1}}" par "{tag=pyrobarbare}", ca évite d'avoir a créer une scoreboard.

sinon, pour les effets, c'est effectivement la méthode la plus simple mais pourrait-tu me dire comment faire pour que ca n'afiche pas masse de message dans le tchat? pasque ca risque d'etre chiant. si ca peut t'aider, on utilise la syntaxe basique de la 1.15.2, on a rien modifié la dessus
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Pour les messages dans le chat, c'est /gamerule commandBlockOutput false (ou sendCommandFeedback, les deux en false, c'est toujours mieux). Elles désactivent respectivement les messages de status des blocs de commande et les messages de status de joueurs.

Pour le tag "pyrobarbare" plutôt que le scoreboard, c'est à ton choix.
J'ai évoqué le scoreboard parce que ça évite d'avoir des dizaines de tags partout, et en plus, un joueur ne peut avoir qu'un seul score par objectif, donc pas de "double-classe" (quoique si c'est ce que tu veux, alors oui, les tags seraient mieux)


Pour qu'on teste spécifiquement la hache du pyro, le plus simple est d'y ajouter un tag custom (dans cet exemple, %CustomItem:"PyroAxe"%) :
Code:
give @a minecraft:diamond_axe 1 0 {CustomItem:"PyroAxe",Unbreakable:1,ench:[{id:20,lvl:2}]}

Pour la remplacer, tu n'auras qu'à utiliser cette commande :
Code:
/execute as @a[scores={classe=1}] unless data entity @s Inventory[{tag:{CustomItem:"PyroAxe"}}] run give @s minecraft:diamond_axe{CustomItem:"PyroAxe",Unbreakable:1,Enchantments:[{id:20,lvl:2}]}
Attention : La commande que tu m'as envoyé n'avait visiblement pas la même syntaxe que la 1.15 java en solo. J'ai changé quelques éléments, notamment retiré "1 0" après "diamond_axe", et remplacé "ench" par "Enchantments".
Ma nouvelle commande est fonctionnelle en 1.15 solo mais je crois que tu devras la modifier selon la compatibilité de ton serveur.