diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java index 2168421..c8a5424 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java @@ -2,6 +2,7 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.Requirement; @@ -20,7 +21,13 @@ public class ItemDeductibleRequirement extends ItemRequirement implements Deduct public void apply(Player player, double multiplier) { int count = (int) (getTotal(player) * multiplier); - ItemStack[] contents = player.getInventory().getStorageContents(); + PlayerInventory inventory = player.getInventory(); + ItemStack[] contents; + if (ItemRequirement.USE_STORAGE_CONTENTS) { + contents = inventory.getStorageContents(); + } else { + contents = inventory.getContents(); + } for (int i = 0; i < contents.length && count > 0; i++) { ItemStack item = contents[i]; @@ -35,7 +42,11 @@ public class ItemDeductibleRequirement extends ItemRequirement implements Deduct } } - player.getInventory().setStorageContents(contents); + if (ItemRequirement.USE_STORAGE_CONTENTS) { + inventory.setStorageContents(contents); + } else { + inventory.setContents(contents); + } if (count > 0) { throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS"); diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java index cbd9748..e5f1851 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java @@ -2,7 +2,9 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; @@ -10,6 +12,17 @@ import sh.okx.rankup.requirements.Requirement; import java.util.Arrays; public class ItemRequirement extends ProgressiveRequirement { + public static boolean USE_STORAGE_CONTENTS; + + static { + try { + Inventory.class.getMethod("getStorageContents"); + USE_STORAGE_CONTENTS = true; + } catch (NoSuchMethodException e) { + USE_STORAGE_CONTENTS = false; + } + } + public ItemRequirement(RankupPlugin plugin, String name) { super(plugin, name, true); } @@ -25,7 +38,14 @@ public class ItemRequirement extends ProgressiveRequirement { @Override public double getProgress(Player player) { - return Arrays.stream(player.getInventory().getStorageContents()) + PlayerInventory inventory = player.getInventory(); + ItemStack[] contents; + if (USE_STORAGE_CONTENTS) { + contents = inventory.getStorageContents(); + } else { + contents = inventory.getContents(); + } + return Arrays.stream(contents) .filter(this::matchItem) .mapToInt(ItemStack::getAmount).sum(); }