Need help with my plugin ;3

Discussion in 'Spigot Plugin Help' started by JordyPwner, May 10, 2015.

  1. Can anyone help me? When i sell a full inv of eblocks i get a negative result:

    Result:
    http://gyazo.com/a2ac7d421ed96289245cb17ab38008a3

    Code:

    PHP:
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e){
            Player player = e.getPlayer();
         
         


                if(e.getClickedBlock() != null){

                    if(e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN || e.getClickedBlock().getType() == Material.SIGN){

                        if(e.getAction() == Action.RIGHT_CLICK_BLOCK){

                        Sign s = (Sign)e.getClickedBlock().getState();
                            if(s.getLine(0).equalsIgnoreCase(ChatColor.DARK_GRAY + "[" + ChatColor.GREEN + "SellAll" + ChatColor.DARK_GRAY + "]")){
                                if(s.getLine(1).equalsIgnoreCase("Comp")){
                                e.setCancelled(true);                  
                             
                                if(!player.getInventory().contains(Material.DIAMOND_BLOCK)
                                        && !player.getInventory().contains(Material.EMERALD_BLOCK)){
                                    player.sendMessage(main.MessagesConfig.getString("ServerPrefix") + ChatColor.RED + "Oh no, it looks like you have no items to sell. Turn around and mine some to earn money!");
                                    player.playSound(player.getLocation(), Sound.NOTE_BASS, 1, 1);
                                    return;
                                }
                         
                                int amountOfDiamondBlock = 0;
                                int amountOfEmeraldBlock = 0;
                             
                             
                                for (ItemStack is : player.getInventory().getContents()){

                                 
                                 
                                 
     

                                    if(is != null){
                                 
                                     
                                     
                                        if(is.getType()== Material.DIAMOND_BLOCK){
                                         
                                            player.getInventory().remove(is);
                                            amountOfDiamondBlock += is.getAmount();
                                            player.updateInventory();
                                        }
                                 
                                        if(is.getType() == Material.EMERALD_BLOCK){
                                         
                                            player.getInventory().remove(is);
                                            amountOfEmeraldBlock += is.getAmount();
                                            player.updateInventory();
                                         
                                        }
                            }
                                }
                             
                             

                                int TotalDiamondBlock = amountOfDiamondBlock * 843750;

                                int TotalEmeraldBlock = amountOfEmeraldBlock * 984375;
                                int TotalofAll = TotalDiamondBlock + TotalEmeraldBlock;
                                double TotalMulitplied = TotalofAll * SellAllManager.getMultiplier(player);
                             
                           
                             
                                player.sendMessage("§8§m------------§6§l§oMystic§b§l§oPrison------------");
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]");
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]" + "    " + ChatColor.GRAY + "» " + ChatColor.AQUA + "Sold " + ChatColor.GRAY + "» " + ChatColor.GREEN + "$" + fixAmount(TotalMulitplied));
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]" + "    " + ChatColor.GRAY + "» " + ChatColor.AQUA + "Multiplier " + ChatColor.GRAY + "» " + ChatColor.RED + SellAllManager.getMultiplier(player));
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]");
                                player.sendMessage("§8§m------------§6§l§oMystic§b§l§oPrison------------");
                                player.playSound(player.getLocation(), Sound.NOTE_PLING, 2, 1);
                                Main.econ.depositPlayer(player, TotalMulitplied);
                             
                        }

                    }

                }

            }
                }
        }
       
     
  2. Also tried to switch:
    player.getInventory().remove(is);
    amountOfEmeraldBlock += is.getAmount();
    but that failed too (same result)
     
  3. It's because the max value of an Int is 2,147,483,647 after that it overflows and goes negative. If you really want it to be that high try a long instead of an int.
     
  4. What you can do is this:
    Code (Text):

    String amount = fixAmount(TotalMulitplied);
    if(amount.contains("-"){
    String amount2 = amount.replace("-", "");
    player.sendMessage(ChatColor.DARK_GRAY +"["+ ChatColor.YELLOW +"="+ ChatColor.DARK_GRAY +"]"+"    "+ ChatColor.GRAY +"» "+ ChatColor.AQUA +"Sold "+ ChatColor.GRAY +"» "+ ChatColor.GREEN +"$"+ amount2);

    }else{
    player.sendMessage(ChatColor.DARK_GRAY +"["+ ChatColor.YELLOW +"="+ ChatColor.DARK_GRAY +"]"+"    "+ ChatColor.GRAY +"» "+ ChatColor.AQUA +"Sold "+ ChatColor.GRAY +"» "+ ChatColor.GREEN +"$"+ amount);
    }
     
     
  5. So that would take care of the negative sign, however, the value would still be negative if he wanted to use it for something else later.
     
  6. Hmm your right, maybe try to use a long.
     
  7. Maybe make it a double try formatting it as a string by using Decimal Format? I THINK that's how iConomy and that do their formatting. Although, this data type probably never be used for precise values, such as currency in this case. So I'm not that sure.
     
  8. Same result
     
  9. Can you post your new code?
     
  10. PHP:
    if(!player.getInventory().contains(Material.DIAMOND_BLOCK)
                                        && !player.getInventory().contains(Material.EMERALD_BLOCK)){
                                    player.sendMessage(main.MessagesConfig.getString("ServerPrefix") + ChatColor.RED + "Oh no, it looks like you have no items to sell. Turn around and mine some to earn money!");
                                    player.playSound(player.getLocation(), Sound.NOTE_BASS, 1, 1);
                                    return;
                                }
                           
                                long amountOfDiamondBlock = 0;
                                long amountOfEmeraldBlock = 0;
                               
                               
                                for (ItemStack is : player.getInventory().getContents()){

                                   
                                   
                                   
                                    System.out.println("Na loop: " + amountOfEmeraldBlock);

                                    if(is != null){
                                   
                                       
                                       
                                        if(is.getType()== Material.DIAMOND_BLOCK){
                                           
                                            player.getInventory().remove(is);
                                            amountOfDiamondBlock += is.getAmount();
                                            player.updateInventory();
                                        }
                                   
                                        if(is.getType() == Material.EMERALD_BLOCK){
                                           
                                            player.getInventory().remove(is);
                                            amountOfEmeraldBlock += is.getAmount();
                                            player.updateInventory();
                                           
                                        }
                            }
                                }
                               
                               

                                long TotalDiamondBlock = amountOfDiamondBlock * 843750;

                                long TotalEmeraldBlock = amountOfEmeraldBlock * 984375;
                                long TotalofAll = TotalDiamondBlock + TotalEmeraldBlock;
                                double TotalMulitplied = TotalofAll * SellAllManager.getMultiplier(player);
                               
                           
                               
                                player.sendMessage("§8§m------------§6§l§oMystic§b§l§oPrison------------");
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]");
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]" + "    " + ChatColor.GRAY + "» " + ChatColor.AQUA + "Sold " + ChatColor.GRAY + "» " + ChatColor.GREEN + "$" + fixAmount(TotalMulitplied));
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]" + "    " + ChatColor.GRAY + "» " + ChatColor.AQUA + "Multiplier " + ChatColor.GRAY + "» " + ChatColor.RED + SellAllManager.getMultiplier(player));
                                player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "=" + ChatColor.DARK_GRAY + "]");
                                player.sendMessage("§8§m------------§6§l§oMystic§b§l§oPrison------------");
                                player.playSound(player.getLocation(), Sound.NOTE_PLING, 2, 1);
                                Main.econ.depositPlayer(player, TotalMulitplied);
                               
                        }

                    }

                }

            }
                }
        }
       
     
  11. When i have more it just gives 100Million
     
  12. Never realised i used a other class with this:

    for (int slot = 0; slot < player.getInventory().getSize();
    slot = slot + 1){

    ItemStack is = player.getInventory().getItem(slot);