Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void removePlayerItems(Player p, ItemStack item, int amount, double pricePerItem){
- int remainder, nrOfStacks;
- int itemsSold = 0;
- double payToPlayer = 0.0;
- boolean playerHasItem = true;
- // Make a clone so we don't manipulate the origin ItemStack
- ItemStack itemClone = item.clone();
- // Get the max stack size of the item
- int maxStackSize = itemClone.getMaxStackSize();
- // If the max stack size can't be determined, we assume 1 to be on the safe side
- if(maxStackSize > -1){
- // Check if player is trying to sell more than fits in a single ItemStack
- if(amount <= maxStackSize){
- itemClone.setAmount(amount);
- } else {
- remainder = amount % maxStackSize;
- nrOfStacks = (amount - remainder) / maxStackSize;
- itemClone.setAmount(maxStackSize);
- }
- } else {
- nrOfStacks = amount;
- }
- // Loop through the amount of ItemStacks
- for (int i = 0; i < nrOfStacks; i++){
- // Remove 1 ItemStack
- if(p.getInventory().containsAtLeast(itemClone, 1)) {
- p.getInventory().removeItem(itemClone);
- payToPlayer = payToPlayer + maxStackSize * pricePerItem;
- itemsSold = itemsSold + maxStackSize;
- } else {
- playerHasItem = false;
- break;
- }
- }
- // Make sure to sell the remaining amount as well
- if(playerHasItem && remainder != null){
- if(remainder > 0){
- itemClone.setAmount(remainder);
- if(p.getInventory().containsAtLeast(itemClone, 1)) {
- p.getInventory().removeItem(itemClone);
- payToPlayer = payToPlayer + remainder * pricePerItem;
- itemsSold = itemsSold + remainder;
- }
- }
- }
- if(itemsSold > 0){
- // Do economy here, something like:
- main.economy.depositPlayer(p, payToPlayer);
- p.sendMessage("Successfully sold "+itemsSold+" item(s)");
- } else {
- // Not a single item was sold so tell player he doesn't have item
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement