3.5-beta.2
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'sh.okx'
|
group 'sh.okx'
|
||||||
version '3.5-beta'
|
version '3.5-beta.2'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -25,10 +25,29 @@ public class RankList<T extends Rank> {
|
|||||||
this.config = config;
|
this.config = config;
|
||||||
for (Map.Entry<String, Object> entry : config.getValues(false).entrySet()) {
|
for (Map.Entry<String, Object> entry : config.getValues(false).entrySet()) {
|
||||||
ConfigurationSection rankSection = (ConfigurationSection) entry.getValue();
|
ConfigurationSection rankSection = (ConfigurationSection) entry.getValue();
|
||||||
|
validateSection(rankSection);
|
||||||
ranks.add(deserializer.apply(rankSection));
|
ranks.add(deserializer.apply(rankSection));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void validateSection(ConfigurationSection section) {
|
||||||
|
String name = "'" + section.getName() + "'";
|
||||||
|
if (section.getConfigurationSection("requirements") != null) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Rankup section " + name + " is using the old requirements system.\n" +
|
||||||
|
"Instead of a configuration section, it is now a list of strings.\n" +
|
||||||
|
"For example, instead of \"requirements: money: 1000\" you should use \"requirements: - 'money 1000'\".");
|
||||||
|
}
|
||||||
|
Set<String> keys = section.getKeys(false);
|
||||||
|
if (keys.size() == 1 && keys.iterator().next().equalsIgnoreCase("rank")) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Having a final rank (for example: \"Z: rank: 'Z'\") from 3.4.2 or earlier should no longer be used.\n" +
|
||||||
|
"It is safe to just delete the final rank " + name + "");
|
||||||
|
} else if (section.getStringList("requirements").isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Rank " + name + " does not have any requirements.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public T getFirst() {
|
public T getFirst() {
|
||||||
OUTER:
|
OUTER:
|
||||||
for (T rank : ranks) {
|
for (T rank : ranks) {
|
||||||
|
|||||||
@@ -131,8 +131,6 @@ public class Rankup extends JavaPlugin {
|
|||||||
autoRankup.runTaskTimer(this, time, time);
|
autoRankup.runTaskTimer(this, time, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (config.getInt("version") < 4) {
|
if (config.getInt("version") < 4) {
|
||||||
getLogger().severe("You are using an outdated config!");
|
getLogger().severe("You are using an outdated config!");
|
||||||
getLogger().severe("This means that some things might not work!");
|
getLogger().severe("This means that some things might not work!");
|
||||||
@@ -180,12 +178,18 @@ public class Rankup extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void refreshRanks() {
|
public void refreshRanks() {
|
||||||
registerRequirements();
|
try {
|
||||||
Bukkit.getPluginManager().callEvent(new RankupRegisterEvent(this));
|
registerRequirements();
|
||||||
|
Bukkit.getPluginManager().callEvent(new RankupRegisterEvent(this));
|
||||||
|
|
||||||
rankups = new Rankups(this, loadConfig("rankups.yml"));
|
rankups = new Rankups(this, loadConfig("rankups.yml"));
|
||||||
if (config.getBoolean("prestige")) {
|
if (config.getBoolean("prestige")) {
|
||||||
prestiges = new Prestiges(this, loadConfig("prestiges.yml"));
|
prestiges = new Prestiges(this, loadConfig("prestiges.yml"));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Bukkit.getPluginManager().disablePlugin(this);
|
||||||
|
getLogger().severe("Could not finish enabling Rankup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,10 +225,12 @@ public class Rankup extends JavaPlugin {
|
|||||||
requirementRegistry.addRequirement(new GroupRequirement(this));
|
requirementRegistry.addRequirement(new GroupRequirement(this));
|
||||||
requirementRegistry.addRequirement(new PermissionRequirement(this));
|
requirementRegistry.addRequirement(new PermissionRequirement(this));
|
||||||
requirementRegistry.addRequirement(new PlaceholderRequirement(this));
|
requirementRegistry.addRequirement(new PlaceholderRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new WorldRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new BlockBreakRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new PlayerKillsRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new MobKillsRequirement(this));
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
||||||
for (String skill : McMMOSkillUtil.getInstance().getSkills()) {
|
requirementRegistry.addRequirement(new McMMOSkillRequirement(this));
|
||||||
requirementRegistry.addRequirement(new McMMOSkillRequirement(this, skill));
|
|
||||||
}
|
|
||||||
requirementRegistry.addRequirement(new McMMOPowerLevelRequirement(this));
|
requirementRegistry.addRequirement(new McMMOPowerLevelRequirement(this));
|
||||||
}
|
}
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("AdvancedAchievements")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("AdvancedAchievements")) {
|
||||||
@@ -246,7 +252,7 @@ public class Rankup extends JavaPlugin {
|
|||||||
if (rsp != null) {
|
if (rsp != null) {
|
||||||
economy = rsp.getProvider();
|
economy = rsp.getProvider();
|
||||||
} else {
|
} else {
|
||||||
getLogger().warning("No economy found.");
|
getLogger().warning("No economy found. The 'money' requirement will be disabled.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,7 +384,6 @@ public class Rankup extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Prestige oldPrestige = prestiges.getByPlayer(player);
|
Prestige oldPrestige = prestiges.getByPlayer(player);
|
||||||
Prestige prestige = prestiges.next(oldPrestige);
|
|
||||||
|
|
||||||
oldPrestige.applyRequirements(player);
|
oldPrestige.applyRequirements(player);
|
||||||
|
|
||||||
@@ -387,20 +392,20 @@ public class Rankup extends JavaPlugin {
|
|||||||
if (oldPrestige.getRank() != null) {
|
if (oldPrestige.getRank() != null) {
|
||||||
permissions.playerRemoveGroup(null, player, oldPrestige.getRank());
|
permissions.playerRemoveGroup(null, player, oldPrestige.getRank());
|
||||||
}
|
}
|
||||||
permissions.playerAddGroup(null, player, prestige.getRank());
|
permissions.playerAddGroup(null, player, oldPrestige.getNext());
|
||||||
|
|
||||||
getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PUBLIC)
|
getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PUBLIC)
|
||||||
.failIfEmpty()
|
.failIfEmpty()
|
||||||
.replaceRanks(player, oldPrestige, prestige.getRank())
|
.replaceRanks(player, oldPrestige,oldPrestige.getNext())
|
||||||
.replaceFromTo(oldPrestige)
|
.replaceFromTo(oldPrestige)
|
||||||
.broadcast();
|
.broadcast();
|
||||||
getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PRIVATE)
|
getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PRIVATE)
|
||||||
.failIfEmpty()
|
.failIfEmpty()
|
||||||
.replaceRanks(player, oldPrestige, prestige.getRank())
|
.replaceRanks(player, oldPrestige, oldPrestige.getNext())
|
||||||
.replaceFromTo(oldPrestige)
|
.replaceFromTo(oldPrestige)
|
||||||
.send(player);
|
.send(player);
|
||||||
|
|
||||||
oldPrestige.runCommands(player, prestige.getRank());
|
oldPrestige.runCommands(player, oldPrestige.getNext());
|
||||||
applyCooldown(player);
|
applyCooldown(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -410,13 +415,13 @@ public class Rankup extends JavaPlugin {
|
|||||||
|
|
||||||
public boolean checkPrestige(Player player, boolean message) {
|
public boolean checkPrestige(Player player, boolean message) {
|
||||||
Prestige prestige = prestiges.getByPlayer(player);
|
Prestige prestige = prestiges.getByPlayer(player);
|
||||||
if (!prestige.isIn(player)) { // check if in ladder
|
if (prestige == null || !prestige.isEligable(player)) { // check if in ladder
|
||||||
getMessage(Message.NOT_HIGH_ENOUGH)
|
getMessage(Message.NOT_HIGH_ENOUGH)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replace(Variable.PLAYER, player.getName())
|
.replace(Variable.PLAYER, player.getName())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (prestiges.getByName(prestige.getNext()) == null) { // check if they are at the highest rank
|
} else if (prestiges.isLast(permissions, player)) { // check if they are at the highest rank
|
||||||
getMessage(prestige, Message.PRESTIGE_NO_PRESTIGE)
|
getMessage(prestige, Message.PRESTIGE_NO_PRESTIGE)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replaceRanks(player, prestige.getRank())
|
.replaceRanks(player, prestige.getRank())
|
||||||
@@ -509,6 +514,6 @@ public class Rankup extends JavaPlugin {
|
|||||||
|
|
||||||
public boolean isLegacy() {
|
public boolean isLegacy() {
|
||||||
String version = Bukkit.getVersion();
|
String version = Bukkit.getVersion();
|
||||||
return !(version.startsWith("1.13") || version.startsWith("1.14"));
|
return !(version.contains("1.13") || version.contains("1.14"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package sh.okx.rankup.placeholders;
|
package sh.okx.rankup.placeholders;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
|
import com.sk89q.worldguard.WorldGuard;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ public class Prestige extends Rank {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isIn(Player player) {
|
public boolean isIn(Player player) {
|
||||||
|
|
||||||
String[] groups = plugin.getPermissions().getPlayerGroups(null, player);
|
String[] groups = plugin.getPermissions().getPlayerGroups(null, player);
|
||||||
for (String group : groups) {
|
for (String group : groups) {
|
||||||
if (group.equalsIgnoreCase(from) && rank == null) {
|
if (group.equalsIgnoreCase(from) && rank == null) {
|
||||||
@@ -58,6 +57,16 @@ public class Prestige extends Rank {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isEligable(Player player) {
|
||||||
|
String[] groups = plugin.getPermissions().getPlayerGroups(null, player);
|
||||||
|
for (String group : groups) {
|
||||||
|
if (group.equalsIgnoreCase(from)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isLast() {
|
public boolean isLast() {
|
||||||
return plugin.getPrestiges().getByName(next) == null;
|
return plugin.getPrestiges().getByName(next) == null;
|
||||||
|
|||||||
@@ -15,9 +15,7 @@ import sh.okx.rankup.requirements.Requirement;
|
|||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@EqualsAndHashCode
|
@EqualsAndHashCode
|
||||||
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
|
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
|
||||||
@@ -35,7 +33,6 @@ public class Rank {
|
|||||||
|
|
||||||
public static Rank deserialize(Rankup plugin, ConfigurationSection section) {
|
public static Rank deserialize(Rankup plugin, ConfigurationSection section) {
|
||||||
List<String> requirementsList = section.getStringList("requirements");
|
List<String> requirementsList = section.getStringList("requirements");
|
||||||
Validate.notEmpty(requirementsList, "No requirements defined for rankup section " + section.getName());
|
|
||||||
Set<Requirement> requirements = plugin.getRequirementRegistry().getRequirements(requirementsList);
|
Set<Requirement> requirements = plugin.getRequirementRegistry().getRequirements(requirementsList);
|
||||||
|
|
||||||
return new Rank(section, plugin,
|
return new Rank(section, plugin,
|
||||||
@@ -70,7 +67,11 @@ public class Rank {
|
|||||||
|
|
||||||
public Requirement getRequirement(String name) {
|
public Requirement getRequirement(String name) {
|
||||||
for (Requirement requirement : requirements) {
|
for (Requirement requirement : requirements) {
|
||||||
if (requirement.getName().equalsIgnoreCase(name)) {
|
String reqName = requirement.getName();
|
||||||
|
if (requirement.hasSubRequirement()) {
|
||||||
|
reqName += "#" + requirement.getSub();
|
||||||
|
}
|
||||||
|
if (reqName.equalsIgnoreCase(name)) {
|
||||||
return requirement;
|
return requirement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package sh.okx.rankup.requirements;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
|
|
||||||
public abstract class DeductibleRequirement extends Requirement {
|
public abstract class DeductibleRequirement extends ProgressiveRequirement {
|
||||||
public DeductibleRequirement(Rankup plugin, String name) {
|
public DeductibleRequirement(Rankup plugin, String name) {
|
||||||
super(plugin, name);
|
super(plugin, name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package sh.okx.rankup.requirements;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public abstract class ProgressiveRequirement extends Requirement {
|
||||||
|
public ProgressiveRequirement(Rankup plugin, String name) {
|
||||||
|
super(plugin, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ProgressiveRequirement(Requirement clone) {
|
||||||
|
super(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean check(Player player) {
|
||||||
|
return getRemaining(player) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getRemaining(Player player) {
|
||||||
|
return Math.max(0, getValueDouble() - getProgress(player));
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract double getProgress(Player player);
|
||||||
|
}
|
||||||
@@ -9,8 +9,9 @@ public abstract class Requirement implements Cloneable {
|
|||||||
protected final Rankup plugin;
|
protected final Rankup plugin;
|
||||||
@Getter
|
@Getter
|
||||||
protected final String name;
|
protected final String name;
|
||||||
@Setter
|
|
||||||
private String value;
|
private String value;
|
||||||
|
@Getter
|
||||||
|
private String sub;
|
||||||
|
|
||||||
public Requirement(Rankup plugin, String name) {
|
public Requirement(Rankup plugin, String name) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@@ -21,12 +22,27 @@ public abstract class Requirement implements Cloneable {
|
|||||||
this.plugin = clone.plugin;
|
this.plugin = clone.plugin;
|
||||||
this.name = clone.name;
|
this.name = clone.name;
|
||||||
this.value = clone.value;
|
this.value = clone.value;
|
||||||
|
this.sub = clone.sub;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
if (hasSubRequirement()) {
|
||||||
|
String[] parts = value.split(" ", 2);
|
||||||
|
this.sub = parts[0];
|
||||||
|
this.value = parts[1];
|
||||||
|
} else {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getValueString() {
|
public String getValueString() {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String[] getValuesString() {
|
||||||
|
return value.split(" ");
|
||||||
|
}
|
||||||
|
|
||||||
public double getValueDouble() {
|
public double getValueDouble() {
|
||||||
return Double.parseDouble(value);
|
return Double.parseDouble(value);
|
||||||
}
|
}
|
||||||
@@ -52,7 +68,11 @@ public abstract class Requirement implements Cloneable {
|
|||||||
* @return the remaining amount needed. Should be non-negative.
|
* @return the remaining amount needed. Should be non-negative.
|
||||||
*/
|
*/
|
||||||
public double getRemaining(Player player) {
|
public double getRemaining(Player player) {
|
||||||
return getValueDouble();
|
return check(player) ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasSubRequirement() {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Requirement clone();
|
public abstract Requirement clone();
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class RequirementRegistry {
|
|||||||
String name = parts[0];
|
String name = parts[0];
|
||||||
String value = parts[1];
|
String value = parts[1];
|
||||||
Requirement requirement = newRequirement(name, value);
|
Requirement requirement = newRequirement(name, value);
|
||||||
Objects.requireNonNull(requirement, "Unknown requirement: " + name);
|
Objects.requireNonNull(requirement, name.equalsIgnoreCase("money") ? "Money requirement disabled because no economy was found." : "Unknown requirement: " + name);
|
||||||
requirements.add(requirement);
|
requirements.add(requirement);
|
||||||
}
|
}
|
||||||
return requirements;
|
return requirements;
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package sh.okx.rankup.requirements.requirement;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class BlockBreakRequirement extends ProgressiveRequirement {
|
||||||
|
public BlockBreakRequirement(Rankup plugin) {
|
||||||
|
super(plugin, "block-break");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean check(Player player) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BlockBreakRequirement(BlockBreakRequirement clone) {
|
||||||
|
super(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getProgress(Player player) {
|
||||||
|
return player.getStatistic(Statistic.MINE_BLOCK, Material.matchMaterial(getValueString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Requirement clone() {
|
||||||
|
return new BlockBreakRequirement(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSubRequirement() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,22 +15,14 @@ public class GroupRequirement extends Requirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public boolean check(Player player) {
|
||||||
return getRemaining(player) < 1;
|
for (String group : plugin.getPermissions().getPlayerGroups(null, player)) {
|
||||||
}
|
for (String value : getValuesString()) {
|
||||||
|
if (group.equalsIgnoreCase(value)) {
|
||||||
@Override
|
return true;
|
||||||
public double getRemaining(Player player) {
|
|
||||||
int matched = 0;
|
|
||||||
String[] groups = getValueString().split(" ");
|
|
||||||
for (String requiredGroup : groups) {
|
|
||||||
for (String group : plugin.getPermissions().getPlayerGroups(null, player)) {
|
|
||||||
if (group.equalsIgnoreCase(requiredGroup)) {
|
|
||||||
matched++;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return groups.length - matched;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package sh.okx.rankup.requirements.requirement;
|
||||||
|
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class MobKillsRequirement extends ProgressiveRequirement {
|
||||||
|
public MobKillsRequirement(Rankup plugin) {
|
||||||
|
super(plugin, "mob-kills");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected MobKillsRequirement(Requirement clone) {
|
||||||
|
super(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getProgress(Player player) {
|
||||||
|
return player.getStatistic(Statistic.KILL_ENTITY, EntityType.fromName(getValueString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Requirement clone() {
|
||||||
|
return new MobKillsRequirement(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSubRequirement() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,13 +15,6 @@ public class MoneyRequirement extends DeductibleRequirement {
|
|||||||
super(clone);
|
super(clone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean check(Player player) {
|
|
||||||
Economy economy = plugin.getEconomy();
|
|
||||||
double balance = economy.getBalance(player);
|
|
||||||
return balance >= getValueDouble();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Player player) {
|
public void apply(Player player) {
|
||||||
Economy economy = plugin.getEconomy();
|
Economy economy = plugin.getEconomy();
|
||||||
@@ -29,8 +22,8 @@ public class MoneyRequirement extends DeductibleRequirement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getRemaining(Player player) {
|
public double getProgress(Player player) {
|
||||||
return Math.max(0, getValueDouble() - plugin.getEconomy().getBalance(player));
|
return plugin.getEconomy().getBalance(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,19 +15,12 @@ public class PermissionRequirement extends Requirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public boolean check(Player player) {
|
||||||
return getRemaining(player) < 1;
|
for (String permission : getValuesString()) {
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
int matched = 0;
|
|
||||||
String[] permissions = getValueString().split(" ");
|
|
||||||
for (String permission : permissions) {
|
|
||||||
if (player.hasPermission(permission)) {
|
if (player.hasPermission(permission)) {
|
||||||
matched++;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return permissions.length - matched;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -43,15 +43,12 @@ public class PlaceholderRequirement extends Requirement {
|
|||||||
return p < v;
|
return p < v;
|
||||||
case "<=":
|
case "<=":
|
||||||
return p <= v;
|
return p <= v;
|
||||||
|
case "==":
|
||||||
|
return p == v;
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
|
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
return check(player) ? 0 : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Requirement clone() {
|
public Requirement clone() {
|
||||||
return new PlaceholderRequirement(this);
|
return new PlaceholderRequirement(this);
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package sh.okx.rankup.requirements.requirement;
|
||||||
|
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class PlayerKillsRequirement extends ProgressiveRequirement {
|
||||||
|
public PlayerKillsRequirement(Rankup 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-8
@@ -3,9 +3,10 @@ package sh.okx.rankup.requirements.requirement;
|
|||||||
import org.bukkit.Statistic;
|
import org.bukkit.Statistic;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
public class PlaytimeMinutesRequirement extends Requirement {
|
public class PlaytimeMinutesRequirement extends ProgressiveRequirement {
|
||||||
private static final int TICKS_PER_MINUTE = 20 * 60;
|
private static final int TICKS_PER_MINUTE = 20 * 60;
|
||||||
private Statistic playOneTick;
|
private Statistic playOneTick;
|
||||||
|
|
||||||
@@ -25,13 +26,8 @@ public class PlaytimeMinutesRequirement extends Requirement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public double getProgress(Player player) {
|
||||||
return getRemaining(player) <= 0;
|
return player.getStatistic(playOneTick) / TICKS_PER_MINUTE;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
return Math.max(0, getValueDouble() - (player.getStatistic(playOneTick) / TICKS_PER_MINUTE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -15,17 +15,7 @@ public class WorldRequirement extends Requirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public boolean check(Player player) {
|
||||||
for (String world : getValueString().split(" ")) {
|
return player.getWorld().getName().equalsIgnoreCase(getValueString());
|
||||||
if (player.getWorld().getName().equalsIgnoreCase(world)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
return check(player) ? 0 : 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -14,19 +14,14 @@ public class XpLevelRequirement extends DeductibleRequirement {
|
|||||||
super(clone);
|
super(clone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean check(Player player) {
|
|
||||||
return player.getLevel() >= getValueInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Player player) {
|
public void apply(Player player) {
|
||||||
player.setLevel(player.getLevel() - getValueInt());
|
player.setLevel(player.getLevel() - getValueInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getRemaining(Player player) {
|
public double getProgress(Player player) {
|
||||||
return Math.max(0, getValueInt() - player.getLevel());
|
return player.getLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-14
@@ -17,21 +17,8 @@ public class AdvancedAchievementsAchievementRequirement extends Requirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public boolean check(Player player) {
|
||||||
return getRemaining(player) < 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
|
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
|
||||||
|
return api.hasPlayerReceivedAchievement(player.getUniqueId(), getValueString());
|
||||||
int total = 0;
|
|
||||||
String[] achievements = getValueString().split(" ");
|
|
||||||
for (String achievement : achievements) {
|
|
||||||
if (api.hasPlayerReceivedAchievement(player.getUniqueId(), achievement)) {
|
|
||||||
total++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return achievements.length - total;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+4
-10
@@ -1,12 +1,12 @@
|
|||||||
package sh.okx.rankup.requirements.requirement.advancedachievements;
|
package sh.okx.rankup.requirements.requirement.advancedachievements;
|
||||||
|
|
||||||
import com.hm.achievement.api.AdvancedAchievementsAPI;
|
|
||||||
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
|
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
|
||||||
public class AdvancedAchievementsTotalRequirement extends Requirement {
|
public class AdvancedAchievementsTotalRequirement extends ProgressiveRequirement {
|
||||||
public AdvancedAchievementsTotalRequirement(Rankup plugin) {
|
public AdvancedAchievementsTotalRequirement(Rankup plugin) {
|
||||||
super(plugin, "advancedachievements-total");
|
super(plugin, "advancedachievements-total");
|
||||||
}
|
}
|
||||||
@@ -16,14 +16,8 @@ public class AdvancedAchievementsTotalRequirement extends Requirement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public double getProgress(Player player) {
|
||||||
return getRemaining(player) < 1;
|
return AdvancedAchievementsAPIFetcher.fetchInstance().get().getPlayerTotalAchievements(player.getUniqueId());
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
|
|
||||||
return getValueInt() - api.getPlayerTotalAchievements(player.getUniqueId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+4
-8
@@ -4,8 +4,9 @@ import com.gmail.nossr50.util.player.UserManager;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
|
||||||
public class McMMOPowerLevelRequirement extends Requirement {
|
public class McMMOPowerLevelRequirement extends ProgressiveRequirement {
|
||||||
public McMMOPowerLevelRequirement(Rankup plugin) {
|
public McMMOPowerLevelRequirement(Rankup plugin) {
|
||||||
super(plugin, "mcmmo-power-level");
|
super(plugin, "mcmmo-power-level");
|
||||||
}
|
}
|
||||||
@@ -15,13 +16,8 @@ public class McMMOPowerLevelRequirement extends Requirement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public double getProgress(Player player) {
|
||||||
return getRemaining(player) <= 0;
|
return UserManager.getPlayer(player).getPowerLevel();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
return Math.max(0, getValueInt() - UserManager.getPlayer(player).getPowerLevel());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+8
-11
@@ -3,28 +3,25 @@ package sh.okx.rankup.requirements.requirement.mcmmo;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
|
||||||
public class McMMOSkillRequirement extends Requirement {
|
public class McMMOSkillRequirement extends ProgressiveRequirement {
|
||||||
private String skill;
|
public McMMOSkillRequirement(Rankup plugin) {
|
||||||
|
super(plugin, "mcmmo");
|
||||||
public McMMOSkillRequirement(Rankup plugin, String skill) {
|
|
||||||
super(plugin, "mcmmo-" + skill.toLowerCase());
|
|
||||||
this.skill = skill;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
|
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
|
||||||
super(clone);
|
super(clone);
|
||||||
this.skill = clone.skill;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public double getProgress(Player player) {
|
||||||
return getRemaining(player) <= 0;
|
return McMMOSkillUtil.getInstance().getSkillLevel(player, getValueString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getRemaining(Player player) {
|
public boolean hasSubRequirement() {
|
||||||
return Math.max(0, getValueInt() - McMMOSkillUtil.getInstance().getSkillLevel(player, skill));
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public class McMMOSkillUtil {
|
|||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new RuntimeException("mcMMO UserManager class not found");
|
throw new RuntimeException("mcMMO UserManager class not found");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
try {
|
try {
|
||||||
getSkillLevel = McMMOPlayer.class.getMethod("getSkillLevel", skillTypeClass);
|
getSkillLevel = McMMOPlayer.class.getMethod("getSkillLevel", skillTypeClass);
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
@@ -81,7 +82,7 @@ public class McMMOSkillUtil {
|
|||||||
public int getSkillLevel(Player player, String skill) {
|
public int getSkillLevel(Player player, String skill) {
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
try {
|
try {
|
||||||
Object skillType = skillTypeClass.cast(valueOf.invoke(null, skill));
|
Object skillType = skillTypeClass.cast(valueOf.invoke(null, skill.toUpperCase()));
|
||||||
return (int) getSkillLevel.invoke(mcMMOPlayer, skillType);
|
return (int) getSkillLevel.invoke(mcMMOPlayer, skillType);
|
||||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|||||||
+4
-8
@@ -4,8 +4,9 @@ import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
|
||||||
public class VotingPluginVotesRequirement extends Requirement {
|
public class VotingPluginVotesRequirement extends ProgressiveRequirement {
|
||||||
public VotingPluginVotesRequirement(Rankup plugin) {
|
public VotingPluginVotesRequirement(Rankup plugin) {
|
||||||
super(plugin, "votingplugin-votes");
|
super(plugin, "votingplugin-votes");
|
||||||
}
|
}
|
||||||
@@ -15,13 +16,8 @@ public class VotingPluginVotesRequirement extends Requirement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean check(Player player) {
|
public double getProgress(Player player) {
|
||||||
return getRemaining(player) < 1;
|
return UserManager.getInstance().getVotingPluginUser(player).getPoints();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getRemaining(Player player) {
|
|
||||||
return Math.max(0, getValueDouble() - UserManager.getInstance().getVotingPluginUser(player).getPoints());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -60,5 +60,5 @@ prestige:
|
|||||||
plural: "&cYou must wait {SECONDS_LEFT} more seconds to prestige again."
|
plural: "&cYou must wait {SECONDS_LEFT} more seconds to prestige again."
|
||||||
|
|
||||||
not-high-enough: "&cYou cannot prestige at your rank!"
|
not-high-enough: "&cYou cannot prestige at your rank!"
|
||||||
not-in-ladder: "&cSorry, but we could not find any rankups for the group(s) you are in."
|
not-in-ladder: "&cSorry, but we could not find any rankups for the group(s) you are in. Use /ranks to list the rankups."
|
||||||
invalid-rankup: "Invalid rankup defined in config, please check console."
|
invalid-rankup: "Invalid rankup defined in config, please check console."
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
name: Rankup
|
name: Rankup
|
||||||
version: 3.5-beta
|
version: 3.5-beta.2
|
||||||
main: sh.okx.rankup.Rankup
|
main: sh.okx.rankup.Rankup
|
||||||
author: Okx
|
author: Okx
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
|
|||||||
@@ -16,7 +16,3 @@ P1example:
|
|||||||
requirements:
|
requirements:
|
||||||
- 'money 20000'
|
- 'money 20000'
|
||||||
- 'xp-level 5'
|
- 'xp-level 5'
|
||||||
P2example:
|
|
||||||
from: 'D'
|
|
||||||
to: 'A'
|
|
||||||
rank: 'P2'
|
|
||||||
Reference in New Issue
Block a user