04a51a2e28
- update bstats - add advancedachievements-achievement full name - fix 1.8 compatibility - add placeholder full name
45 lines
1.3 KiB
Java
45 lines
1.3 KiB
Java
package sh.okx.rankup.requirements.requirement;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.Statistic;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import sh.okx.rankup.Rankup;
|
|
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);
|
|
}
|
|
|
|
protected ItemRequirement(ItemRequirement clone) {
|
|
super(clone);
|
|
}
|
|
|
|
@Override
|
|
public void apply(Player player, double 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().getContents())
|
|
.filter(item -> item != null && item.getType() == material)
|
|
.mapToInt(ItemStack::getAmount).sum();
|
|
}
|
|
}
|