update to 3.2-beta
add new requirements: placeholder and mcmmo-<skill>
This commit is contained in:
+4
-1
@@ -4,10 +4,11 @@ plugins {
|
||||
}
|
||||
|
||||
group 'sh.okx'
|
||||
version '3.1.4'
|
||||
version '3.2-beta'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
maven {
|
||||
url 'http://nexus.hc.to/content/repositories/pub_releases'
|
||||
@@ -33,4 +34,6 @@ dependencies {
|
||||
exclude group: 'org.bukkit'
|
||||
}
|
||||
compile 'me.clip:placeholderapi:2.9.+'
|
||||
// if compiling this you will have to download and install mcMMO locally
|
||||
compile 'com.gmail.nossr50.mcMMO:mcMMO:1.6.0-SNAPSHOT'
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package sh.okx.rankup;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import lombok.Getter;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -37,7 +37,9 @@ import sh.okx.rankup.requirements.operation.AnyOperation;
|
||||
import sh.okx.rankup.requirements.operation.NoneOperation;
|
||||
import sh.okx.rankup.requirements.operation.OneOperation;
|
||||
import sh.okx.rankup.requirements.requirement.GroupRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.McMMOSkillRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.MoneyRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.PlaceholderRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.PermissionRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.PlaytimeMinutesRequirement;
|
||||
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
|
||||
@@ -175,6 +177,12 @@ public class Rankup extends JavaPlugin {
|
||||
requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this));
|
||||
requirementRegistry.addRequirement(new GroupRequirement(this));
|
||||
requirementRegistry.addRequirement(new PermissionRequirement(this));
|
||||
requirementRegistry.addRequirement(new PlaceholderRequirement(this));
|
||||
if(Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
||||
for(SkillType skill : SkillType.values()) {
|
||||
requirementRegistry.addRequirement(new McMMOSkillRequirement(this, skill));
|
||||
}
|
||||
}
|
||||
|
||||
operationRegistry = new OperationRegistry();
|
||||
operationRegistry.addOperation("all", new AllOperation());
|
||||
|
||||
@@ -103,7 +103,7 @@ public class RankupExpansion extends PlaceholderExpansion {
|
||||
Requirement requirement = rank.getRequirement(requirementName);
|
||||
switch (params) {
|
||||
case "":
|
||||
return placeholders.getSimpleFormat().format(orElse(requirement, Requirement::getValueDouble, 0));
|
||||
return orElse(requirement, Requirement::getValueString, "0");
|
||||
case "left":
|
||||
return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getRemaining(player), 0));
|
||||
case "percent_left":
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package sh.okx.rankup.requirements;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
|
||||
public abstract class Requirement implements Cloneable {
|
||||
protected Rankup plugin;
|
||||
protected final Rankup plugin;
|
||||
@Getter
|
||||
protected String name;
|
||||
protected final String name;
|
||||
@Setter
|
||||
private String value;
|
||||
|
||||
public Requirement(Rankup plugin, String name) {
|
||||
@@ -16,16 +18,10 @@ public abstract class Requirement implements Cloneable {
|
||||
}
|
||||
|
||||
protected Requirement(Requirement clone) {
|
||||
if (clone != null) {
|
||||
this.plugin = clone.plugin;
|
||||
this.name = clone.name;
|
||||
this.value = clone.value;
|
||||
}
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getValueString() {
|
||||
return value;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class McMMOSkillRequirement extends Requirement {
|
||||
private SkillType skill;
|
||||
|
||||
public McMMOSkillRequirement(Rankup plugin, SkillType skill) {
|
||||
super(plugin, "mcmmo-" + skill.toString().toLowerCase());
|
||||
this.skill = skill;
|
||||
}
|
||||
|
||||
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
|
||||
super(clone);
|
||||
this.skill = clone.skill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
return getRemaining(player) <= 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRemaining(Player player) {
|
||||
return Math.max(0, getValueInt() - UserManager.getPlayer(player).getSkillLevel(skill));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new McMMOSkillRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class PlaceholderRequirement extends Requirement {
|
||||
public PlaceholderRequirement(Rankup plugin) {
|
||||
super(plugin, "placeholder");
|
||||
}
|
||||
|
||||
public PlaceholderRequirement(PlaceholderRequirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
private double getValue(Player player) {
|
||||
String[] parts = getValueString().split(" ", 2);
|
||||
String parsed = PlaceholderAPI.setPlaceholders(player, parts[0]);
|
||||
if(!PlaceholderAPI.containsPlaceholders(parts[0]) || parsed.equals(parts[0])) {
|
||||
plugin.getLogger().severe(parts[0] + " is not a PlaceholderAPI placeholder!");
|
||||
return -1;
|
||||
}
|
||||
double value;
|
||||
try {
|
||||
value = Double.parseDouble(parsed);
|
||||
} catch(NumberFormatException ex) {
|
||||
plugin.getLogger().severe("Parsed placeholder '" +parsed + "' is not a valid number");
|
||||
return -1;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
private double getNeeded() {
|
||||
String needed = getValueString().split(" ", 2)[1];
|
||||
try {
|
||||
return Double.parseDouble(needed);
|
||||
} catch(NumberFormatException e) {
|
||||
plugin.getLogger().severe("Needed '" + needed + "' is not a valid number!");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
String[] parts = getValueString().split(" ");
|
||||
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!");
|
||||
}
|
||||
String value = parts[2];
|
||||
|
||||
// string operations
|
||||
switch(parts[1]) {
|
||||
case "=":
|
||||
return parsed.equals(value);
|
||||
}
|
||||
|
||||
// numeric operations
|
||||
double p = Double.parseDouble(parsed);
|
||||
double v = Double.parseDouble(value);
|
||||
switch(parts[1]) {
|
||||
case ">":
|
||||
return p > v;
|
||||
case ">=":
|
||||
return p >= v;
|
||||
case "<":
|
||||
return p < v;
|
||||
case "<=":
|
||||
return p <= v;
|
||||
}
|
||||
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRemaining(Player player) {
|
||||
return check(player) ? 0 : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new PlaceholderRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
name: Rankup
|
||||
version: 3.1.4
|
||||
version: 3.2-beta
|
||||
main: sh.okx.rankup.Rankup
|
||||
author: Okx
|
||||
depend: [Vault]
|
||||
softdepend: [PlaceholderAPI]
|
||||
softdepend: [PlaceholderAPI, mcMMO]
|
||||
api-version: 1.13
|
||||
|
||||
commands:
|
||||
|
||||
Reference in New Issue
Block a user