This commit is contained in:
okx-code
2019-05-09 23:56:46 +01:00
parent e4ffa0425f
commit 60fad85cce
13 changed files with 50 additions and 32 deletions
+4 -3
View File
@@ -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'
} }
+1 -2
View File
@@ -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'\".");
} }
+11 -3
View File
@@ -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));
@@ -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 -1
View File
@@ -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]