3.5.7-alpha
- better reporting of configuration errors (instead of disabling the plugin, send the error on startup and whenever a command is executed) - don't check for updates if on a pre-release version - add infinite rankup loop detection - add itemh requirement (like the item requirement, but not deductible) - make it so i only have to change the plugin version in one place
This commit is contained in:
@@ -9,6 +9,8 @@ import sh.okx.rankup.requirements.DeductibleRequirement;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ItemRequirement extends DeductibleRequirement {
|
||||
public ItemRequirement(Rankup plugin) {
|
||||
super(plugin, "item", true);
|
||||
@@ -18,25 +20,25 @@ public class ItemRequirement extends DeductibleRequirement {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
int count = 0;
|
||||
for (ItemStack item : player.getInventory().getStorageContents()) {
|
||||
if (item != null && item.getType() == material) {
|
||||
count += item.getAmount();
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Player player, double multiplier) {
|
||||
player.getInventory().removeItem(new ItemStack(Material.matchMaterial(getSub()), (int) (getValueInt() * multiplier)));
|
||||
Material type = Material.matchMaterial(getSub());
|
||||
if (type == null) {
|
||||
throw new IllegalArgumentException("Invalid item " + getSub());
|
||||
}
|
||||
player.getInventory().removeItem(new ItemStack(type, (int) (getValueInt() * multiplier)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new ItemRequirement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
return Arrays.stream(player.getInventory().getStorageContents())
|
||||
.filter(item -> item != null && item.getType() == material)
|
||||
.mapToInt(ItemStack::getAmount).sum();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user