Plugin [Problème] Programmation plugin (Débutant)

Dosss29

Aventurier
26 Juillet 2019
1
0
2
24
Bonjour, Bonsoir;

Je vais essayer d’être le plus explicite possible.
Je me suis mis à la programmation de plugin avec des cours est des vidéos.(J'utilise IntelliJ IDE)
Depuis hier matin je suis bloqué sur un problème dans mon code(j'ai recopié le code du tuto) ci dessous.
Je mais la class Main et la class CyberPlugListeners la ou est le problème.
Je sais pas trop comment expliquer mon problème car je ne le comprend pas. En bref le problème est au dernier if de la class CyberPluginListeners pour it.hasItemMeta().setDisplayName() il me dise "Cannot resolve method setDisplayName()" j'ai cherché sur internet je n'ai rien trouvé j'ai relu x fois le programme je ne trouve rien qui cloche(a mon niveau). Si quelque eux bien m'aider je le remercie. Tant de blabla pour pas grand chose je pense

class Main:
Code:
package fr.doss.cyberplugin;

import fr.doss.cyberplugin.commands.CommandSpawn;
import fr.doss.cyberplugin.commands.CommandTest;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        getCommand("alert").setExecutor(new CommandTest());
        getCommand("spawn").setExecutor(new CommandSpawn());
        getServer().getPluginManager().registerEvents(new CyberPlugListeners(), this);
    }

    @Override
    public void onDisable() {
        System.out.println("Fin du programme");
    }
}

class CyberPluginListeners (la ou il y a le problème):
Code:
package fr.doss.cyberplugin;

import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import java.util.Arrays;


public class CyberPlugListeners implements Listener {

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {

        Player player = event.getPlayer();
        player.getInventory().clear();

        ItemStack customsword = new ItemStack(Material.IRON_SWORD, 2);
        ItemMeta customM = customsword.getItemMeta();
        customM.setDisplayName("§eTrop belle l'épé");
        customM.setLore(Arrays.asList("test", "test", "test" ));
        customM.addEnchant(Enchantment.DAMAGE_ALL, 200, true);
        customM.addItemFlags(ItemFlag.HIDE_ENCHANTS);
        customsword.setItemMeta(customM);

        player.getInventory().setItemInMainHand(customsword);

        ItemStack customwool = new ItemStack(Material.WOOL, 8, (byte)14);

        player.getInventory().setHelmet(customwool);

        player.updateInventory();


    }

    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Player player= event.getPlayer();
        Action action = event.getAction();
        ItemStack it = event.getItem();

        if (it == null) return;

        if (it.getType() == Material.COMPASS) {
            if (action == Action.RIGHT_CLICK_AIR) {
                player.sendMessage("test");
            }

        }
        if(it.getType() == Material.IRON_SWORD && it.hasItemMeta() && it.hasItemMeta().setDisplayName() && it.hasItemMeta().hasDisplayName().equalsIgnoreCase("§eTrop belle l'épé")) {
            player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 2));
        }
    }
}
 

Detobel36

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

Soit le tuto est mauvais, soit tu as mal recopié...
Voici la documentation de "ItemStack" (ce qui est stocké dans ta variable "it"): https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html
Tu peux voir que la fonction "hasItemMeta" renvoie un boolean (ici: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html#hasItemMeta-- ). Donc un "true" ou "false".
Logiquement, ils n'ont pas de méthode "setDisplayName"....

C'est pas un "hastItemMeta" que tu dois faire, c'est un "getItemMeta": https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html#getItemMeta--

Petit conseil: avant de te lancer dans la création de plugin. Suit un cours pour développé du Java... Sinon tu n'y arrivera pas.


Cordialement,
Detobel36