3.5.2
This commit is contained in:
+4
-3
@@ -3,7 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'sh.okx'
|
group 'sh.okx'
|
||||||
version '3.5-beta.5'
|
version '3.5.2'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -37,7 +37,8 @@ dependencies {
|
|||||||
}
|
}
|
||||||
compile 'me.clip:placeholderapi:2.9.2'
|
compile 'me.clip:placeholderapi:2.9.2'
|
||||||
compile 'com.hm.achievement:advanced-achievements-api:1.1.0'
|
compile 'com.hm.achievement:advanced-achievements-api:1.1.0'
|
||||||
// if compiling this you will have to download and install mcMMO locally
|
compile ('com.github.mcMMO-Dev:mcMMO:ac8042f') {
|
||||||
compile 'com.gmail.nossr50.mcMMO:mcMMO:2.1.+'
|
exclude group: 'com.sk89q.worldguard'
|
||||||
|
}
|
||||||
compile 'com.github.Ben12345rocks:VotingPlugin:5.18.2'
|
compile 'com.github.Ben12345rocks:VotingPlugin:5.18.2'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package sh.okx.rankup;
|
|||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
import org.apache.commons.lang3.Validate;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -34,7 +33,7 @@ public class RankList<T extends Rank> {
|
|||||||
String name = "'" + section.getName() + "'";
|
String name = "'" + section.getName() + "'";
|
||||||
if (section.getConfigurationSection("requirements") != null) {
|
if (section.getConfigurationSection("requirements") != null) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Rankup section " + name + " is using the old requirements system.\n" +
|
"Rankup/prestige section " + name + " is using the old requirements system.\n" +
|
||||||
"Instead of a configuration section, it is now a list of strings.\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'\".");
|
"For example, instead of \"requirements: money: 1000\" you should use \"requirements: - 'money 1000'\".");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ public class Rankup extends JavaPlugin {
|
|||||||
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 WorldRequirement(this));
|
||||||
requirementRegistry.addRequirement(new BlockBreakRequirement(this));
|
//requirementRegistry.addRequirement(new BlockBreakRequirement(this));
|
||||||
requirementRegistry.addRequirement(new PlayerKillsRequirement(this));
|
requirementRegistry.addRequirement(new PlayerKillsRequirement(this));
|
||||||
requirementRegistry.addRequirement(new MobKillsRequirement(this));
|
requirementRegistry.addRequirement(new MobKillsRequirement(this));
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
||||||
@@ -488,12 +488,20 @@ public class Rankup extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void replaceRequirements(MessageBuilder builder, Variable variable, Requirement requirement, Supplier<Object> value) {
|
private void replaceRequirements(MessageBuilder builder, Variable variable, Requirement requirement, Supplier<Object> value) {
|
||||||
builder.replace(variable + " " + requirement.getName(), value.get());
|
builder.replace(variable + " " + requirement.getFullName(), value.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageBuilder getMessage(CommandSender player, Message message, Rank oldRank, String rankName) {
|
public MessageBuilder getMessage(CommandSender player, Message message, Rank oldRank, String rankName) {
|
||||||
|
String oldRankName;
|
||||||
|
if (oldRank instanceof Prestige && oldRank.getRank() == null) {
|
||||||
|
oldRankName = ((Prestige) oldRank).getFrom();
|
||||||
|
} else {
|
||||||
|
oldRankName = oldRank.getRank();
|
||||||
|
}
|
||||||
|
|
||||||
return replaceMoneyRequirements(getMessage(oldRank, message)
|
return replaceMoneyRequirements(getMessage(oldRank, message)
|
||||||
.replaceRanks(player, oldRank, rankName), player, oldRank)
|
.replaceRanks(player, rankName)
|
||||||
|
.replace(Variable.OLD_RANK, oldRankName), player, oldRank)
|
||||||
.replaceFromTo(oldRank);
|
.replaceFromTo(oldRank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,11 @@ public class PrestigeCommand implements CommandExecutor {
|
|||||||
switch (confirmationType) {
|
switch (confirmationType) {
|
||||||
case "text":
|
case "text":
|
||||||
confirming.put(player, System.currentTimeMillis());
|
confirming.put(player, System.currentTimeMillis());
|
||||||
|
Prestige next = prestiges.next(prestige);
|
||||||
|
String nextRank = next == null ? prestiges.getLast() : next.getRank();
|
||||||
|
|
||||||
plugin.replaceMoneyRequirements(plugin.getMessage(prestige, Message.PRESTIGE_CONFIRMATION)
|
plugin.replaceMoneyRequirements(plugin.getMessage(prestige, Message.PRESTIGE_CONFIRMATION)
|
||||||
.replaceRanks(player, prestige, prestiges.next(prestige).getRank()), player, prestige)
|
.replaceRanks(player, prestige, nextRank), player, prestige)
|
||||||
.replaceFromTo(prestige)
|
.replaceFromTo(prestige)
|
||||||
.send(player);
|
.send(player);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -26,20 +26,19 @@ public class PrestigesCommand implements CommandExecutor {
|
|||||||
|
|
||||||
Message message = playerRank == null ? Message.PRESTIGES_INCOMPLETE : Message.PRESTIGES_COMPLETE;
|
Message message = playerRank == null ? Message.PRESTIGES_INCOMPLETE : Message.PRESTIGES_COMPLETE;
|
||||||
Prestige prestige = prestiges.getFirst();
|
Prestige prestige = prestiges.getFirst();
|
||||||
Prestige next;
|
String nextRank;
|
||||||
while ((next = prestiges.next(prestige)) != null) {
|
do {
|
||||||
|
nextRank = prestige.getNext();
|
||||||
if (prestige.equals(playerRank)) {
|
if (prestige.equals(playerRank)) {
|
||||||
plugin.getMessage(sender, Message.PRESTIGES_CURRENT, prestige, next.getRank())
|
plugin.getMessage(sender, Message.PRESTIGES_CURRENT, prestige, nextRank)
|
||||||
.replaceFirstPrestige(prestige, prestiges, prestige.getFrom())
|
|
||||||
.send(sender);
|
.send(sender);
|
||||||
message = Message.PRESTIGES_INCOMPLETE;
|
message = Message.PRESTIGES_INCOMPLETE;
|
||||||
} else {
|
} else {
|
||||||
plugin.getMessage(sender, message, prestige, next.getRank())
|
plugin.getMessage(sender, message, prestige, nextRank)
|
||||||
.replaceFirstPrestige(prestige, prestiges, prestige.getFrom())
|
.replaceFirstPrestige(prestige, prestiges, prestige.getFrom())
|
||||||
.send(sender);
|
.send(sender);
|
||||||
}
|
}
|
||||||
prestige = next;
|
} while((prestige = prestiges.getByName(nextRank)) != null);
|
||||||
}
|
|
||||||
|
|
||||||
plugin.sendHeaderFooter(sender, playerRank, Message.PRESTIGES_FOOTER);
|
plugin.sendHeaderFooter(sender, playerRank, Message.PRESTIGES_FOOTER);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package sh.okx.rankup.messages;
|
package sh.okx.rankup.messages;
|
||||||
|
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
import org.apache.commons.lang3.Validate;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -11,6 +10,7 @@ import sh.okx.rankup.prestige.Prestige;
|
|||||||
import sh.okx.rankup.prestige.Prestiges;
|
import sh.okx.rankup.prestige.Prestiges;
|
||||||
import sh.okx.rankup.ranks.Rank;
|
import sh.okx.rankup.ranks.Rank;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ public class MessageBuilder {
|
|||||||
|
|
||||||
private static MessageBuilder of(ConfigurationSection config, String message) {
|
private static MessageBuilder of(ConfigurationSection config, String message) {
|
||||||
String string = config.getString(message);
|
String string = config.getString(message);
|
||||||
Validate.notNull(string, "Configuration message '" + message + "' not found!");
|
Objects.requireNonNull(string, "Configuration message '" + message + "' not found!");
|
||||||
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', string));
|
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', string));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,6 @@ public class MessageBuilder {
|
|||||||
public MessageBuilder replaceFirstPrestige(Rank rank, Prestiges prestiges, String with) {
|
public MessageBuilder replaceFirstPrestige(Rank rank, Prestiges prestiges, String with) {
|
||||||
if (prestiges != null && prestiges.getFirst().equals(rank)) {
|
if (prestiges != null && prestiges.getFirst().equals(rank)) {
|
||||||
replace(Variable.OLD_RANK, with);
|
replace(Variable.OLD_RANK, with);
|
||||||
replace(Variable.OLD_RANK_NAME, with);
|
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -64,14 +63,12 @@ public class MessageBuilder {
|
|||||||
|
|
||||||
public MessageBuilder replaceRanks(String rankName) {
|
public MessageBuilder replaceRanks(String rankName) {
|
||||||
replace(Variable.RANK, rankName);
|
replace(Variable.RANK, rankName);
|
||||||
replace(Variable.RANK_NAME, rankName);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageBuilder replaceRanks(Rank oldRank, String rankName) {
|
public MessageBuilder replaceRanks(Rank oldRank, String rankName) {
|
||||||
replaceRanks(rankName);
|
replaceRanks(rankName);
|
||||||
replace(Variable.OLD_RANK, oldRank.getRank());
|
replace(Variable.OLD_RANK, oldRank.getRank());
|
||||||
replace(Variable.OLD_RANK_NAME, oldRank.getRank());
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ package sh.okx.rankup.messages;
|
|||||||
public enum Variable {
|
public enum Variable {
|
||||||
PLAYER,
|
PLAYER,
|
||||||
OLD_RANK,
|
OLD_RANK,
|
||||||
OLD_RANK_NAME,
|
|
||||||
RANK,
|
RANK,
|
||||||
RANK_NAME,
|
|
||||||
FROM,
|
FROM,
|
||||||
TO,
|
TO,
|
||||||
MONEY,
|
MONEY,
|
||||||
|
|||||||
@@ -1,10 +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.apache.commons.lang.Validate;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
import sh.okx.rankup.prestige.Prestige;
|
import sh.okx.rankup.prestige.Prestige;
|
||||||
@@ -78,8 +75,17 @@ public class RankupExpansion extends PlaceholderExpansion {
|
|||||||
requirePrestiging(prestiges, params);
|
requirePrestiging(prestiges, params);
|
||||||
return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0D));
|
return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0D));
|
||||||
case "current_rank":
|
case "current_rank":
|
||||||
return orElsePlaceholder(rank, Rank::getRank, "not-in-ladder");
|
if (rankups.isLast(plugin.getPermissions(), player)) {
|
||||||
|
return rankups.getLast();
|
||||||
|
} else if (rank == null) {
|
||||||
|
return getPlaceholder("not-in-ladder");
|
||||||
|
} else {
|
||||||
|
return rank.getRank();
|
||||||
|
}
|
||||||
case "next_rank":
|
case "next_rank":
|
||||||
|
if (rankups.isLast(plugin.getPermissions(), player)) {
|
||||||
|
return getPlaceholder("highest-rank");
|
||||||
|
}
|
||||||
return orElsePlaceholder(rank, r -> orElsePlaceholder(rank, Rank::getNext, "highest-rank"), "not-in-ladder");
|
return orElsePlaceholder(rank, r -> orElsePlaceholder(rank, Rank::getNext, "highest-rank"), "not-in-ladder");
|
||||||
case "money":
|
case "money":
|
||||||
return String.valueOf(orElse(rank, r -> simplify(r.getRequirement("money").getValueDouble()), 0));
|
return String.valueOf(orElse(rank, r -> simplify(r.getRequirement("money").getValueDouble()), 0));
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public class Prestiges extends RankList<Prestige> {
|
|||||||
return prestige;
|
return prestige;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new IllegalStateException("No prestige found for first prestige (first prestige is counted as a prestige without a rank set)." +
|
throw new IllegalStateException("No prestige found for first prestige (first prestige is counted as a prestige without a rank set). " +
|
||||||
"Disable prestiges in config.yml if you don't want any.");
|
"Disable prestiges in config.yml if you don't want any.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package sh.okx.rankup.requirements;
|
package sh.okx.rankup.requirements;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.Rankup;
|
import sh.okx.rankup.Rankup;
|
||||||
|
|
||||||
@@ -29,6 +28,7 @@ public abstract class Requirement implements Cloneable {
|
|||||||
this.name = clone.name;
|
this.name = clone.name;
|
||||||
this.value = clone.value;
|
this.value = clone.value;
|
||||||
this.sub = clone.sub;
|
this.sub = clone.sub;
|
||||||
|
this.subRequirement = clone.subRequirement;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setValue(String value) {
|
public void setValue(String value) {
|
||||||
@@ -57,6 +57,13 @@ public abstract class Requirement implements Cloneable {
|
|||||||
return Integer.parseInt(value);
|
return Integer.parseInt(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
if (hasSubRequirement()) {
|
||||||
|
return name + "#" + sub;
|
||||||
|
} else {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a player meets this requirement
|
* Check if a player meets this requirement
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class BlockBreakRequirement extends ProgressiveRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getProgress(Player player) {
|
public double getProgress(Player player) {
|
||||||
return player.getStatistic(Statistic.MINE_BLOCK, Material.matchMaterial(getValueString()));
|
return player.getStatistic(Statistic.MINE_BLOCK, Material.matchMaterial(getSub()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class MobKillsRequirement extends ProgressiveRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getProgress(Player player) {
|
public double getProgress(Player player) {
|
||||||
return player.getStatistic(Statistic.KILL_ENTITY, EntityType.fromName(getValueString()));
|
return player.getStatistic(Statistic.KILL_ENTITY, EntityType.fromName(getSub()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: Rankup
|
name: Rankup
|
||||||
version: 3.5-beta.5
|
version: 3.5.2
|
||||||
main: sh.okx.rankup.Rankup
|
main: sh.okx.rankup.Rankup
|
||||||
author: Okx
|
author: Okx
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
|
|||||||
Reference in New Issue
Block a user