1. 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!

PlugIn InventoryClickEvent [closed]

Dieses Thema im Forum "Programmierung" wurde erstellt von Payno4, 4. Juli 2015.


  1. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    Geschlecht:
    männlich
    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 (Text):
    1.  
    2. package basics.listerners;
    3.  
    4.  
    5.  
    6. import org.bukkit.Material;
    7.  
    8. import org.bukkit.entity.Player;
    9.  
    10. import org.bukkit.event.EventHandler;
    11.  
    12. import org.bukkit.event.Listener;
    13.  
    14. import org.bukkit.event.inventory.InventoryClickEvent;
    15.  
    16. import org.bukkit.event.player.PlayerJoinEvent;
    17.  
    18. import org.bukkit.event.player.PlayerQuitEvent;
    19.  
    20. import org.bukkit.inventory.ItemStack;
    21.  
    22.  
    23.  
    24. import basics.main.main;
    25.  
    26.  
    27.  
    28. publicclassEventManagerimplementsListener{
    29.  
    30.    
    31.  
    32.     private main plugin = main.getPlugin();
    33.  
    34.    
    35.  
    36.     @EventHandler
    37.  
    38.     publicvoidjoinEvent(PlayerJoinEvente){
    39.  
    40.         Player p =e.getPlayer();
    41.  
    42.         String msg = plugin.getConfig().getString("join.message");
    43.  
    44.         msg = msg.replaceAll("&", "§");
    45.  
    46.         msg = msg.replaceAll("%player%", p.getDisplayName());
    47.  
    48.        
    49.  
    50.         e.setJoinMessage(msg);
    51.  
    52.         p.sendMessage("§2Willkommen !");
    53.  
    54.        
    55.  
    56.         p.getInventory().setItem(1,newItemStack(Material.ARROW));
    57.  
    58.        
    59.  
    60.        
    61.  
    62.     }
    63.  
    64.    
    65.  
    66.     @EventHandler
    67.  
    68.     publicvoidleaveEvent(PlayerQuitEvente){
    69.  
    70.         Player p =e.getPlayer();
    71.  
    72.         String msg= plugin.getConfig().getString("leave.message");
    73.  
    74.         msg = msg.replaceAll("&", "§");
    75.  
    76.         msg = msg.replaceAll("%player%", p.getDisplayName());
    77.  
    78.        
    79.  
    80.         e.setQuitMessage(msg);
    81.  
    82.         p.getInventory().clear();
    83.  
    84.     }
    85.  
    86.    
    87. //  Ab hier beginnt das Event was nicht funktioniert
    88.     @EventHandler
    89.  
    90.     publicvoidonIClick(InventoryClickEvente){
    91.  
    92.         Player p =(Player)e.getWhoClicked();
    93.  
    94.         if(e.isRightClick()){
    95.  
    96.             if(e.getSlot()==1){
    97.  
    98.                 p.sendMessage("Du hast rechts geklickt");
    99.  
    100.             }
    101.  
    102.             else{
    103.  
    104.                 p.sendMessage("Du hast nicht rechts geklickt");
    105.  
    106.             }
    107.  
    108.         }
    109.  
    110.     }
    111.  
    112. }
    113.  
    114.  
    Infos
    Java : 1.8
    Minecraft : 1.8.3 Spigot
     
  2. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    340
    Geschlecht:
    männlich
    Minecraft:
    Inkemann
    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.
     
    • Gefällt mir Gefällt mir x 1
  3. JTK222
    Online

    JTK222

    Registriert seit:
    5. September 2013
    Beiträge:
    821
    Geschlecht:
    männlich
    Minecraft:
    JTK222
    Code (Text):
    1.  
    2. @EventHandler
    3. publicvoidonIClick(InventoryClickEvente){
    4.  
    Code (Text):
    1.  
    2. @EventHandler
    3. publicvoidonIClick(InventoryClickEvent e){
    4.  
    Da hat ein Leerzeicheng gefehlt weiß nicht ob du es in deinem Code auch so hast oder ob es am Forum liegt.
     
  4. pasce1998
    Offline

    pasce1998

    Registriert seit:
    20. April 2014
    Beiträge:
    21
    Geschlecht:
    männlich
    Minecraft:
    pasce1998
    @JTK222 das würde dann aber auch beim "public void onIClick" fehlen

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

    Code (Text):
    1.  
    2. @EventHandler
    3. public void onIClick (InventoryClickEvent e){
    4.   if (e.isRightClick() && e.getCurrentItem() != null){
    5. //Restlicher Code
    6.   }
    7. }
    8.  
    9.  
     
    • Gefällt mir Gefällt mir x 1
  5. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    Geschlecht:
    männlich
    Ja das liegt am Forum hab's vergessen auszubessern :)

    Danke ich werds mal versuchen :)

    Ja :D



    Edit by Malte: Beiträge zusammengefügt
     
    Zuletzt von einem Moderator bearbeitet: 4. Juli 2015
  6. NoWayOut
    Offline

    NoWayOut

    Registriert seit:
    28. Januar 2012
    Beiträge:
    20
    Minecraft:
    Darkangel
    hast du deinen Listener auch registriert? Am besten im Konstruktor machen ;)
    public EventManager(){
    plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }