3.7 add prestige-based requirements

This commit is contained in:
okx-code
2020-04-13 14:24:31 +01:00
parent fe01ce1c4f
commit b7dfd5d9e3
92 changed files with 5908 additions and 5906 deletions
@@ -1,20 +1,22 @@
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
public interface DeductibleRequirement {
/**
* Apply the effect of this requirement to the player.
* For money, this could be taking money away from the player.
* You can assume that <code>Requirement#check(Player)</code> has been called,
* and has returned true immediately prior to this.
*
* @param player the player to take from
* @param multiplier The multiplier for the value
*/
void apply(Player player, double multiplier);
default void apply(Player player) {
apply(player, 1);
}
}
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
public interface DeductibleRequirement {
/**
* Apply the effect of this requirement to the player.
* For money, this could be taking money away from the player.
* You can assume that <code>Requirement#check(Player)</code> has been called,
* and has returned true immediately prior to this.
*
* Currently the multiplier will always be 1, but that may change in the future.
*
* @param player the player to take from
* @param multiplier The multiplier for the value
*/
void apply(Player player, double multiplier);
default void apply(Player player) {
apply(player, 1);
}
}
@@ -1,34 +1,34 @@
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
public abstract class ProgressiveRequirement extends Requirement {
public ProgressiveRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
public ProgressiveRequirement(RankupPlugin plugin, String name, boolean subRequirement) {
super(plugin, name, subRequirement);
}
protected ProgressiveRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return getRemaining(player) <= 0;
}
@Override
public final double getRemaining(Player player) {
return getRemaining(player, 1);
}
public double getRemaining(Player player, double multiplier) {
return Math.max(0, (multiplier * getTotal(player)) - getProgress(player));
}
public abstract double getProgress(Player player);
}
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
public abstract class ProgressiveRequirement extends Requirement {
public ProgressiveRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
public ProgressiveRequirement(RankupPlugin plugin, String name, boolean subRequirement) {
super(plugin, name, subRequirement);
}
protected ProgressiveRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return getRemaining(player) <= 0;
}
@Override
public final double getRemaining(Player player) {
return getRemaining(player, 1);
}
public double getRemaining(Player player, double multiplier) {
return Math.max(0, (multiplier * getTotal(player)) - getProgress(player));
}
public abstract double getProgress(Player player);
}
@@ -1,104 +1,104 @@
package sh.okx.rankup.requirements;
import lombok.Getter;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
public abstract class Requirement implements Cloneable {
protected final RankupPlugin plugin;
@Getter
protected final String name;
private String value;
@Getter
private String sub;
private boolean subRequirement;
public Requirement(RankupPlugin plugin, String name) {
this(plugin, name, false);
}
public Requirement(RankupPlugin plugin, String name, boolean subRequirement) {
this.plugin = plugin;
this.name = name;
this.subRequirement = subRequirement;
}
protected Requirement(Requirement clone) {
this.plugin = clone.plugin;
this.name = clone.name;
this.value = clone.value;
this.sub = clone.sub;
this.subRequirement = clone.subRequirement;
}
public void setValue(String value) {
if (hasSubRequirement()) {
String[] parts = value.split(" ", 2);
if (parts.length < 2) {
throw new IllegalArgumentException("Amount and sub-requirement not present for requirement '" + getName() + "'. You must use the format '" + getName() + " <sub-requirement> <amount>'");
}
this.sub = parts[0];
this.value = parts[1];
} else {
this.value = value;
}
}
public String getValueString() {
return value;
}
public String[] getValuesString() {
return value.split(" ");
}
public double getValueDouble() {
return Double.parseDouble(value);
}
public int getValueInt() {
return Integer.parseInt(value);
}
public boolean getValueBoolean() {
return Boolean.parseBoolean(value);
}
public String getFullName() {
if (hasSubRequirement()) {
return name + "#" + sub;
} else {
return name;
}
}
/**
* Check if a player meets this requirement
*
* @param player the player to check
* @return true if they meet the requirement, false otherwise
*/
public abstract boolean check(Player player);
/**
* Get the remaining amount needed for <code>Requirement#check(Player)</code> to yield true.
* This is not required and is only used in placeholders.
*
* @param player the player to find the remaining amount of
* @return the remaining amount needed. Should be non-negative.
*/
public double getRemaining(Player player) {
return check(player) ? 0 : 1;
}
public final boolean hasSubRequirement() {
return subRequirement;
}
public abstract Requirement clone();
public double getTotal(Player player) {
return getValueDouble();
}
}
package sh.okx.rankup.requirements;
import lombok.Getter;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
public abstract class Requirement implements Cloneable {
protected final RankupPlugin plugin;
@Getter
protected final String name;
private String value;
@Getter
private String sub;
private boolean subRequirement;
public Requirement(RankupPlugin plugin, String name) {
this(plugin, name, false);
}
public Requirement(RankupPlugin plugin, String name, boolean subRequirement) {
this.plugin = plugin;
this.name = name;
this.subRequirement = subRequirement;
}
protected Requirement(Requirement clone) {
this.plugin = clone.plugin;
this.name = clone.name;
this.value = clone.value;
this.sub = clone.sub;
this.subRequirement = clone.subRequirement;
}
public void setValue(String value) {
if (hasSubRequirement()) {
String[] parts = value.split(" ", 2);
if (parts.length < 2) {
throw new IllegalArgumentException("Amount and sub-requirement not present for requirement '" + getName() + "'. You must use the format '" + getName() + " <sub-requirement> <amount>'");
}
this.sub = parts[0];
this.value = parts[1];
} else {
this.value = value;
}
}
public String getValueString() {
return value;
}
public String[] getValuesString() {
return value.split(" ");
}
public double getValueDouble() {
return Double.parseDouble(value);
}
public int getValueInt() {
return Integer.parseInt(value);
}
public boolean getValueBoolean() {
return Boolean.parseBoolean(value);
}
public String getFullName() {
if (hasSubRequirement()) {
return name + "#" + sub;
} else {
return name;
}
}
/**
* Check if a player meets this requirement
*
* @param player the player to check
* @return true if they meet the requirement, false otherwise
*/
public abstract boolean check(Player player);
/**
* Get the remaining amount needed for <code>Requirement#check(Player)</code> to yield true.
* This is not required and is only used in placeholders.
*
* @param player the player to find the remaining amount of
* @return the remaining amount needed. Should be non-negative.
*/
public double getRemaining(Player player) {
return check(player) ? 0 : 1;
}
public final boolean hasSubRequirement() {
return subRequirement;
}
public abstract Requirement clone();
public double getTotal(Player player) {
return getValueDouble();
}
}
@@ -1,49 +1,49 @@
package sh.okx.rankup.requirements;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
public class RequirementRegistry {
private Set<Requirement> requirements = new HashSet<>();
public void addRequirement(Requirement requirement) {
requirements.add(requirement);
}
public void addRequirements(Requirement... requirements) {
Collections.addAll(this.requirements, requirements);
}
public Requirement newRequirement(String name, String value) {
for (Requirement requirement : requirements) {
if (requirement.getName().equalsIgnoreCase(name)) {
Requirement newRequirement = requirement.clone();
newRequirement.setValue(value);
return newRequirement;
}
}
return null;
}
public Set<Requirement> getRequirements(Iterable<String> list) {
Set<Requirement> requirements = new HashSet<>();
for (String req : list) {
String[] parts = req.split(" ", 2);
if (parts.length < 2) {
throw new IllegalArgumentException("For requirement: '" + req + "'. Requirements must contain a space between" +
" the name of the requirement and the value of the requirement. If it already looks like it has a space, " +
"make sure it is not a tab or has an invisible character.");
}
String name = parts[0];
String value = parts[1];
Requirement requirement = newRequirement(name, value);
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;
}
}
package sh.okx.rankup.requirements;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
public class RequirementRegistry {
private Set<Requirement> requirements = new HashSet<>();
public void addRequirement(Requirement requirement) {
requirements.add(requirement);
}
public void addRequirements(Requirement... requirements) {
Collections.addAll(this.requirements, requirements);
}
public Requirement newRequirement(String name, String value) {
for (Requirement requirement : requirements) {
if (requirement.getName().equalsIgnoreCase(name)) {
Requirement newRequirement = requirement.clone();
newRequirement.setValue(value);
return newRequirement;
}
}
return null;
}
public Set<Requirement> getRequirements(Iterable<String> list) {
Set<Requirement> requirements = new HashSet<>();
for (String req : list) {
String[] parts = req.split(" ", 2);
if (parts.length < 2) {
throw new IllegalArgumentException("For requirement: '" + req + "'. Requirements must contain a space between" +
" the name of the requirement and the value of the requirement. If it already looks like it has a space, " +
"make sure it is not a tab or has an invisible character.");
}
String name = parts[0];
String value = parts[1];
Requirement requirement = newRequirement(name, value);
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;
}
}
@@ -1,26 +1,26 @@
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
public class XpLevelDeductibleRequirement extends XpLevelRequirement implements DeductibleRequirement {
public XpLevelDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
private XpLevelDeductibleRequirement(XpLevelDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
}
@Override
public Requirement clone() {
return new XpLevelDeductibleRequirement(this);
}
}
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
public class XpLevelDeductibleRequirement extends XpLevelRequirement implements DeductibleRequirement {
public XpLevelDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
private XpLevelDeductibleRequirement(XpLevelDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
}
@Override
public Requirement clone() {
return new XpLevelDeductibleRequirement(this);
}
}
@@ -1,32 +1,32 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class BlockBreakRequirement extends ProgressiveRequirement {
public BlockBreakRequirement(RankupPlugin plugin) {
super(plugin, "block-break", true);
}
protected BlockBreakRequirement(BlockBreakRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null || !material.isBlock()) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid block");
}
return player.getStatistic(Statistic.MINE_BLOCK, material);
}
@Override
public Requirement clone() {
return new BlockBreakRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class BlockBreakRequirement extends ProgressiveRequirement {
public BlockBreakRequirement(RankupPlugin plugin) {
super(plugin, "block-break", true);
}
protected BlockBreakRequirement(BlockBreakRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null || !material.isBlock()) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid block");
}
return player.getStatistic(Statistic.MINE_BLOCK, material);
}
@Override
public Requirement clone() {
return new BlockBreakRequirement(this);
}
}
@@ -1,32 +1,32 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class CraftItemRequirement extends ProgressiveRequirement {
public CraftItemRequirement(RankupPlugin plugin) {
super(plugin, "craft-item", true);
}
protected CraftItemRequirement(CraftItemRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
}
return player.getStatistic(Statistic.CRAFT_ITEM, material);
}
@Override
public Requirement clone() {
return new CraftItemRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class CraftItemRequirement extends ProgressiveRequirement {
public CraftItemRequirement(RankupPlugin plugin) {
super(plugin, "craft-item", true);
}
protected CraftItemRequirement(CraftItemRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
}
return player.getStatistic(Statistic.CRAFT_ITEM, material);
}
@Override
public Requirement clone() {
return new CraftItemRequirement(this);
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class GroupRequirement extends Requirement {
public GroupRequirement(RankupPlugin plugin) {
super(plugin, "group");
}
protected GroupRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
for (String group : getValuesString()) {
if (plugin.getPermissions().inGroup(player.getUniqueId(), group)) {
return true;
}
}
return false;
}
@Override
public Requirement clone() {
return new GroupRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class GroupRequirement extends Requirement {
public GroupRequirement(RankupPlugin plugin) {
super(plugin, "group");
}
protected GroupRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
for (String group : getValuesString()) {
if (plugin.getPermissions().inGroup(player.getUniqueId(), group)) {
return true;
}
}
return false;
}
@Override
public Requirement clone() {
return new GroupRequirement(this);
}
}
@@ -1,49 +1,49 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class ItemDeductibleRequirement extends ItemRequirement implements DeductibleRequirement {
public ItemDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
public ItemDeductibleRequirement(ItemDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
int count = (int) (getTotal(player) * multiplier);
ItemStack[] contents = player.getInventory().getStorageContents();
for (int i = 0; i < contents.length && count > 0; i++) {
ItemStack item = contents[i];
if (matchItem(item)) {
if (count < item.getAmount()) {
item.setAmount(item.getAmount() - count);
count = 0;
} else {
count -= item.getAmount();
contents[i] = null;
}
}
}
player.getInventory().setStorageContents(contents);
if (count > 0) {
throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS");
}
}
@Override
public Requirement clone() {
return new ItemDeductibleRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class ItemDeductibleRequirement extends ItemRequirement implements DeductibleRequirement {
public ItemDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
public ItemDeductibleRequirement(ItemDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
int count = (int) (getTotal(player) * multiplier);
ItemStack[] contents = player.getInventory().getStorageContents();
for (int i = 0; i < contents.length && count > 0; i++) {
ItemStack item = contents[i];
if (matchItem(item)) {
if (count < item.getAmount()) {
item.setAmount(item.getAmount() - count);
count = 0;
} else {
count -= item.getAmount();
contents[i] = null;
}
}
}
player.getInventory().setStorageContents(contents);
if (count > 0) {
throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS");
}
}
@Override
public Requirement clone() {
return new ItemDeductibleRequirement(this);
}
}
@@ -1,62 +1,62 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Arrays;
public class ItemRequirement extends ProgressiveRequirement {
public ItemRequirement(RankupPlugin plugin, String name) {
super(plugin, name, true);
}
protected ItemRequirement(ItemRequirement clone) {
super(clone);
}
@Override
public Requirement clone() {
return new ItemRequirement(this);
}
@Override
public double getProgress(Player player) {
return Arrays.stream(player.getInventory().getStorageContents())
.filter(this::matchItem)
.mapToInt(ItemStack::getAmount).sum();
}
@SuppressWarnings("deprecation")
protected boolean matchItem(ItemStack item) {
if (item == null) {
return false;
}
String sub = getSub();
String[] parts = sub.split(":");
Material material = Material.matchMaterial(parts[0]);
if (material == null) {
throw new IllegalArgumentException("[item requirement] could not find material name: " + parts[0]);
}
if (parts.length > 1) {
int durability;
try {
durability = Integer.parseInt(parts[1]);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("[item requirement] durability '" + parts[1] + "' must be a number in item: '" + sub + "'");
}
if (durability != item.getDurability()) {
return false;
}
}
return material == item.getType();
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Arrays;
public class ItemRequirement extends ProgressiveRequirement {
public ItemRequirement(RankupPlugin plugin, String name) {
super(plugin, name, true);
}
protected ItemRequirement(ItemRequirement clone) {
super(clone);
}
@Override
public Requirement clone() {
return new ItemRequirement(this);
}
@Override
public double getProgress(Player player) {
return Arrays.stream(player.getInventory().getStorageContents())
.filter(this::matchItem)
.mapToInt(ItemStack::getAmount).sum();
}
@SuppressWarnings("deprecation")
protected boolean matchItem(ItemStack item) {
if (item == null) {
return false;
}
String sub = getSub();
String[] parts = sub.split(":");
Material material = Material.matchMaterial(parts[0]);
if (material == null) {
throw new IllegalArgumentException("[item requirement] could not find material name: " + parts[0]);
}
if (parts.length > 1) {
int durability;
try {
durability = Integer.parseInt(parts[1]);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("[item requirement] durability '" + parts[1] + "' must be a number in item: '" + sub + "'");
}
if (durability != item.getDurability()) {
return false;
}
}
return material == item.getType();
}
}
@@ -1,32 +1,32 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Objects;
public class MobKillsRequirement extends ProgressiveRequirement {
public MobKillsRequirement(RankupPlugin plugin) {
super(plugin, "mob-kills", true);
}
protected MobKillsRequirement(Requirement clone) {
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.");
return player.getStatistic(Statistic.KILL_ENTITY, entity);
}
@Override
public Requirement clone() {
return new MobKillsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Objects;
public class MobKillsRequirement extends ProgressiveRequirement {
public MobKillsRequirement(RankupPlugin plugin) {
super(plugin, "mob-kills", true);
}
protected MobKillsRequirement(Requirement clone) {
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.");
return player.getStatistic(Statistic.KILL_ENTITY, entity);
}
@Override
public Requirement clone() {
return new MobKillsRequirement(this);
}
}
@@ -1,29 +1,29 @@
package sh.okx.rankup.requirements.requirement;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyDeductibleRequirement extends MoneyRequirement implements DeductibleRequirement {
public MoneyDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected MoneyDeductibleRequirement(MoneyDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Economy economy = plugin.getEconomy();
economy.withdrawPlayer(player, getValueDouble() * multiplier);
}
@Override
public Requirement clone() {
return new MoneyDeductibleRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyDeductibleRequirement extends MoneyRequirement implements DeductibleRequirement {
public MoneyDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected MoneyDeductibleRequirement(MoneyDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Economy economy = plugin.getEconomy();
economy.withdrawPlayer(player, getValueDouble() * multiplier);
}
@Override
public Requirement clone() {
return new MoneyDeductibleRequirement(this);
}
}
@@ -1,26 +1,26 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyRequirement extends ProgressiveRequirement {
public MoneyRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected MoneyRequirement(MoneyRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return plugin.getEconomy().getBalance(player);
}
@Override
public Requirement clone() {
return new MoneyRequirement(this);
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyRequirement extends ProgressiveRequirement {
public MoneyRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected MoneyRequirement(MoneyRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return plugin.getEconomy().getBalance(player);
}
@Override
public Requirement clone() {
return new MoneyRequirement(this);
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class PermissionRequirement extends Requirement {
public PermissionRequirement(RankupPlugin plugin) {
super(plugin, "permission");
}
protected PermissionRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
for (String permission : getValuesString()) {
if (player.hasPermission(permission)) {
return true;
}
}
return false;
}
@Override
public Requirement clone() {
return new PermissionRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class PermissionRequirement extends Requirement {
public PermissionRequirement(RankupPlugin plugin) {
super(plugin, "permission");
}
protected PermissionRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
for (String permission : getValuesString()) {
if (player.hasPermission(permission)) {
return true;
}
}
return false;
}
@Override
public Requirement clone() {
return new PermissionRequirement(this);
}
}
@@ -1,90 +1,90 @@
package sh.okx.rankup.requirements.requirement;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlaceholderRequirement extends ProgressiveRequirement {
public static final double DELTA = 0.00001D;
public PlaceholderRequirement(RankupPlugin plugin) {
super(plugin, "placeholder");
}
public PlaceholderRequirement(PlaceholderRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
String[] parts = getParts(player);
String parsed = parts[0];
String value = parts[2];
// string operations
switch (parts[1]) {
case "=":
return parsed.equals(value) ? 1 : 0;
}
// numeric operations
double p = Double.parseDouble(parsed);
double v = Double.parseDouble(value);
switch (parts[1]) {
case ">":
return p > v ? v : 0;
case ">=":
return Math.min(p, v);
case "<":
return p < v ? v : 0;
case "<=":
return p <= v ? 1 : 0;
case "==":
return p == v ? v : 0;
}
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
}
@Override
public double getTotal(Player player) {
String[] parts = getParts(player);
if (parts[1].equalsIgnoreCase("=")) {
return 1;
} else {
return Double.parseDouble(parts[2]);
}
}
private String[] getParts(Player player) {
String[] parts = getValueString().split(" ");
if (parts.length < 3) {
throw new IllegalArgumentException("Placeholder requirements must be in the form %placeholder% <operation> string");
}
String parsed = PlaceholderAPI.setPlaceholders(player, parts[0]);
if (!PlaceholderAPI.containsPlaceholders(parts[0]) || parsed.equals(parts[0])) {
throw new IllegalArgumentException(parts[0] + " is not a PlaceholderAPI placeholder!");
}
parts[0] = parsed;
return parts;
}
@Override
public String getFullName() {
String[] parts = getValueString().split(" ");
return name + "#" + parts[0].replace("%", "");
}
@Override
public boolean check(Player player) {
return getRemaining(player) <= 0;
}
@Override
public Requirement clone() {
return new PlaceholderRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlaceholderRequirement extends ProgressiveRequirement {
public static final double DELTA = 0.00001D;
public PlaceholderRequirement(RankupPlugin plugin) {
super(plugin, "placeholder");
}
public PlaceholderRequirement(PlaceholderRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
String[] parts = getParts(player);
String parsed = parts[0];
String value = parts[2];
// string operations
switch (parts[1]) {
case "=":
return parsed.equals(value) ? 1 : 0;
}
// numeric operations
double p = Double.parseDouble(parsed);
double v = Double.parseDouble(value);
switch (parts[1]) {
case ">":
return p > v ? v : 0;
case ">=":
return Math.min(p, v);
case "<":
return p < v ? v : 0;
case "<=":
return p <= v ? 1 : 0;
case "==":
return p == v ? v : 0;
}
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
}
@Override
public double getTotal(Player player) {
String[] parts = getParts(player);
if (parts[1].equalsIgnoreCase("=")) {
return 1;
} else {
return Double.parseDouble(parts[2]);
}
}
private String[] getParts(Player player) {
String[] parts = getValueString().split(" ");
if (parts.length < 3) {
throw new IllegalArgumentException("Placeholder requirements must be in the form %placeholder% <operation> string");
}
String parsed = PlaceholderAPI.setPlaceholders(player, parts[0]);
if (!PlaceholderAPI.containsPlaceholders(parts[0]) || parsed.equals(parts[0])) {
throw new IllegalArgumentException(parts[0] + " is not a PlaceholderAPI placeholder!");
}
parts[0] = parsed;
return parts;
}
@Override
public String getFullName() {
String[] parts = getValueString().split(" ");
return name + "#" + parts[0].replace("%", "");
}
@Override
public boolean check(Player player) {
return getRemaining(player) <= 0;
}
@Override
public Requirement clone() {
return new PlaceholderRequirement(this);
}
}
@@ -1,27 +1,27 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlayerKillsRequirement extends ProgressiveRequirement {
public PlayerKillsRequirement(RankupPlugin plugin) {
super(plugin, "player-kills");
}
protected PlayerKillsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getStatistic(Statistic.PLAYER_KILLS);
}
@Override
public Requirement clone() {
return new PlayerKillsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlayerKillsRequirement extends ProgressiveRequirement {
public PlayerKillsRequirement(RankupPlugin plugin) {
super(plugin, "player-kills");
}
protected PlayerKillsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getStatistic(Statistic.PLAYER_KILLS);
}
@Override
public Requirement clone() {
return new PlayerKillsRequirement(this);
}
}
@@ -1,37 +1,37 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlaytimeMinutesRequirement extends ProgressiveRequirement {
private static final int TICKS_PER_MINUTE = 20 * 60;
private Statistic playOneTick;
public PlaytimeMinutesRequirement(RankupPlugin plugin) {
super(plugin, "playtime-minutes");
try {
playOneTick = Statistic.valueOf("PLAY_ONE_MINUTE");
} catch (IllegalArgumentException e) {
// statistic was changed in 1.13.
playOneTick = Statistic.valueOf("PLAY_ONE_TICK");
}
}
protected PlaytimeMinutesRequirement(PlaytimeMinutesRequirement clone) {
super(clone);
this.playOneTick = clone.playOneTick;
}
@Override
public double getProgress(Player player) {
return player.getStatistic(playOneTick) / TICKS_PER_MINUTE;
}
@Override
public Requirement clone() {
return new PlaytimeMinutesRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlaytimeMinutesRequirement extends ProgressiveRequirement {
private static final int TICKS_PER_MINUTE = 20 * 60;
private Statistic playOneTick;
public PlaytimeMinutesRequirement(RankupPlugin plugin) {
super(plugin, "playtime-minutes");
try {
playOneTick = Statistic.valueOf("PLAY_ONE_MINUTE");
} catch (IllegalArgumentException e) {
// statistic was changed in 1.13.
playOneTick = Statistic.valueOf("PLAY_ONE_TICK");
}
}
protected PlaytimeMinutesRequirement(PlaytimeMinutesRequirement clone) {
super(clone);
this.playOneTick = clone.playOneTick;
}
@Override
public double getProgress(Player player) {
return player.getStatistic(playOneTick) / TICKS_PER_MINUTE;
}
@Override
public Requirement clone() {
return new PlaytimeMinutesRequirement(this);
}
}
@@ -1,26 +1,26 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.requirement.tokenmanager.TokensRequirement;
public class TokensDeductibleRequirement extends TokensRequirement implements DeductibleRequirement {
public TokensDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected TokensDeductibleRequirement(TokensDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
manager.removeTokens(player, (long) (getValueInt() * multiplier));
}
@Override
public TokensRequirement clone() {
return new TokensDeductibleRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.requirement.tokenmanager.TokensRequirement;
public class TokensDeductibleRequirement extends TokensRequirement implements DeductibleRequirement {
public TokensDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected TokensDeductibleRequirement(TokensDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
manager.removeTokens(player, (long) (getValueInt() * multiplier));
}
@Override
public TokensRequirement clone() {
return new TokensDeductibleRequirement(this);
}
}
@@ -1,27 +1,27 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TotalMobKillsRequirement extends ProgressiveRequirement {
public TotalMobKillsRequirement(RankupPlugin plugin) {
super(plugin, "total-mob-kills");
}
private TotalMobKillsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getStatistic(Statistic.MOB_KILLS);
}
@Override
public Requirement clone() {
return new TotalMobKillsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TotalMobKillsRequirement extends ProgressiveRequirement {
public TotalMobKillsRequirement(RankupPlugin plugin) {
super(plugin, "total-mob-kills");
}
private TotalMobKillsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getStatistic(Statistic.MOB_KILLS);
}
@Override
public Requirement clone() {
return new TotalMobKillsRequirement(this);
}
}
@@ -1,32 +1,32 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class UseItemRequirement extends ProgressiveRequirement {
public UseItemRequirement(RankupPlugin plugin) {
super(plugin, "use-item", true);
}
protected UseItemRequirement(UseItemRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
}
return player.getStatistic(Statistic.USE_ITEM, material);
}
@Override
public Requirement clone() {
return new UseItemRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class UseItemRequirement extends ProgressiveRequirement {
public UseItemRequirement(RankupPlugin plugin) {
super(plugin, "use-item", true);
}
protected UseItemRequirement(UseItemRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
if (material == null) {
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
}
return player.getStatistic(Statistic.USE_ITEM, material);
}
@Override
public Requirement clone() {
return new UseItemRequirement(this);
}
}
@@ -1,29 +1,29 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class WorldRequirement extends Requirement {
public WorldRequirement(RankupPlugin plugin) {
super(plugin, "world");
}
protected WorldRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
String[] worlds = getValuesString();
for (String world : worlds) {
return player.getWorld().getName().equalsIgnoreCase(world);
}
return false;
}
@Override
public Requirement clone() {
return new WorldRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class WorldRequirement extends Requirement {
public WorldRequirement(RankupPlugin plugin) {
super(plugin, "world");
}
protected WorldRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
String[] worlds = getValuesString();
for (String world : worlds) {
return player.getWorld().getName().equalsIgnoreCase(world);
}
return false;
}
@Override
public Requirement clone() {
return new WorldRequirement(this);
}
}
@@ -1,26 +1,26 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class XpLevelRequirement extends ProgressiveRequirement {
public XpLevelRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected XpLevelRequirement(XpLevelRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getLevel();
}
@Override
public Requirement clone() {
return new XpLevelRequirement(this);
}
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class XpLevelRequirement extends ProgressiveRequirement {
public XpLevelRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected XpLevelRequirement(XpLevelRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return player.getLevel();
}
@Override
public Requirement clone() {
return new XpLevelRequirement(this);
}
}
@@ -1,38 +1,38 @@
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class AdvancedAchievementsAchievementRequirement extends Requirement {
public AdvancedAchievementsAchievementRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-achievement");
}
protected AdvancedAchievementsAchievementRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
return api.hasPlayerReceivedAchievement(player.getUniqueId(), getValueString());
}
@Override
public String getFullName() {
return super.getFullName() + "#" + getValueString();
}
@Override
public double getTotal(Player player) {
return 1;
}
@Override
public Requirement clone() {
return new AdvancedAchievementsAchievementRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class AdvancedAchievementsAchievementRequirement extends Requirement {
public AdvancedAchievementsAchievementRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-achievement");
}
protected AdvancedAchievementsAchievementRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
return api.hasPlayerReceivedAchievement(player.getUniqueId(), getValueString());
}
@Override
public String getFullName() {
return super.getFullName() + "#" + getValueString();
}
@Override
public double getTotal(Player player) {
return 1;
}
@Override
public Requirement clone() {
return new AdvancedAchievementsAchievementRequirement(this);
}
}
@@ -1,27 +1,27 @@
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class AdvancedAchievementsTotalRequirement extends ProgressiveRequirement {
public AdvancedAchievementsTotalRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-total");
}
private AdvancedAchievementsTotalRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return AdvancedAchievementsAPIFetcher.fetchInstance().get().getPlayerTotalAchievements(player.getUniqueId());
}
@Override
public Requirement clone() {
return new AdvancedAchievementsTotalRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class AdvancedAchievementsTotalRequirement extends ProgressiveRequirement {
public AdvancedAchievementsTotalRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-total");
}
private AdvancedAchievementsTotalRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return AdvancedAchievementsAPIFetcher.fetchInstance().get().getPlayerTotalAchievements(player.getUniqueId());
}
@Override
public Requirement clone() {
return new AdvancedAchievementsTotalRequirement(this);
}
}
@@ -1,27 +1,27 @@
package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOPowerLevelRequirement extends ProgressiveRequirement {
public McMMOPowerLevelRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo-power-level");
}
protected McMMOPowerLevelRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return UserManager.getPlayer(player).getPowerLevel();
}
@Override
public Requirement clone() {
return new McMMOPowerLevelRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOPowerLevelRequirement extends ProgressiveRequirement {
public McMMOPowerLevelRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo-power-level");
}
protected McMMOPowerLevelRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return UserManager.getPlayer(player).getPowerLevel();
}
@Override
public Requirement clone() {
return new McMMOPowerLevelRequirement(this);
}
}
@@ -1,26 +1,26 @@
package sh.okx.rankup.requirements.requirement.mcmmo;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOSkillRequirement extends ProgressiveRequirement {
public McMMOSkillRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo", true);
}
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return McMMOSkillUtil.getInstance().getSkillLevel(player, getSub());
}
@Override
public Requirement clone() {
return new McMMOSkillRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.mcmmo;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOSkillRequirement extends ProgressiveRequirement {
public McMMOSkillRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo", true);
}
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return McMMOSkillUtil.getInstance().getSkillLevel(player, getSub());
}
@Override
public Requirement clone() {
return new McMMOSkillRequirement(this);
}
}
@@ -1,91 +1,91 @@
package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Because mcMMO like changing the name of their skill types.
* Singleton class to access different mcMMO versions.
*/
public class McMMOSkillUtil {
private static McMMOSkillUtil instance;
private Class<?> skillTypeClass;
private Method values;
private Method valueOf;
//private Class<?> userManagerClass;
private Method getSkillLevel;
private McMMOSkillUtil() {
final String pckg = "com.gmail.nossr50.datatypes.skills.";
try {
skillTypeClass = Class.forName(pckg + "PrimarySkillType");
} catch (ClassNotFoundException e0) {
try {
skillTypeClass = Class.forName(pckg + "PrimarySkill");
} catch (ClassNotFoundException e1) {
try {
skillTypeClass = Class.forName(pckg + "SkillType");
} catch (ClassNotFoundException e2) {
throw new UnsupportedOperationException("mcMMO Skill Type class not found");
}
}
}
try {
values = skillTypeClass.getMethod("values");
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO " + skillTypeClass + ".values() not found");
}
try {
valueOf = skillTypeClass.getMethod("valueOf", String.class);
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO" + skillTypeClass + ".valueOf(String) not found");
}
/*try {
userManagerClass = Class.forName("com.gmail.nossr50.util.player.UserManager");
} catch (ClassNotFoundException e) {
throw new RuntimeException("mcMMO UserManager class not found");
}*/
try {
getSkillLevel = McMMOPlayer.class.getMethod("getSkillLevel", skillTypeClass);
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO UserManager.getSkillLevel(" + skillTypeClass + ") not found");
}
}
public static McMMOSkillUtil getInstance() {
if (instance == null) {
instance = new McMMOSkillUtil();
}
return instance;
}
/*public String[] getSkills() {
try {
Enum<?>[] skills = (Enum<?>[]) values.invoke(null);
String[] stringSkills = new String[skills.length];
for (int i = 0; i < skills.length; i++) {
stringSkills[i] = skills[i].name();
}
return stringSkills;
} catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}*/
public int getSkillLevel(Player player, String skill) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
try {
Object skillType = skillTypeClass.cast(valueOf.invoke(null, skill.toUpperCase()));
return (int) getSkillLevel.invoke(mcMMOPlayer, skillType);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
}
package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Because mcMMO like changing the name of their skill types.
* Singleton class to access different mcMMO versions.
*/
public class McMMOSkillUtil {
private static McMMOSkillUtil instance;
private Class<?> skillTypeClass;
private Method values;
private Method valueOf;
//private Class<?> userManagerClass;
private Method getSkillLevel;
private McMMOSkillUtil() {
final String pckg = "com.gmail.nossr50.datatypes.skills.";
try {
skillTypeClass = Class.forName(pckg + "PrimarySkillType");
} catch (ClassNotFoundException e0) {
try {
skillTypeClass = Class.forName(pckg + "PrimarySkill");
} catch (ClassNotFoundException e1) {
try {
skillTypeClass = Class.forName(pckg + "SkillType");
} catch (ClassNotFoundException e2) {
throw new UnsupportedOperationException("mcMMO Skill Type class not found");
}
}
}
try {
values = skillTypeClass.getMethod("values");
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO " + skillTypeClass + ".values() not found");
}
try {
valueOf = skillTypeClass.getMethod("valueOf", String.class);
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO" + skillTypeClass + ".valueOf(String) not found");
}
/*try {
userManagerClass = Class.forName("com.gmail.nossr50.util.player.UserManager");
} catch (ClassNotFoundException e) {
throw new RuntimeException("mcMMO UserManager class not found");
}*/
try {
getSkillLevel = McMMOPlayer.class.getMethod("getSkillLevel", skillTypeClass);
} catch (NoSuchMethodException e) {
throw new UnsupportedOperationException("mcMMO UserManager.getSkillLevel(" + skillTypeClass + ") not found");
}
}
public static McMMOSkillUtil getInstance() {
if (instance == null) {
instance = new McMMOSkillUtil();
}
return instance;
}
/*public String[] getSkills() {
try {
Enum<?>[] skills = (Enum<?>[]) values.invoke(null);
String[] stringSkills = new String[skills.length];
for (int i = 0; i < skills.length; i++) {
stringSkills[i] = skills[i].name();
}
return stringSkills;
} catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}*/
public int getSkillLevel(Player player, String skill) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
try {
Object skillType = skillTypeClass.cast(valueOf.invoke(null, skill.toUpperCase()));
return (int) getSkillLevel.invoke(mcMMOPlayer, skillType);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement.tokenmanager;
import java.util.Objects;
import me.realized.tokenmanager.api.TokenManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class TokensRequirement extends ProgressiveRequirement {
protected final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager"));
public TokensRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected TokensRequirement(TokensRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return manager.getTokens(player).orElse(0);
}
@Override
public TokensRequirement clone() {
return new TokensRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.tokenmanager;
import java.util.Objects;
import me.realized.tokenmanager.api.TokenManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class TokensRequirement extends ProgressiveRequirement {
protected final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager"));
public TokensRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
protected TokensRequirement(TokensRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return manager.getTokens(player).orElse(0);
}
@Override
public TokensRequirement clone() {
return new TokensRequirement(this);
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberResidentsRequirement extends ProgressiveRequirement {
public TownyKingNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-residents");
}
protected TownyKingNumberResidentsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isKing(player)) {
return TownyUtils.getInstance().getNation(player).getNumResidents();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyKingNumberResidentsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberResidentsRequirement extends ProgressiveRequirement {
public TownyKingNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-residents");
}
protected TownyKingNumberResidentsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isKing(player)) {
return TownyUtils.getInstance().getNation(player).getNumResidents();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyKingNumberResidentsRequirement(this);
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberTownsRequirement extends ProgressiveRequirement {
public TownyKingNumberTownsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-towns");
}
protected TownyKingNumberTownsRequirement(TownyKingNumberTownsRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isKing(player)) {
return TownyUtils.getInstance().getNation(player).getNumTowns();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyKingNumberTownsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberTownsRequirement extends ProgressiveRequirement {
public TownyKingNumberTownsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-towns");
}
protected TownyKingNumberTownsRequirement(TownyKingNumberTownsRequirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isKing(player)) {
return TownyUtils.getInstance().getNation(player).getNumTowns();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyKingNumberTownsRequirement(this);
}
}
@@ -1,25 +1,25 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingRequirement extends Requirement {
public TownyKingRequirement(RankupPlugin plugin) {
super(plugin, "towny-king");
}
protected TownyKingRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isKing(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyKingRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingRequirement extends Requirement {
public TownyKingRequirement(RankupPlugin plugin) {
super(plugin, "towny-king");
}
protected TownyKingRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isKing(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyKingRequirement(this);
}
}
@@ -1,30 +1,30 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorNumberResidentsRequirement extends ProgressiveRequirement {
public TownyMayorNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor-residents");
}
protected TownyMayorNumberResidentsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isMayor(player)) {
return TownyUtils.getInstance().getTown(player).getNumResidents();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyMayorNumberResidentsRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorNumberResidentsRequirement extends ProgressiveRequirement {
public TownyMayorNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor-residents");
}
protected TownyMayorNumberResidentsRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
if (TownyUtils.getInstance().isMayor(player)) {
return TownyUtils.getInstance().getTown(player).getNumResidents();
} else {
return 0;
}
}
@Override
public Requirement clone() {
return new TownyMayorNumberResidentsRequirement(this);
}
}
@@ -1,25 +1,25 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorRequirement extends Requirement {
public TownyMayorRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor");
}
protected TownyMayorRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isMayor(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyMayorRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorRequirement extends Requirement {
public TownyMayorRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor");
}
protected TownyMayorRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isMayor(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyMayorRequirement(this);
}
}
@@ -1,25 +1,25 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyResidentRequirement extends Requirement {
public TownyResidentRequirement(RankupPlugin plugin) {
super(plugin, "towny-resident");
}
protected TownyResidentRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isResident(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyResidentRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyResidentRequirement extends Requirement {
public TownyResidentRequirement(RankupPlugin plugin) {
super(plugin, "towny-resident");
}
protected TownyResidentRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return TownyUtils.getInstance().isResident(player) == getValueBoolean();
}
@Override
public Requirement clone() {
return new TownyResidentRequirement(this);
}
}
@@ -1,71 +1,71 @@
package sh.okx.rankup.requirements.requirement.towny;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Nation;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.Town;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import org.bukkit.entity.Player;
public class TownyUtils {
private static TownyUtils instance;
public static TownyUtils getInstance() {
if (instance == null) {
instance = new TownyUtils();
}
return instance;
}
public boolean isResident(Player player) {
try {
Town town = TownyUniverse.getDataSource().getResident(player.getName()).getTown();
return town != null;
} catch (NotRegisteredException e) {
return false;
}
}
public Resident getResident(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName());
} catch (NotRegisteredException e) {
return null;
}
}
public Town getTown(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).getTown();
} catch (NotRegisteredException e) {
return null;
}
}
public Nation getNation(Player player) {
Town town = getTown(player);
try {
return getTown(player) == null ? null : town.getNation();
} catch (NotRegisteredException e) {
return null;
}
}
public boolean isMayor(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).isMayor();
} catch (NotRegisteredException e) {
return false;
}
}
public boolean isKing(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).isKing();
} catch (NotRegisteredException e) {
return false;
}
}
}
package sh.okx.rankup.requirements.requirement.towny;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Nation;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.Town;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import org.bukkit.entity.Player;
public class TownyUtils {
private static TownyUtils instance;
public static TownyUtils getInstance() {
if (instance == null) {
instance = new TownyUtils();
}
return instance;
}
public boolean isResident(Player player) {
try {
Town town = TownyUniverse.getDataSource().getResident(player.getName()).getTown();
return town != null;
} catch (NotRegisteredException e) {
return false;
}
}
public Resident getResident(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName());
} catch (NotRegisteredException e) {
return null;
}
}
public Town getTown(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).getTown();
} catch (NotRegisteredException e) {
return null;
}
}
public Nation getNation(Player player) {
Town town = getTown(player);
try {
return getTown(player) == null ? null : town.getNation();
} catch (NotRegisteredException e) {
return null;
}
}
public boolean isMayor(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).isMayor();
} catch (NotRegisteredException e) {
return false;
}
}
public boolean isKing(Player player) {
try {
return TownyUniverse.getDataSource().getResident(player.getName()).isKing();
} catch (NotRegisteredException e) {
return false;
}
}
}
@@ -1,27 +1,27 @@
package sh.okx.rankup.requirements.requirement.votingplugin;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class VotingPluginVotesRequirement extends ProgressiveRequirement {
public VotingPluginVotesRequirement(RankupPlugin plugin) {
super(plugin, "votingplugin-votes");
}
protected VotingPluginVotesRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return UserManager.getInstance().getVotingPluginUser(player).getPoints();
}
@Override
public Requirement clone() {
return new VotingPluginVotesRequirement(this);
}
}
package sh.okx.rankup.requirements.requirement.votingplugin;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class VotingPluginVotesRequirement extends ProgressiveRequirement {
public VotingPluginVotesRequirement(RankupPlugin plugin) {
super(plugin, "votingplugin-votes");
}
protected VotingPluginVotesRequirement(Requirement clone) {
super(clone);
}
@Override
public double getProgress(Player player) {
return UserManager.getInstance().getVotingPluginUser(player).getPoints();
}
@Override
public Requirement clone() {
return new VotingPluginVotesRequirement(this);
}
}