Commande pour modifier l'item qui est dans la Main
-
Ta fonction getAliases renvoies null, ce qui cause un npe.
Il faut renvoyer une liste valide. -
merci ça marche maintenant !

Mais je n’arrive pas a trouver comment modifier le nom de l’item qui est dans la main,
j’ai essayer ça mais ça ne marche pas :public void execute(MinecraftServer server, ICommandSender sender, String[] strings) throws CommandException { if(sender instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) sender; String name = player.getActiveHand().MAIN_HAND.name(); player.inventory.getDisplayName().equals(name); } }mais j’aimerais aussi pouvoir mettre le nom de couleur dans laquelle on veut le nom,
par exemple : /rename NomDelItem Couleur EnGras(true ou false)
Est ce que l’on peut le faire ? -
player.inventory.getDisplayName()retourne le nom de l’inventaire et.equalsc’est une méthode qui permet de comparer deux objets.Donc là forcement oui, ton code ne va rien faire.
Il faut plutôt quelque chose comme ceci :
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND); // obtient l'item dans la main principale stack.setStackDisplayName(displayName); // change le nom affichéPour récupérer les arguments tapés, c’est ta variable
stringsqui les contient.
strings[0]-> le premier argument (NomDelItem dans l’exemple que tu as donné)
strings[1]-> le deuxièmeargument (Couleur dans l’exemple que tu as donné)
etc…
Et il faut bien sur vérifier questrings.lengthait la bonne valeur avant d’utiliser le string à l’index voulu (sinon ça va déclencher uneArrayOutOfBoundException -
yes merci ça marche

mais je n’arrive pas a ajouter la couleur :public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { if(sender instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) sender; ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND); // obtient l'item dans la main principale TextFormatting color = TextFormatting.valueOf(args[1]); TextFormatting effect = TextFormatting.valueOf(args[2]); stack.setStackDisplayName(args[0]); // change le nom affiché } }J’ai essayer avec le text formatting mais sans succès (ou alors je l’ai mal fait
)
une idée ? -
Le couleur tu veux que l’utilisateur l’écrit avec quel format ? §1 §2 etc. ? ou RED, BLUE, etc. ?
-
plutot en red, blue, bold,obfuscated
j’aurais voulu additionner comme ça :
/rename [NomDel’Item] blue bold underline -
Pour ça va falloir faire une boucle qui pour chaque args vérifie s’il existe dans les EnumFormatting, et si oui retourner le texte de formatage qui va avec.
-
et je pourrais faire ça comment par exemple ?
-
Salut, c’est une opération assez simple :
def : style Pour i allant de 1 à (taille(args) - 1): Si args[i] dans valeurs(EnumFormatting) : def : format = récupérerEnumFormattingDepuisNom(args[i]) style.ajouterFormat(format)Voilà, plus qu’à traduire cette logique en Java.
-
le truc c’est que je suis en train d’apprendre le java et donc je comprends pas trop ou plutot je ne sais pas comment le traduire en java

tu pourrais m’expliquer ? -
yo sinon tu utilise comme dans tout les plugins le caractere
&dans le message ensuite tu le remplace par un§et minecraft fait le formatage tout seul x)player.getHeldItemMainhand().setStackDisplayName(name.replace('&', '§'));si tu comprends toujours pas comment faire passe sur le discord et je peux vocal pour plus d’explications x)