Development Assistance How to detect an stack of itens in a player inventory and remove them?

Discussion in 'Plugin Help/Development/Requests' started by Soldado_08, Jan 7, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    Soldado_08

    I'm creating a selling system with a NPC, like this: [​IMG]

    When i try to sell just one ore, its ok, but when i try to sell an stack, it does nothing, and returns an console error.

    Here is the code:
    Code:
     @EventHandler
              public void comprarminerador(final InventoryClickEvent event){
                
                 final Player p = (Player)event.getWhoClicked();
                 if(event.getInventory().getTitle().equals("Minerador")){
                    
                     event.setCancelled(true);
                    
                     if(event.getCurrentItem().getType() == Material.IRON_PICKAXE){
                        
                         if(this.plugin.econ.getBalance(p.getName()) >= 5000.0D){
                            
                             this.plugin.econ.withdrawPlayer(p.getName(), 5000.0D);
                            
                             ItemStack picaretat3 = new ItemStack(Material.IRON_PICKAXE);
                             ItemMeta metapicaretat3 = picaretat3.getItemMeta();
                             metapicaretat3.setDisplayName("§3Picareta de Ferro");
                             List<String> picaretat3lore = new ArrayList();
                             picaretat3lore.add("§7MINÉRIO DUPLO: 3%");
                             metapicaretat3.setLore(picaretat3lore);
                             picaretat3.setItemMeta(metapicaretat3);
                            
                             p.getInventory().addItem(picaretat3);
                             p.sendMessage("§aPicareta de Ferro comprada com sucesso!");
                             p.sendMessage("§c-5000g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }
                        
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.DIAMOND_PICKAXE &&
                     event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§9Aprimoramento para Picareta de Diamante")){
                        
                         if(p.getInventory().contains(Material.IRON_ORE, 576)){
                            
                             ItemStack mineriot3 = new ItemStack(Material.IRON_ORE, 576);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§3Minério de Ferro");
                                  mineriot3.setItemMeta(metat3);
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             ItemStack upt4m = new ItemStack(Material.EMPTY_MAP);
                             ItemMeta upt4mmeta = upt4m.getItemMeta();
                             upt4mmeta.setDisplayName("§9Aprimoramento para Picareta de Diamante");
                             List<String> upt4mlore = new ArrayList();
                             upt4mlore.add("§7Use em uma picareta de ferro para aprimorá-la");
                             upt4mmeta.setLore(upt4mlore);
                             upt4m.setItemMeta(upt4mmeta);
                            
                             p.getInventory().addItem(upt4m);
                             p.sendMessage("§aTroca feita com sucesso!");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                         }
                        
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.GOLD_PICKAXE &&
                     event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eAprimoramento para Picareta de Ouro")){
                        
                         if(p.getInventory().contains(Material.DIAMOND_ORE, 576)){
                            
                             ItemStack mineriot4 = new ItemStack(Material.DIAMOND_ORE, 576);
                                  ItemMeta metat4 = mineriot4.getItemMeta();
                                  metat4.setDisplayName("§9Minério de Diamante");
                                  mineriot4.setItemMeta(metat4);
                            
                             p.getInventory().removeItem(mineriot4);
                            
                             ItemStack upt4m = new ItemStack(Material.EMPTY_MAP);
                             ItemMeta upt4mmeta = upt4m.getItemMeta();
                             upt4mmeta.setDisplayName("§eAprimoramento para Picareta de Ouro");
                             List<String> upt4mlore = new ArrayList();
                             upt4mlore.add("§7Use em uma picareta de diamante para aprimorá-la");
                             upt4mmeta.setLore(upt4mlore);
                             upt4m.setItemMeta(upt4mmeta);
                            
                             p.getInventory().addItem(upt4m);
                             p.sendMessage("§aTroca feita com sucesso!");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                         }
                        
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.IRON_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§3Vender Minério de Ferro x1")){
                            
                                 ItemStack mineriot3 = new ItemStack(Material.IRON_ORE, 1);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§3Minério de Ferro");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().containsAtLeast(mineriot3, 1)){
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             this.plugin.econ.depositPlayer(p.getName(), 15);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+15g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.IRON_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§3Vender Minério de Ferro x64")){
    
                             int stack = 64;
                             ItemStack mineriot3 = new ItemStack(Material.IRON_ORE);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§3Minério de Ferro");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().containsAtLeast(mineriot3, stack)){
                            
                             for(int i = 0; i < stack ; i++){
                                
                                 p.getInventory().removeItem(mineriot3);
                                
                             }
                            
                             this.plugin.econ.depositPlayer(p.getName(), 960);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+960g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.DIAMOND_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§9Vender Minério de Diamante x1")){
                            
                                 ItemStack mineriot3 = new ItemStack(Material.DIAMOND_ORE, 1);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§9Minério de Diamante");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().containsAtLeast(mineriot3, 1)){
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             this.plugin.econ.depositPlayer(p.getName(), 45);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+45g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.DIAMOND_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§9Vender Minério de Diamante x64")){
                            
                                 ItemStack mineriot3 = new ItemStack(Material.DIAMOND_ORE, 64);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§9Minério de Diamante");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().contains(mineriot3)){
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             this.plugin.econ.depositPlayer(p.getName(), 2880);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+2880g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.GOLD_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eVender Minério de Ouro x1")){
                            
                                 ItemStack mineriot3 = new ItemStack(Material.GOLD_ORE, 1);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§eMinério de Ouro");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().containsAtLeast(mineriot3, 1)){
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             this.plugin.econ.depositPlayer(p.getName(), 100);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+100g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }else
                    
                     if(event.getCurrentItem().getType() == Material.GOLD_ORE){
                         if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eVender Minério de Ouro x64")){
                            
                                 ItemStack mineriot3 = new ItemStack(Material.GOLD_ORE, 64);
                                  ItemMeta metat3 = mineriot3.getItemMeta();
                                  metat3.setDisplayName("§eMinério de Ouro");
                                  mineriot3.setItemMeta(metat3);
                           
                         if(p.getInventory().contains(mineriot3)){
                            
                             p.getInventory().removeItem(mineriot3);
                            
                             this.plugin.econ.depositPlayer(p.getName(), 6400);
    
                             p.sendMessage("§aVenda feita com sucesso!");
                             p.sendMessage("§a+6400g");
                             event.setCursor(null);
                             p.updateInventory();
                            
                         }else{
                            
                             p.sendMessage("§cVocê não tem os minérios necessários para efetuar essa troca.");
                            
                             }
                         }
                     }
                    
                 }
                
             }
    If necessary, i'll post the entire code and the errors.
    Thanks ;)
     
  2. We always need the errors so we can help.
     
  3. Offline

    Soldado_08

  4. Offline

    Permeer

    @Soldado_08

    Oque tem na class CaixasDeEquipamento nas linhas : 477, 65, 868, 1012, 954 ?

    Translate :

    What have in the class CaixasDeEquipamento at the lines : 477, 65, 868, 1012, 954 ?
     
  5. Offline

    Soldado_08

    Line 477: if(event.getCursor().getItemMeta().getDisplayName().equalsIgnoreCase("§9Chave da Caixa de Equipamentos Tier 4"))

    Line 65: if(event.getCursor().getItemMeta().getDisplayName().equalsIgnoreCase("§eChave da Caixa de Equipamentos Tier 5"))

    Line 868: if(event.getCursor().getItemMeta().getDisplayName().equalsIgnoreCase("§3Chave da Caixa de Equipamentos Tier 3"))

    Line 1012: Nothing

    Line 954:
    List<String> hlore = new ArrayList();
    ItemStack espada = new ItemStack(Material.IRON_AXE);
    ItemMeta espadameta = espada.getItemMeta();
    espadameta.setDisplayName("§3Machado de Guerra");

    The line 477, 65, 868 are in the event InventoryClickEvent
    As linhas 477, 65, 868 estão no evento InventoryClickEvent
     
Thread Status:
Not open for further replies.

Share This Page