ServerPlugin 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
    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
     
    #1
  2. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    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.
     
    #2
    Payno4 gefällt das.
  3. JTK222
    Offline

    JTK222

    Registriert seit:
    5. September 2013
    Beiträge:
    665
    Ort:
    Planet Erde
    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.
     
    #3
  4. pasce1998
    Offline

    pasce1998

    Registriert seit:
    20. April 2014
    Beiträge:
    21
    Ort:
    Hessen
    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.  
     
    #4
    Payno4 gefällt das.
  5. Payno4
    Offline

    Payno4

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

    Danke ich werds mal versuchen :)

    Ja :D



    Edit by Malte: Beiträge zusammengefügt
     
    #5
  6. Darkangel93424
    Offline

    Darkangel93424

    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);
    }
     
    #6