update to 3.2-beta

add new requirements: placeholder and mcmmo-<skill>
This commit is contained in:
okx-code
2018-10-21 09:38:21 +01:00
parent 3bcd8ae455
commit 7394cf2b87
7 changed files with 143 additions and 16 deletions
+4 -1
View File
@@ -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'
} }
+9 -1
View File
@@ -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,16 +18,10 @@ 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() {
return value; 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);
}
}
+2 -2
View File
@@ -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: