add xp-levelh and moneyh requirements

This commit is contained in:
okx-code
2019-08-17 09:55:13 +01:00
parent ce6aa9430d
commit 645e7a5931
5 changed files with 42 additions and 39 deletions
+10 -4
View File
@@ -31,6 +31,8 @@ import sh.okx.rankup.prestige.Prestige;
import sh.okx.rankup.prestige.Prestiges;
import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.Rankups;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.NonDeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.RequirementRegistry;
import sh.okx.rankup.requirements.requirement.*;
@@ -259,7 +261,7 @@ public class Rankup extends JavaPlugin {
private void registerRequirements() {
requirements = new RequirementRegistry();
requirements.addRequirement(new XpLevelRequirement(this));
registerDeductible(new XpLevelRequirement(this));
requirements.addRequirement(new PlaytimeMinutesRequirement(this));
requirements.addRequirement(new GroupRequirement(this));
requirements.addRequirement(new PermissionRequirement(this));
@@ -268,13 +270,12 @@ public class Rankup extends JavaPlugin {
requirements.addRequirement(new BlockBreakRequirement(this));
requirements.addRequirement(new PlayerKillsRequirement(this));
requirements.addRequirement(new MobKillsRequirement(this));
requirements.addRequirement(new ItemRequirement(this));
requirements.addRequirement(new ItemhRequirement(this));
registerDeductible(new ItemRequirement(this));
requirements.addRequirement(new UseItemRequirement(this));
requirements.addRequirement(new TotalMobKillsRequirement(this));
requirements.addRequirement(new CraftItemRequirement(this));
if (economy != null) {
requirements.addRequirement(new MoneyRequirement(this));
registerDeductible(new MoneyRequirement(this));
}
PluginManager pluginManager = Bukkit.getPluginManager();
@@ -291,6 +292,11 @@ public class Rankup extends JavaPlugin {
}
}
private void registerDeductible(DeductibleRequirement requirement) {
requirements.addRequirement(requirement);
requirements.addRequirement(new NonDeductibleRequirement(requirement, requirement.getName() + "h"));
}
private boolean setupPermissions() {
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
if (rsp == null) {
@@ -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);
}
}
@@ -1,33 +0,0 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Arrays;
public class ItemhRequirement extends ProgressiveRequirement {
public ItemhRequirement(Rankup plugin) {
super(plugin, "itemh", true);
}
protected ItemhRequirement(ItemRequirement clone) {
super(clone);
}
@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();
}
@Override
public Requirement clone() {
return new ItemhRequirement(plugin);
}
}
@@ -11,7 +11,7 @@ public class TotalMobKillsRequirement extends ProgressiveRequirement {
super(plugin, "total-mob-kills");
}
protected TotalMobKillsRequirement(Requirement clone) {
private TotalMobKillsRequirement(Requirement clone) {
super(clone);
}