Une question sur un event



  • Bonjour je suis sur que cela existe mais je ne le trouve pas, j'aimerais savoir s'il existe un event comme le onItemRightClick mais cela ce déclencherais lorsqu'il l'utilise ( clic droit et/ou clic gauche ) et comment l'utiliser  ou alors s'il existe une fonction pour quand il prend cette item précis en main ?

    merci d'avance.


  • Moddeurs confirmés Rédacteurs

    Tu as l'event PlayerInteractEvent :

    
    @SubscribeEvent
    public void onPlayerInteract(PlayerInteractEvent event) {
    switch(event.action) {
    case LEFT_CLICK_BLOCK:
    //some stuff
    break;
    case RIGHT_CLICK_BLOCK:
    //some stuff
    break;
    case RIGHT_CLICK_AIR:
    //some stuff
    }
    }
    
    

    Ou bien l'event PlayerUseItemEvent :

    
    /**
    * Quand le joueur commence à utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Start event) {
    
    }
    
    /**
    * Quand le joueur est en train d'utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Tick event) {
    
    }
    
    /**
    * Quand le joueur arrête d'utiliser l'objet AVANT LA FIN
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Stop event) {
    
    }
    
    /**
    * Quand le joueur a fini d'utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Finish event) {
    
    }
    
    


  • @'BrokenSwing':

    Tu as l'event PlayerInteractEvent :

    
    @SubscribeEvent
    public void onPlayerInteract(PlayerInteractEvent event) {
    switch(event.action) {
    case LEFT_CLICK_BLOCK:
    //some stuff
    break;
    case RIGHT_CLICK_BLOCK:
    //some stuff
    break;
    case RIGHT_CLICK_AIR:
    //some stuff
    }
    }
    
    

    Ou bien l'event PlayerUseItemEvent :

    
    /**
    * Quand le joueur commence à utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Start event) {
    
    }
    
    /**
    * Quand le joueur est en train d'utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Tick event) {
    
    }
    
    /**
    * Quand le joueur arrête d'utiliser l'objet AVANT LA FIN
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Stop event) {
    
    }
    
    /**
    * Quand le joueur a fini d'utiliser l'objet
    */
    @SubscribeEvent
    public void onPlayerUseItem(PlayerUseItemEvent.Finish event) {
    
    }
    
    

    Ah merci c'est pas ce que j'imaginé mais c'est une trés bonne solution ^^. ( je pensais à comme un onItemRightClic) mais vue que c'est des events pourrais tu me dire comment je peux vérifier l'item qui est utilisé ?



  • La variable se trouve dans l'event


  • Moddeurs confirmés Correcteurs

    Je crois que la première solution serait la meilleure pour toi. Ensuite, pour récupérer l'item: event.getItemStack(), tu peux aussi récupérer le joueur, le monde, la position, etc.



  • En faite aucune des solutions n'est utilisable pour ce que je souhaite faire. La premiére aurais peut si cela vérifier avec le clic gauche et droit lorsque qu'il frappe.

    En faite ce qu'il me faudrait c'est vrai quelque chose qui me permettrais via l'item lorsqu'il lui arrive dans la main s'il peut le porter (ou alors qui vérifie qu'il peut l'utiliser) en faite.



  • hein ? Je n'ai rien compris de ce que tu as dis



  • en faite avec mon mod les joueurs ont des 'capacités' chiffrés qui permet d'utiliser des armes ou non ce que je voudrais c'est que lorque le joueur utilise une certaine arme de vérifier s'il peut effectivement la garder.

    Je sais pas si c'est plus clair ><



  • Alors quel est le problème avec le premier event ?



  • @'SCAREX':

    Alors quel est le problème avec le premier event ?

    il ne vérifie pas quand il tape un mob ou un joueur en faite je pense que je vais plustôt vérifier via l'inventoryTick


  • Moddeurs confirmés Rédacteurs

    Si tu ne veux pas qu'un joueur puisse ramasser une certaine arme tu as l'event ItemPickupEvent :

    
    @SubscribeEvent
    public void onPlayerPickupItem(ItemPickupEvent event) {
    
    }
    
    

    Et pour éviter qu'il puisse attaquer avec tu as LivingAttackEvent :

    
    @SubscribeEvent
    public void onLivingAttack(LivingAttackEvent event) {
    
    }
    
    


  • @'BrokenSwing':

    Si tu ne veux pas qu'un joueur puisse ramasser une certaine arme tu as l'event ItemPickupEvent :

    
    @SubscribeEvent
    public void onPlayerPickupItem(ItemPickupEvent event) {
    
    }
    
    

    Le probléme est qu'ils peuvent aussi les crafter voir les acheter à des pnjs



  • et surtout je me demande pourquoi il y a pas de onItemLeftClic


  • Moddeurs confirmés Rédacteurs

    Tu as LeftClickBlock et Attack, ça suffit, je sais pas si t'avais vu mon edit sur mon message précédent ?



  • Pour tout ce qui est entité c'est soit LivingAttackEvent pour le clique gauche, EntityInteractEvent pour le clique droit. Mais pourquoi ne pas faire ça dans la classe de ton item directement ?



  • @'BrokenSwing':

    Tu as LeftClickBlock et Attack, ça suffit, je sais pas si t'avais vu mon edit sur mon message précédent ?

    Ah non mais je vais peut être utiliser cela alors ^^



  • @'SCAREX':

    Pour tout ce qui est entité c'est soit LivingAttackEvent pour le clique gauche, EntityInteractEvent pour le clique droit. Mais pourquoi ne pas faire ça dans la classe de ton item directement ?

    il y a un tuto pour le faire via une classe appart mais pour le mettre directement dans la classe de l"item ?



  • @'SCAREX':

    Pour tout ce qui est entité c'est soit LivingAttackEvent pour le clique gauche, EntityInteractEvent pour le clique droit. Mais pourquoi ne pas faire ça dans la classe de ton item directement ?

    euh j'ais vue le tuto pour déclarer un event minecraft dans une classe mais pas pour quand il est dans la classe d'un item, il y a un tuto pour cela ?



  • Euh… Un event peut être mis dans n'importe quelle classe enregistrée, mais ce que je veux dire c'est que pour faire ce que tu veux tu peux aussi passer par les fonctions présentes dans la classe de ton item sans avoir besoin d'utiliser des event



  • @'SCAREX':

    Euh… Un event peut être mis dans n'importe quelle classe enregistrée, mais ce que je veux dire c'est que pour faire ce que tu veux tu peux aussi passer par les fonctions présentes dans la classe de ton item sans avoir besoin d'utiliser des event

    comment ca , je comprend pas trop ce tu veux dire ?


Log in to reply