Plugin Résolu Problème avec le setCancelled

Statut
N'est pas ouverte pour d'autres réponses.

MainPixel

Aventurier
22 Juillet 2018
4
0
2
23
Bonjour,
j'ai développé un plugin de Menu dans lequel, en cliquant sur un item, on est tp dans un autre monde, pour que le joueur ne puisse pas retirer l'item, j'ai mis dans le code event.setCancelled(true), en jeux tout fonctionne mais en dehors du menu quand je veux déplacer un item dans mon inventaire, je ne peux pas, je sais que sa vient du setCancelled mais si je l'enlève rien ne fonctionne, l'inventaire du plugin s'ouvre mais quand je clique sur l'item, il s'enlève mais je ne suis pas tp.
des idées ? J'ai essayé de mettre le setCancelled dans le gui directement en enregistrant la class avec l'EventManager évidement mais sa fonctionne pas non plus
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Bonjour !

Je pense que la façon dont le plugin a été fait fait ne prends pas en compte que l'item soit dans ton menu ou non. C'est à dire que dans tous les cas, ton setCancelled sera pris en compte. pour contrer ce problème, tu dois vérifier si oui ou non le joueur est dans le menu ou non, avec un booléen par exemple ;)

AlexFatta
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Si tu utilise les évènements de l'inventaire proposent une méthode getInventory(), qui renvois l'inventaire où l'action a été effectuée. Tu peut comparer cet inventaire avec ton inventaire custom, via son nom notamment.
Un truc comme :
Code:
if(!e.getInventory().getName().equals("foo"))

Après je te renvois sur la documentation qui est très complète.

Cordialement,
ShE3py.
 
Dernière édition:

MainPixel

Aventurier
22 Juillet 2018
4
0
2
23
C'est bon, problème réglé !
Voilà mon code: if(inv.getName().equals("Menu")){
event.setCancelled(true);
Reste du code
}

Et j'avais mis le setCancelled avant le if c'était donc pour ça, merci pour votre aide ! :)
 

Ruster_

Mineur des cavernes
24 Avril 2017
53
1
28
22
J'ai eu exactement le même problème sauf que mon event.setCancelled(true); est bien à sa place. Voici mon code, aidez moi s'il vous plait. Merci beaucoup.

@EventHandler
public void onPlayerClick(InventoryClickEvent event) {
Inventory inv = event.getInventory();
Player player = (Player) event.getWhoClicked();
ItemStack current = event.getCurrentItem();

Location lobby = new Location(player.getWorld(), 0.5, 6.2, 0.5, 180f, 0f);
Location gunarea = new Location(player.getWorld(), 200.5, 6.2, 0.5, 180f, 0f);

if(current == null) {
return;
}

if(inv.getName().equalsIgnoreCase("§bMenu")) {
event.setCancelled(true);
player.closeInventory();

switch(current.getType()) {

case FIREWORK_CHARGE:
player.teleport(gunarea);
break;

case BED:
player.teleport(lobby);
break;

default:
break;
}
}
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Bonjour !

Ce poste date d'août. Je t'invite à créer ton propre poste qui nous explique clairement ton problème. En attendant, un modérateur va venir lock ce topic.

AlexFatta
 
Statut
N'est pas ouverte pour d'autres réponses.