Files
Rankup3/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java
T
okx-code 04a51a2e28 Minor improvements (fixes #20)
- update bstats
- add advancedachievements-achievement full name
- fix 1.8 compatibility
- add placeholder full name
2019-08-30 11:16:46 +01:00

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();
}
}