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'
|
group 'sh.okx'
|
||||||
version '3.1.4'
|
version '3.2-beta'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
jcenter()
|
jcenter()
|
||||||
maven {
|
maven {
|
||||||
url 'http://nexus.hc.to/content/repositories/pub_releases'
|
url 'http://nexus.hc.to/content/repositories/pub_releases'
|
||||||
@@ -33,4 +34,6 @@ dependencies {
|
|||||||
exclude group: 'org.bukkit'
|
exclude group: 'org.bukkit'
|
||||||
}
|
}
|
||||||
compile 'me.clip:placeholderapi:2.9.+'
|
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;
|
package sh.okx.rankup;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
import org.bukkit.Bukkit;
|
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.NoneOperation;
|
||||||
import sh.okx.rankup.requirements.operation.OneOperation;
|
import sh.okx.rankup.requirements.operation.OneOperation;
|
||||||
import sh.okx.rankup.requirements.requirement.GroupRequirement;
|
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.MoneyRequirement;
|
||||||
|
import sh.okx.rankup.requirements.requirement.PlaceholderRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.PermissionRequirement;
|
import sh.okx.rankup.requirements.requirement.PermissionRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.PlaytimeMinutesRequirement;
|
import sh.okx.rankup.requirements.requirement.PlaytimeMinutesRequirement;
|
||||||
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
|
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
|
||||||
@@ -175,6 +177,12 @@ public class Rankup extends JavaPlugin {
|
|||||||
requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this));
|
requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this));
|
||||||
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));
|
||||||
|
if(Bukkit.getPluginManager().isPluginEnabled("mcMMO")) {
|
||||||
|
for(SkillType skill : SkillType.values()) {
|
||||||
|
requirementRegistry.addRequirement(new McMMOSkillRequirement(this, skill));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
operationRegistry = new OperationRegistry();
|
operationRegistry = new OperationRegistry();
|
||||||
operationRegistry.addOperation("all", new AllOperation());
|
operationRegistry.addOperation("all", new AllOperation());
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public class RankupExpansion extends PlaceholderExpansion {
|
|||||||
Requirement requirement = rank.getRequirement(requirementName);
|
Requirement requirement = rank.getRequirement(requirementName);
|
||||||
switch (params) {
|
switch (params) {
|
||||||
case "":
|
case "":
|
||||||
return placeholders.getSimpleFormat().format(orElse(requirement, Requirement::getValueDouble, 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 "percent_left":
|
case "percent_left":
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
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;
|
||||||
|
|
||||||
public abstract class Requirement implements Cloneable {
|
public abstract class Requirement implements Cloneable {
|
||||||
protected Rankup plugin;
|
protected final Rankup plugin;
|
||||||
@Getter
|
@Getter
|
||||||
protected String name;
|
protected final String name;
|
||||||
|
@Setter
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
public Requirement(Rankup plugin, String name) {
|
public Requirement(Rankup plugin, String name) {
|
||||||
@@ -16,15 +18,9 @@ public abstract class Requirement implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Requirement(Requirement clone) {
|
protected Requirement(Requirement clone) {
|
||||||
if (clone != null) {
|
this.plugin = clone.plugin;
|
||||||
this.plugin = clone.plugin;
|
this.name = clone.name;
|
||||||
this.name = clone.name;
|
this.value = clone.value;
|
||||||
this.value = clone.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getValueString() {
|
public String getValueString() {
|
||||||
|
|||||||
@@ -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
|
name: Rankup
|
||||||
version: 3.1.4
|
version: 3.2-beta
|
||||||
main: sh.okx.rankup.Rankup
|
main: sh.okx.rankup.Rankup
|
||||||
author: Okx
|
author: Okx
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
softdepend: [PlaceholderAPI]
|
softdepend: [PlaceholderAPI, mcMMO]
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
|
|||||||
Reference in New Issue
Block a user