Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/main/java/com/sainttx/auctions/util/AuctionUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

package com.sainttx.auctions.util;

import java.util.Arrays;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
Expand All @@ -29,6 +31,22 @@
*/
public class AuctionUtil {

//main content + hotbar
private static final int INVENTORY_MAX_SIZE = 27 + 9;
private static final boolean storageMethodAvailable;

static {
boolean available = false;
try {
Bukkit.createInventory(null, 10).getStorageContents();
available = true;
} catch (NoSuchMethodError noMethodEx) {
available = false;
}

storageMethodAvailable = available;
}

/**
* Gets the amount of slots available for a particular item
*
Expand All @@ -44,8 +62,15 @@ public static int getFreeSlots(Inventory inv, ItemStack base) {
throw new IllegalArgumentException("base item cannot be null");
}

ItemStack[] storageContents;
if (storageMethodAvailable) {
storageContents = inv.getStorageContents();
} else {
storageContents = Arrays.copyOfRange(inv.getContents(), 0, INVENTORY_MAX_SIZE);
}

int totalFree = 0;
for (ItemStack is : inv.getStorageContents()) {
for (ItemStack is : storageContents) {
if (is == null || is.getType() == Material.AIR) {
totalFree += base.getMaxStackSize();
} else if (is.isSimilar(base)) {
Expand Down