1.8 support for item requirement
This commit is contained in:
+13
-2
@@ -2,6 +2,7 @@ package sh.okx.rankup.requirements.requirement;
|
|||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.PlayerInventory;
|
||||||
import sh.okx.rankup.RankupPlugin;
|
import sh.okx.rankup.RankupPlugin;
|
||||||
import sh.okx.rankup.requirements.DeductibleRequirement;
|
import sh.okx.rankup.requirements.DeductibleRequirement;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
@@ -20,7 +21,13 @@ public class ItemDeductibleRequirement extends ItemRequirement implements Deduct
|
|||||||
public void apply(Player player, double multiplier) {
|
public void apply(Player player, double multiplier) {
|
||||||
int count = (int) (getTotal(player) * 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++) {
|
for (int i = 0; i < contents.length && count > 0; i++) {
|
||||||
ItemStack item = contents[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) {
|
if (count > 0) {
|
||||||
throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS");
|
throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS");
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package sh.okx.rankup.requirements.requirement;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.PlayerInventory;
|
||||||
import sh.okx.rankup.RankupPlugin;
|
import sh.okx.rankup.RankupPlugin;
|
||||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
@@ -10,6 +12,17 @@ import sh.okx.rankup.requirements.Requirement;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class ItemRequirement extends ProgressiveRequirement {
|
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) {
|
public ItemRequirement(RankupPlugin plugin, String name) {
|
||||||
super(plugin, name, true);
|
super(plugin, name, true);
|
||||||
}
|
}
|
||||||
@@ -25,7 +38,14 @@ public class ItemRequirement extends ProgressiveRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getProgress(Player player) {
|
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)
|
.filter(this::matchItem)
|
||||||
.mapToInt(ItemStack::getAmount).sum();
|
.mapToInt(ItemStack::getAmount).sum();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user