Merge branch 'dev' into master
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package sh.okx.rankup.requirements;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Proxy requirement for a deductible requirement that is exactly the same but is not deductible
|
||||
*/
|
||||
public class NonDeductibleRequirement extends ProgressiveRequirement {
|
||||
private final DeductibleRequirement requirement;
|
||||
|
||||
public NonDeductibleRequirement(DeductibleRequirement requirement, String name) {
|
||||
super(requirement.plugin, name, requirement.hasSubRequirement());
|
||||
this.requirement = requirement;
|
||||
}
|
||||
|
||||
protected NonDeductibleRequirement(NonDeductibleRequirement clone) {
|
||||
super(clone);
|
||||
this.requirement = clone.requirement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
return requirement.getProgress(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new NonDeductibleRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ public class RequirementRegistry {
|
||||
String name = parts[0];
|
||||
String value = parts[1];
|
||||
Requirement requirement = newRequirement(name, value);
|
||||
Objects.requireNonNull(requirement, name.equalsIgnoreCase("money") ? "Money requirement disabled because no economy was found." : "Unknown requirement: " + name);
|
||||
Objects.requireNonNull(requirement, name.equalsIgnoreCase("money") ? "The 'money' requirement is being used but no economy is found" : "Unknown requirement: " + name);
|
||||
requirements.add(requirement);
|
||||
}
|
||||
return requirements;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ public class MobKillsRequirement extends ProgressiveRequirement {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
EntityType entity = Objects.requireNonNull(EntityType.fromName(getSub()), "Invalid entity type '" + getSub() + "' in mob-kills requirement.");
|
||||
|
||||
@@ -11,7 +11,7 @@ public class TotalMobKillsRequirement extends ProgressiveRequirement {
|
||||
super(plugin, "total-mob-kills");
|
||||
}
|
||||
|
||||
protected TotalMobKillsRequirement(Requirement clone) {
|
||||
private TotalMobKillsRequirement(Requirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user