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

Bottle Fill Event

5 messages dans ce sujet

Posté(e) (modifié)

Bonjour j'aimerais remplacer l'item water bottle après un refill d'une glass bottle mais je ne sais pas comment faire, il ne me semble pas qu'il existe de méthode pour savoir quand l'inventaire est actualisé, le seul moyen que j'ai trouvé serais de voir quand le joueur click avec une bottle sur de l'eau, mais l'eau n'étant pas un bloc solide je ne sais pas comment faire, et même dans ce cas comment annuler l'ajout de la water bottle dans l'inventaire ? 

 

Player p = e.getPlayer(); Action a = e.getAction();
if(a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK){
if(e.getClickedBlock().getType() == Material.WATER || e.getClickedBlock().getType == Material.STATIONARY_WATER){
if(p.getItemInHand().getType == Material.GLASS_BOTTLE){


}}

Le code est mal fait, mais c'est juste pour vous donner une idée de ce que j'ai essayer.

Modifié par Jiren

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux annuler l’event avec : 

event.setCancelled(true);

Sinon tu peux vérifier si l’inventaire du joueur contient une bouteille d’eau : 

public void onPlayerInteract(PlayerInteractEvent event){
  Player player = event.getPlayer();
  Action action = event.getAction();
  
  if(player.getItemInHand().getType == Material.GLASS_BOTTLE){
    if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
      Inventory playerInventory = player.getInventory();
      
      if(playerInventory.contains(Material.WATER_BOTTLE){
        playerInventory.remove(Material.WATER_BOTTLE);
        playerInventory.addItem(CustomItem);  //remplacer CustomItem par l´item de remplacement des bouteilles d´eau 
      } 
    }
  }
}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, je viens de tester avec le cancel et le remove, mais le problème c'est que sa ne marche que si il y a déjà une water bottle dans l'inventaire, sinon sa ne fonctionne pas :/

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

C’est normal, tu ne peux pas remplacer un objet si il n’est pas deja dans l’inventaire.

Et, il ne faut pas cancel l’event sinon il n’y aura pas de bouteille d’eau dans l’inventaire.

Le principe est de laisser le joueur remplir la bouteille puis de la remplacer apres le remplissage.

Ajoute 

Thread.sleep(5000);  // temps en ms

entre « if(action == Action.RIGHT_CLICK_AIR || ...) » et « Inventory inventory = player.getInventory(); »

pour que la bouteille est le temps de se remplir.

Modifié par Alba0404
1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok c'était pour ça, par contre à la place du Thread j'ai préféré un Runnable car j'ai entendu que le thread posait problème pour le serveur ^^

Sinon sa fonctionne, merci.

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.