Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1. private void removePlayerItems(Player p, ItemStack item, int amount, double pricePerItem){
  2.     int remainder, nrOfStacks;
  3.     int itemsSold = 0;
  4.     double payToPlayer = 0.0;
  5.     boolean playerHasItem = true;
  6.  
  7.     // Make a clone so we don't manipulate the origin ItemStack
  8.     ItemStack itemClone = item.clone();
  9.  
  10.     // Get the max stack size of the item
  11.     int maxStackSize = itemClone.getMaxStackSize();
  12.  
  13.     // If the max stack size can't be determined, we assume 1 to be on the safe side
  14.     if(maxStackSize > -1){
  15.        
  16.         // Check if player is trying to sell more than fits in a single ItemStack
  17.         if(amount <= maxStackSize){
  18.             itemClone.setAmount(amount);
  19.         } else {
  20.             remainder = amount % maxStackSize;
  21.             nrOfStacks = (amount - remainder) / maxStackSize;
  22.  
  23.             itemClone.setAmount(maxStackSize);
  24.         }
  25.     } else {
  26.         nrOfStacks = amount;
  27.     }
  28.  
  29.     // Loop through the amount of ItemStacks
  30.     for (int i = 0; i < nrOfStacks; i++){
  31.         // Remove 1 ItemStack
  32.         if(p.getInventory().containsAtLeast(itemClone, 1)) {
  33.             p.getInventory().removeItem(itemClone);
  34.             payToPlayer = payToPlayer + maxStackSize * pricePerItem;
  35.             itemsSold = itemsSold + maxStackSize;
  36.         } else {
  37.             playerHasItem = false;
  38.             break;
  39.         }
  40.     }
  41.  
  42.     // Make sure to sell the remaining amount as well
  43.     if(playerHasItem && remainder != null){
  44.         if(remainder > 0){
  45.             itemClone.setAmount(remainder);
  46.             if(p.getInventory().containsAtLeast(itemClone, 1)) {
  47.                 p.getInventory().removeItem(itemClone);
  48.                 payToPlayer = payToPlayer + remainder * pricePerItem;
  49.                 itemsSold = itemsSold + remainder;
  50.             }
  51.         }
  52.     }
  53.  
  54.     if(itemsSold > 0){
  55.         // Do economy here, something like:
  56.         main.economy.depositPlayer(p, payToPlayer);
  57.  
  58.         p.sendMessage("Successfully sold "+itemsSold+" item(s)");
  59.     } else {
  60.         // Not a single item was sold so tell player he doesn't have item
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement