add advanced achievements requirements (untested)

This commit is contained in:
okx-code
2018-11-10 20:20:18 +00:00
parent fe0d0aef8f
commit 4084c2819e
10 changed files with 113 additions and 24 deletions
+5 -1
View File
@@ -4,7 +4,7 @@ plugins {
} }
group 'sh.okx' group 'sh.okx'
version '3.2.1-beta.4' version '3.3-beta'
repositories { repositories {
mavenCentral() mavenCentral()
@@ -19,6 +19,9 @@ repositories {
maven { maven {
url 'http://repo.extendedclip.com/content/repositories/placeholderapi/' url 'http://repo.extendedclip.com/content/repositories/placeholderapi/'
} }
maven {
url 'https://raw.github.com/PyvesB/AdvancedAchievements/mvn-repo/'
}
} }
dependencies { dependencies {
@@ -33,6 +36,7 @@ dependencies {
exclude group: 'org.bukkit' exclude group: 'org.bukkit'
} }
compile 'me.clip:placeholderapi:2.9.2' compile 'me.clip:placeholderapi:2.9.2'
compile 'com.hm.achievement:advanced-achievements-api:1.1.0'
// if compiling this you will have to download and install mcMMO locally // if compiling this you will have to download and install mcMMO locally
compile 'com.gmail.nossr50.mcMMO:mcMMO:1.6.0-SNAPSHOT' compile 'com.gmail.nossr50.mcMMO:mcMMO:1.6.0-SNAPSHOT'
} }
+8 -2
View File
@@ -38,8 +38,10 @@ 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.McMMOPowerLevelRequirement; import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsAchievementRequirement;
import sh.okx.rankup.requirements.requirement.McMMOSkillRequirement; import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsTotalRequirement;
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOPowerLevelRequirement;
import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillRequirement;
import sh.okx.rankup.requirements.requirement.MoneyRequirement; import sh.okx.rankup.requirements.requirement.MoneyRequirement;
import sh.okx.rankup.requirements.requirement.PermissionRequirement; import sh.okx.rankup.requirements.requirement.PermissionRequirement;
import sh.okx.rankup.requirements.requirement.PlaceholderRequirement; import sh.okx.rankup.requirements.requirement.PlaceholderRequirement;
@@ -198,6 +200,10 @@ public class Rankup extends JavaPlugin {
} }
requirementRegistry.addRequirement(new McMMOPowerLevelRequirement(this)); requirementRegistry.addRequirement(new McMMOPowerLevelRequirement(this));
} }
if (Bukkit.getPluginManager().isPluginEnabled("AdvancedAchievements")) {
requirementRegistry.addRequirement(new AdvancedAchievementsAchievementRequirement(this));
requirementRegistry.addRequirement(new AdvancedAchievementsTotalRequirement(this));
}
operationRegistry = new OperationRegistry(); operationRegistry = new OperationRegistry();
operationRegistry.addOperation("all", new AllOperation()); operationRegistry.addOperation("all", new AllOperation());
@@ -40,12 +40,4 @@ public class RequirementRegistry {
} }
return requirements; return requirements;
} }
public void apply(Player player, Set<Requirement> requirements) {
for (Requirement requirement : requirements) {
if (requirement instanceof DeductibleRequirement) {
((DeductibleRequirement) requirement).apply(player);
}
}
}
} }
@@ -15,16 +15,22 @@ public class GroupRequirement extends Requirement {
@Override @Override
public boolean check(Player player) { public boolean check(Player player) {
OUTER: return getRemaining(player) < 1;
for (String requiredGroup : getValueString().split(" ")) { }
@Override
public double getRemaining(Player player) {
int matched = 0;
String[] groups = getValueString().split(" ");
for (String requiredGroup : groups) {
for (String group : plugin.getPermissions().getPlayerGroups(null, player)) { for (String group : plugin.getPermissions().getPlayerGroups(null, player)) {
if (group.equalsIgnoreCase(requiredGroup)) { if (group.equalsIgnoreCase(requiredGroup)) {
continue OUTER; matched++;
break;
} }
} }
return false;
} }
return true; return groups.length - matched;
} }
@Override @Override
@@ -15,12 +15,19 @@ public class PermissionRequirement extends Requirement {
@Override @Override
public boolean check(Player player) { public boolean check(Player player) {
for(String permission : getValueString().split(" ")) { return getRemaining(player) < 1;
if(!player.hasPermission(permission)) { }
return false;
@Override
public double getRemaining(Player player) {
int matched = 0;
String[] permissions = getValueString().split(" ");
for(String permission : permissions) {
if(player.hasPermission(permission)) {
matched++;
} }
} }
return true; return permissions.length - matched;
} }
@Override @Override
@@ -0,0 +1,41 @@
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.Requirement;
public class AdvancedAchievementsAchievementRequirement extends Requirement {
public AdvancedAchievementsAchievementRequirement(Rankup plugin) {
super(plugin, "advancedachievements-achievement");
}
protected AdvancedAchievementsAchievementRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return getRemaining(player) < 1;
}
@Override
public double getRemaining(Player player) {
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
int total = 0;
String[] achievements = getValueString().split(" ");
for (String achievement : achievements) {
if (api.hasPlayerReceivedAchievement(player.getUniqueId(), achievement)) {
total++;
}
}
return achievements.length - total;
}
@Override
public Requirement clone() {
return new AdvancedAchievementsAchievementRequirement(this);
}
}
@@ -0,0 +1,33 @@
package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.Requirement;
public class AdvancedAchievementsTotalRequirement extends Requirement {
public AdvancedAchievementsTotalRequirement(Rankup plugin) {
super(plugin, "advancedachievements-total");
}
protected AdvancedAchievementsTotalRequirement(Requirement clone) {
super(clone);
}
@Override
public boolean check(Player player) {
return getRemaining(player) < 1;
}
@Override
public double getRemaining(Player player) {
AdvancedAchievementsAPI api = AdvancedAchievementsAPIFetcher.fetchInstance().get();
return getValueInt() - api.getPlayerTotalAchievements(player.getUniqueId());
}
@Override
public Requirement clone() {
return new AdvancedAchievementsTotalRequirement(this);
}
}
@@ -1,4 +1,4 @@
package sh.okx.rankup.requirements.requirement; package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -1,4 +1,4 @@
package sh.okx.rankup.requirements.requirement; package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
+2 -2
View File
@@ -1,9 +1,9 @@
name: Rankup name: Rankup
version: 3.2.1-beta.4 version: 3.3-beta
main: sh.okx.rankup.Rankup main: sh.okx.rankup.Rankup
author: Okx author: Okx
depend: [Vault] depend: [Vault]
softdepend: [PlaceholderAPI, mcMMO] softdepend: [PlaceholderAPI, mcMMO, AdvancedAchievements]
api-version: 1.13 api-version: 1.13
commands: commands: