3.5.3
add craft item requirement add total mob kills requirement add use item requirement add item requirement add block break requirement add amount_done placeholder support placeholderapi placeholders in commands
This commit is contained in:
+2
-2
@@ -3,7 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'sh.okx'
|
group 'sh.okx'
|
||||||
version '3.5.2'
|
version '3.5.3'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -30,7 +30,7 @@ dependencies {
|
|||||||
annotationProcessor 'org.projectlombok:lombok:1.18.6'
|
annotationProcessor 'org.projectlombok:lombok:1.18.6'
|
||||||
|
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||||
compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT'
|
compile 'org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT'
|
||||||
|
|
||||||
compile('net.milkbowl.vault:VaultAPI:1.7') {
|
compile('net.milkbowl.vault:VaultAPI:1.7') {
|
||||||
exclude group: 'org.bukkit'
|
exclude group: 'org.bukkit'
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchie
|
|||||||
import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsTotalRequirement;
|
import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsTotalRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOPowerLevelRequirement;
|
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOPowerLevelRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillRequirement;
|
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillUtil;
|
|
||||||
import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginVotesRequirement;
|
import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginVotesRequirement;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -185,6 +184,8 @@ public class Rankup extends JavaPlugin {
|
|||||||
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"));
|
||||||
|
} else {
|
||||||
|
prestiges = null;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -226,7 +227,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")) {
|
||||||
@@ -240,6 +241,10 @@ public class Rankup extends JavaPlugin {
|
|||||||
if (Bukkit.getPluginManager().isPluginEnabled("VotingPlugin")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("VotingPlugin")) {
|
||||||
requirementRegistry.addRequirement(new VotingPluginVotesRequirement(this));
|
requirementRegistry.addRequirement(new VotingPluginVotesRequirement(this));
|
||||||
}
|
}
|
||||||
|
requirementRegistry.addRequirement(new ItemRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new UseItemRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new TotalMobKillsRequirement(this));
|
||||||
|
requirementRegistry.addRequirement(new CraftItemRequirement(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupPermissions() {
|
private void setupPermissions() {
|
||||||
@@ -480,6 +485,7 @@ public class Rankup extends JavaPlugin {
|
|||||||
() -> percentFormat.format(Math.max(0, (requirement.getRemaining(player) / requirement.getValueDouble()) * 100)));
|
() -> percentFormat.format(Math.max(0, (requirement.getRemaining(player) / requirement.getValueDouble()) * 100)));
|
||||||
replaceRequirements(builder, Variable.PERCENT_DONE, requirement,
|
replaceRequirements(builder, Variable.PERCENT_DONE, requirement,
|
||||||
() -> percentFormat.format(Math.min(100, (1 - (requirement.getRemaining(player) / requirement.getValueDouble())) * 100)));
|
() -> percentFormat.format(Math.min(100, (1 - (requirement.getRemaining(player) / requirement.getValueDouble())) * 100)));
|
||||||
|
replaceRequirements(builder, Variable.AMOUNT_DONE, requirement, () -> simpleFormat.format(requirement.getValueDouble() - requirement.getRemaining(player)));
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ public enum Variable {
|
|||||||
MONEY_NEEDED,
|
MONEY_NEEDED,
|
||||||
AMOUNT,
|
AMOUNT,
|
||||||
AMOUNT_NEEDED,
|
AMOUNT_NEEDED,
|
||||||
|
AMOUNT_DONE,
|
||||||
PERCENT_DONE,
|
PERCENT_DONE,
|
||||||
PERCENT_LEFT,
|
PERCENT_LEFT,
|
||||||
SECONDS,
|
SECONDS,
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ public class RankupExpansion extends PlaceholderExpansion {
|
|||||||
return orElse(requirement, Requirement::getValueString, "0");
|
return orElse(requirement, Requirement::getValueString, "0");
|
||||||
case "left":
|
case "left":
|
||||||
return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getRemaining(player), 0));
|
return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getRemaining(player), 0));
|
||||||
|
case "done":
|
||||||
|
return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getValueDouble() - r.getRemaining(player), 0));
|
||||||
case "percent_left":
|
case "percent_left":
|
||||||
return placeholders.getPercentFormat().format(orElse(requirement, r -> (r.getRemaining(player) / r.getValueDouble()) * 100, 0));
|
return placeholders.getPercentFormat().format(orElse(requirement, r -> (r.getRemaining(player) / r.getValueDouble()) * 100, 0));
|
||||||
case "percent_done":
|
case "percent_done":
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -88,8 +89,9 @@ public class Rank {
|
|||||||
|
|
||||||
public void runCommands(Player player, String next) {
|
public void runCommands(Player player, String next) {
|
||||||
for (String command : commands) {
|
for (String command : commands) {
|
||||||
|
String string = new MessageBuilder(command).replaceRanks(player, this, next).toString();
|
||||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(),
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(),
|
||||||
new MessageBuilder(command).replaceRanks(player, this, next).toString());
|
PlaceholderAPI.setPlaceholders(player, string));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ public abstract class DeductibleRequirement extends ProgressiveRequirement {
|
|||||||
super(plugin, name);
|
super(plugin, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeductibleRequirement(Rankup plugin, String name, boolean subRequirement) {
|
||||||
|
super(plugin, name, subRequirement);
|
||||||
|
}
|
||||||
|
|
||||||
protected DeductibleRequirement(Requirement clone) {
|
protected DeductibleRequirement(Requirement clone) {
|
||||||
super(clone);
|
super(clone);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ public abstract class Requirement implements Cloneable {
|
|||||||
public void setValue(String value) {
|
public void setValue(String value) {
|
||||||
if (hasSubRequirement()) {
|
if (hasSubRequirement()) {
|
||||||
String[] parts = value.split(" ", 2);
|
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.sub = parts[0];
|
||||||
this.value = parts[1];
|
this.value = parts[1];
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -12,18 +12,17 @@ public class BlockBreakRequirement extends ProgressiveRequirement {
|
|||||||
super(plugin, "block-break", true);
|
super(plugin, "block-break", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean check(Player player) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected BlockBreakRequirement(BlockBreakRequirement clone) {
|
protected BlockBreakRequirement(BlockBreakRequirement clone) {
|
||||||
super(clone);
|
super(clone);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getProgress(Player player) {
|
public double getProgress(Player player) {
|
||||||
return player.getStatistic(Statistic.MINE_BLOCK, Material.matchMaterial(getSub()));
|
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
|
@Override
|
||||||
|
|||||||
@@ -0,0 +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.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class CraftItemRequirement extends ProgressiveRequirement {
|
||||||
|
public CraftItemRequirement(Rankup 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package sh.okx.rankup.requirements.requirement;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import sh.okx.rankup.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.DeductibleRequirement;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class ItemRequirement extends DeductibleRequirement {
|
||||||
|
public ItemRequirement(Rankup plugin) {
|
||||||
|
super(plugin, "item", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ItemRequirement(ItemRequirement clone) {
|
||||||
|
super(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getProgress(Player player) {
|
||||||
|
Material material = Material.matchMaterial(getSub());
|
||||||
|
int count = 0;
|
||||||
|
for (ItemStack item : player.getInventory().getStorageContents()) {
|
||||||
|
if (item != null && item.getType() == material) {
|
||||||
|
count += item.getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apply(Player player, double multiplier) {
|
||||||
|
player.getInventory().removeItem(new ItemStack(Material.matchMaterial(getSub()), (int) (getValueInt() * multiplier)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Requirement clone() {
|
||||||
|
return new ItemRequirement(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,8 @@ import sh.okx.rankup.Rankup;
|
|||||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
import sh.okx.rankup.requirements.Requirement;
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class MobKillsRequirement extends ProgressiveRequirement {
|
public class MobKillsRequirement extends ProgressiveRequirement {
|
||||||
public MobKillsRequirement(Rankup plugin) {
|
public MobKillsRequirement(Rankup plugin) {
|
||||||
super(plugin, "mob-kills", true);
|
super(plugin, "mob-kills", true);
|
||||||
@@ -18,7 +20,8 @@ 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(getSub()));
|
EntityType entity = Objects.requireNonNull(EntityType.fromName(getSub()), "Invalid entity type '" + getSub() + "' in mob-kills requirement.");
|
||||||
|
return player.getStatistic(Statistic.KILL_ENTITY, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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 TotalMobKillsRequirement extends ProgressiveRequirement {
|
||||||
|
public TotalMobKillsRequirement(Rankup plugin) {
|
||||||
|
super(plugin, "total-mob-kills");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +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.Rankup;
|
||||||
|
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||||
|
import sh.okx.rankup.requirements.Requirement;
|
||||||
|
|
||||||
|
public class UseItemRequirement extends ProgressiveRequirement {
|
||||||
|
public UseItemRequirement(Rankup 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,5 +1,5 @@
|
|||||||
name: Rankup
|
name: Rankup
|
||||||
version: 3.5.2
|
version: 3.5.3
|
||||||
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