[Bug] Java plugin (débutant)

_AoxO_

Bucheron
4 Novembre 2017
6
0
12
20
Bonjours à tous et a toutes,
J'ai actuellement un problème avec le code si dessous

Code:
package fr.gaby.menus;

import java.util.Arrays;

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

public class Listener extends JavaPlugin {

   
   @EventHandler
   public void onJoin(PlayerJoinEvent eventjoin) {
       
       Player player = eventjoin.getPlayer();
       
       player.getInventory().clear();
       
       player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 2, true));
       player.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, Integer.MAX_VALUE, Integer.MAX_VALUE, true));
       player.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, Integer.MAX_VALUE, 0, true));
       
       ItemStack customPlume = new ItemStack(Material.FEATHER, 1);
       ItemMeta customP = customPlume.getItemMeta();
       
       customP.setDisplayName("§l§bSpeed");
       customP.setLore(Arrays.asList("Un Menu pour aller plus vite !","Par Gaby ;)"));
       customP.addEnchant(Enchantment.LUCK, 1, true);
       customP.addItemFlags(ItemFlag.HIDE_ENCHANTS);
       customPlume.setItemMeta(customP);       
       
           player.getInventory().addItem(customPlume);
           player.updateInventory();
   }
   
   
   @EventHandler
   public void onInteract(PlayerInteractEvent clic){
       
       Player player = clic.getPlayer();
       Action action = clic.getAction();
       ItemStack item = clic.getItem();
       
       if(item == null) return;
       
       if(item.getType() == Material.FEATHER && item.hasItemMeta() && item.getItemMeta().getDisplayName().equalsIgnoreCase("§l§bSpeed")) {
           if(action != Action.LEFT_CLICK_AIR && action != Action.LEFT_CLICK_BLOCK ){
               
               Inventory inv = Bukkit.createInventory(null, 9, "§8Menu speed");   
               
               player.openInventory(inv);
           }
       }
   }
   
}

Le problème avec ce code qui m'a l'air correct c'est qu'il se lance correctement mais malgré cela quand je me connecte mon inventaire n'est pas nettoyé, les effets ne s'appliquent pas et la plume ne m'est pas give.
Merci de votre attention et de vos réponses : )
 

DiscowZombie

Développeur
Staff
Modérateur
Support
2 Mars 2017
2 659
1
931
298
Alsace
www.discowzombie.fr
Salut,

bon, il y a plusieurs problèmes.
  • Tout d’abord, ta classe extends JavaPlugin ce qui n'a absolument aucun sens. Étendre JavaPlugin signifie que c'est la classe principale du plugin, le points d'entrée, généralement celle dans laquelle on fait les premières logiques et traitements (celle aussi où tu as classiquement le onEnable). Ta classe ici semble être un Listener (écouteur d’éventements), elle ne doit donc pas étendre JavaPlugin. De plus, un plugin valide = une classe qui étend JavaPlugin, ni plus, ni moins.
  • Ensuite, ta classe étant un Listener, elle doit implémenté l'interface Listener de Bukkit. Cela permet d'enregistrer les éventements, je vais y venir au prochain point.
  • Et enfin, tes éventements ne sont pas enregistrés auprès de Bukkit, donc c'est tout à fait normal que rien ne se passe ! Pour les enregistrer, tu dois appeler la méthode PluginManager#registerEvents(listener, plugin) lorsque ton plugin se charge ; c'est donc une bonne idée de mettre ça dans le onEnable de ta classe principale. ;)
 
  • J'aime
Reactions: _AoxO_

_AoxO_

Bucheron
4 Novembre 2017
6
0
12
20
Ah donc je doit appelé la classe main avec la méthode PluginManager
Merci beaucoup