Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

  • Annonces

    • Pskyco

      Bukkit France passe sous Discord !   02/20/16

      Bukkit France est désormais passé sur Discord, au revoir donc notre vieux Teamspeak ! Téléchargez le client et venez nous rejoindre sur notre salon en suivant les instructions suivantes.
      M-à-j du 25/02/2017 : Désormais, seuls les comptes actifs sur le forum se verront donner l'accès au Discord, ce dernier n'est pas une plateforme d'aide de la même manière que le chat.
Jiren

Bug ? InteractEvent

6 messages dans ce sujet

Bonjour en réalisant mon code je me suis rendu compte d'un problème (voir ci-dessous) le problème étant que si j'ai le bon item en main, l'action d'ajout de pomme dans l'inv se lance plusieurs fois, avec 1 clic dans les air il fonctionne normalement, mais lorsque je clique sur un bloc il me réalise l'action 2 fois, de même quand je clique dans les airs et que je baisse rapidement mon curseur sur un bloc il me la réalise 3 fois, comment régler ce problème ?

 

@SuppressWarnings("deprecation")
	@EventHandler
	public void interact(PlayerInteractEvent e){
	Player p = e.getPlayer(); ItemStack it = p.getItemInHand(); Action a = e.getAction();
	
	if(it != null){
		if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK){
			if(it.hasItemMeta()){
			if(Items.getType(it.getItemMeta().getDisplayName())){
		p.getInventory().addItem(new ItemStack(Material.APPLE));
			}
		}
	}
	}
		
	}

 

Partager ce message


Lien à poster
Partager sur d’autres sites
@SuppressWarnings("deprecation")
@EventHandler
public void interact(PlayerInteractEvent e){
  Player p = e.getPlayer();
  ItemStack it = p.getItemInHand();
  Action a = e.getAction();
  
  if(it != null){
    if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK){
      if(it.hasItemMeta()){
        if(it.getType() == customIt.getType()){  //customIt = item en main necessaire
          p.getInventory().addItem(new ItemStack(Material.APPLE));
        }
      }
    }
  }	
}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Je me suis mal expliquer, enfaîte la ligne (ci-dessous) retourne un boolean cela permet de déterminer si l'item cliqué fait partie de la liste d'items qui se trouve dans mon arraylist en prenant le nom en paramètre, devrais-je créer une méthode qui retourne cette fois un Material pour faire if(itemInHands == it (retourné de la méthode)) ? Je doute que sa fonctionne

if(Items.getType(it.getItemMeta().getDisplayName())){
Modifié par Jiren

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 16/04/2018 à 12:21, Jiren a dit :

Bonjour en réalisant mon code je me suis rendu compte d'un problème (voir ci-dessous) le problème étant que si j'ai le bon item en main, l'action d'ajout de pomme dans l'inv se lance plusieurs fois, avec 1 clic dans les air il fonctionne normalement, mais lorsque je clique sur un bloc il me réalise l'action 2 fois, de même quand je clique dans les airs et que je baisse rapidement mon curseur sur un bloc il me la réalise 3 fois, comment régler ce problème ?

 

@SuppressWarnings("deprecation")
	@EventHandler
	public void interact(PlayerInteractEvent e){
	Player p = e.getPlayer(); ItemStack it = p.getItemInHand(); Action a = e.getAction();
	
	if(it != null){
		if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK){
			if(it.hasItemMeta()){
			if(Items.getType(it.getItemMeta().getDisplayName())){
		p.getInventory().addItem(new ItemStack(Material.APPLE));
			}
		}
	}
	}
		
	}

 

essaye de separer tes Action pour voir au lieu de mettre || pour voir ce que ça fais et evite les == quand tu peux c'est mieux de mettre .equals()

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Foulehistory a dit :

essaye de separer tes Action pour voir au lieu de mettre || pour voir ce que ça fais et evite les == quand tu peux c'est mieux de mettre .equals()

Pas obligé de mettre .equals ici, car l'action a seulement qu'une instance dans l'exécution du serveur. L'action étant un enum.

Source : https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/Action.html

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.