ServerPlugin Probleme mit dem InventoryClickEvent

Dieses Thema im Forum "Programmierung" wurde erstellt von MineForce, 10. Dezember 2013.

  1. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Hallo, Liebes Forum

    Folgendes:

    Mein Frage:
    Wenn ich den Befehl "blockshop" benutze öffnet sich das Fenster dann klicke ich z.b. auf Stone also Material.Stone und es passiert nix ich kann dann das Item einfach rausnehmen D: Und ich möchte das wenn man drauf drückt auf ein Item in diesen INventar das ein Befehl ausgeführt wird habs mit Bukkit.dispatch usw gemacht geht aber nicht! Was ich weiß
    Code (Text):
    1. [COLOR="#00FF00"]Player pl = (Player) event.getWhoClicked();[/COLOR]
    kann ja garkein Befehl ausführen weil bei Commands ist der Code ja so:
    Code (Text):
    1. [COLOR="#00FF00"]Player p = (Player) cs;[/COLOR]
    wie mach ich das hier?

    Der Code:
    Code (Text):
    1.     @EventHandler
    2.     public void Inventory(InventoryClickEvent event) {
    3.         Player pl = (Player) event.getWhoClicked();
    4.        
    5.         ItemStack Stone = new ItemStack(Material.STONE, 10);
    6.         ItemStack Gras = new ItemStack(Material.GRASS, 10);
    7.        
    8.         if(event.getInventory().getName().equalsIgnoreCase("§aDiscoverCraft BlockShop:")) {
    9.             event.setCancelled(false);
    10.  
    11.            
    12.             if(event.getCurrentItem().getType() == Material.STONE) {
    13.              if (this.econ.has(pl.getName(), 35)){
    14.                 this.econ.withdrawPlayer(pl.getName(), 35);
    15.                 pl.sendMessage("§aDu hast 35 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    16.                 pl.getInventory().addItem(new ItemStack(Stone));
    17.                 event.getView().close();
    18.                
    19.             }else if(event.getCurrentItem().getType() == Material.GRASS) {
    20.                  if (this.econ.has(pl.getName(), 30)){
    21.                         this.econ.withdrawPlayer(pl.getName(), 30);
    22.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    23.                         pl.getInventory().addItem(new ItemStack(Gras));
    24.                         event.getView().close();
    25.                        
    26.             }else if(event.getCurrentItem().getType() == Material.DIRT) {
    27.                  if (this.econ.has(pl.getName(), 30)){
    28.                         this.econ.withdrawPlayer(pl.getName(), 30);
    29.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    30.                         pl.getInventory().addItem(new ItemStack(Gras));
    31.                         event.getView().close();
    32.                        
    33.             }else if(event.getCurrentItem().getType() == Material.COBBLESTONE) {
    34.                  if (this.econ.has(pl.getName(), 30)){
    35.                         this.econ.withdrawPlayer(pl.getName(), 30);
    36.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    37.                         pl.getInventory().addItem(new ItemStack(Gras));
    38.                         event.getView().close();
    39.                        
    40.             }else if(event.getCurrentItem().getType() == Material.WOOD) {
    41.                  if (this.econ.has(pl.getName(), 30)){
    42.                         this.econ.withdrawPlayer(pl.getName(), 30);
    43.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    44.                         pl.getInventory().addItem(new ItemStack(Gras));
    45.                         event.getView().close();
    46.                        
    47.             }}}
    48.         }}}}
    49.  
    thanks schonmal
     
    #1
  2. Master_Timpa
    Offline

    Master_Timpa

    Registriert seit:
    15. Oktober 2012
    Beiträge:
    1
    Ort:
    München
    Minecraft:
    Timpa1971
    Wenn du einen Befehl aud führen willst mach halt pl.performCommand("Command-Ohne-Slash");
     
    #2
  3. Gleydar
    Offline

    Gleydar Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    443
    Ort:
    player.getHome()
    Minecraft:
    Gleydar
    Oder, um sicher zu gehen:
    Code (Text):
    1.  
    2. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
    3.  
    falls der Spieler keine Rechte für den Command hat.
     
    #3
  4. ThunderFlo
    Offline

    ThunderFlo

    Registriert seit:
    22. September 2013
    Beiträge:
    53
    Code (Text):
    1. @EventHandler
    2.     public void Inventory(InventoryClickEvent event) {
    3.         Player pl = (Player) event.getWhoClicked();
    4.        
    5.         ItemStack Stone = new ItemStack(Material.STONE, 10);
    6.         ItemStack Gras = new ItemStack(Material.GRASS, 10);
    7.        
    8.         if(event.getInventory().getName().equalsIgnoreCase("§aDiscoverCraft BlockShop:")) {
    9. [COLOR="#FF0000"]           event.setCancelled(false);[/COLOR]
    10.  
    11.            
    12.             if(event.getCurrentItem().getType() == Material.STONE) {
    13.              if (this.econ.has(pl.getName(), 35)){
    14.                 this.econ.withdrawPlayer(pl.getName(), 35);
    15.                 pl.sendMessage("§aDu hast 35 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    16.                 pl.getInventory().addItem(new ItemStack(Stone));
    17.                 event.getView().close();
    18.                
    19.             }else if(event.getCurrentItem().getType() == Material.GRASS) {
    20.                  if (this.econ.has(pl.getName(), 30)){
    21.                         this.econ.withdrawPlayer(pl.getName(), 30);
    22.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    23.                         pl.getInventory().addItem(new ItemStack(Gras));
    24.                         event.getView().close();
    25.                        
    26.             }else if(event.getCurrentItem().getType() == Material.DIRT) {
    27.                  if (this.econ.has(pl.getName(), 30)){
    28.                         this.econ.withdrawPlayer(pl.getName(), 30);
    29.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    30.                         pl.getInventory().addItem(new ItemStack(Gras));
    31.                         event.getView().close();
    32.                        
    33.             }else if(event.getCurrentItem().getType() == Material.COBBLESTONE) {
    34.                  if (this.econ.has(pl.getName(), 30)){
    35.                         this.econ.withdrawPlayer(pl.getName(), 30);
    36.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    37.                         pl.getInventory().addItem(new ItemStack(Gras));
    38.                         event.getView().close();
    39.                        
    40.             }else if(event.getCurrentItem().getType() == Material.WOOD) {
    41.                  if (this.econ.has(pl.getName(), 30)){
    42.                         this.econ.withdrawPlayer(pl.getName(), 30);
    43.                         pl.sendMessage("§aDu hast 30 §6" + this.econ.currencyNameSingular() + "§a bezahlt!");
    44.                         pl.getInventory().addItem(new ItemStack(Gras));
    45.                         event.getView().close();
    46.                        
    47.             }}}
    48.         }}}}
    Habs dir Rot makiert was falsch ist. Du musst das false zu true umändern, da du wie gesagt hast, man die Items herausnehmen kann. Ich hoffe das hat dir geholfen :)
     
    #4
  5. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    geht nicht leider auch wenn es auf true ist. Es kommen keine Fehler aber wenn ich auf so ein Item drücke passiert einfach nix nichtmal die economy abfrage wird gemacht D: BRAUCHE Dringend Hilfe!
     
    #5
  6. ThunderFlo
    Offline

    ThunderFlo

    Registriert seit:
    22. September 2013
    Beiträge:
    53
    Hm... ^^ Was mir da jetzt noch einfällt wäre das du evtl. das InventoryClickEvent für das falsche Inventar genommen hast. Also überprüf bitte mal die Namen und ich würde dich gerne noch drum beten das du die Klasse hier veröffentlichst womit du das Inventar öffnest.
     
    #6