• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

InventoryClickEvent [closed]

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Hei Community ,

Ich hab ein kleines Problem mit einem Event . Das Plugin soll eig nur ein kleiner Test für mich selbst sein , da ich noch ziemlich neu in der Szene bin .

Ab Zeile 87 beginnts .
Code:
package basics.listerners;



import org.bukkit.Material;

import org.bukkit.entity.Player;

import org.bukkit.event.EventHandler;

import org.bukkit.event.Listener;

import org.bukkit.event.inventory.InventoryClickEvent;

import org.bukkit.event.player.PlayerJoinEvent;

import org.bukkit.event.player.PlayerQuitEvent;

import org.bukkit.inventory.ItemStack;



import basics.main.main;



publicclassEventManagerimplementsListener{

   

    private main plugin = main.getPlugin();

   

    @EventHandler

    publicvoidjoinEvent(PlayerJoinEvente){

        Player p =e.getPlayer();

        String msg = plugin.getConfig().getString("join.message");

        msg = msg.replaceAll("&", "§");

        msg = msg.replaceAll("%player%", p.getDisplayName());

       

        e.setJoinMessage(msg);

        p.sendMessage("§2Willkommen !");

       

        p.getInventory().setItem(1,newItemStack(Material.ARROW));

       

       

    }

   

    @EventHandler

    publicvoidleaveEvent(PlayerQuitEvente){

        Player p =e.getPlayer();

        String msg= plugin.getConfig().getString("leave.message");

        msg = msg.replaceAll("&", "§");

        msg = msg.replaceAll("%player%", p.getDisplayName());

       

        e.setQuitMessage(msg);

        p.getInventory().clear();

    }

   
//  Ab hier beginnt das Event was nicht funktioniert 
    @EventHandler

    publicvoidonIClick(InventoryClickEvente){

        Player p =(Player)e.getWhoClicked();

        if(e.isRightClick()){

            if(e.getSlot()==1){

                p.sendMessage("Du hast rechts geklickt");

            }

            else{

                p.sendMessage("Du hast nicht rechts geklickt");

            }

        }

    }

}

Infos
Java : 1.8
Minecraft : 1.8.3 Spigot
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Code:
@EventHandler
publicvoidonIClick(InventoryClickEvente){
Code:
@EventHandler
publicvoidonIClick(InventoryClickEvent e){
Da hat ein Leerzeicheng gefehlt weiß nicht ob du es in deinem Code auch so hast oder ob es am Forum liegt.
 

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Da hat ein Leerzeicheng gefehlt weiß nicht ob du es in deinem Code auch so hast oder ob es am Forum liegt.

Ja das liegt am Forum hab's vergessen auszubessern :)

@JTK222 das würde dann aber auch beim "public void onIClick" fehlen

@Payno4
Versuchs mal mit einem zusätzlichem null-Check

Code:
@EventHandler
public void onIClick (InventoryClickEvent e){
  if (e.isRightClick() && e.getCurrentItem() != null){
//Restlicher Code
  }
}

Danke ich werds mal versuchen :)

Du fragst mit dem getSlot() ab ob der Klick im Slot 1 stattgefunden hat. Willst du das überhaupt wissen? Nach dem isRightClick() weißt du ja schon, dass es ein Rechtsklick war.

Ja :D



Edit by Malte: Beiträge zusammengefügt
 
Zuletzt bearbeitet von einem Moderator:
Oben