From f22043ebb52868598a78a560096dd262670f4a83 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sat, 17 Jun 2023 20:22:49 -0700 Subject: [PATCH] PAPI Support WIP --- pom.xml | 10 + .../nossr50/placeholders/PapiExpansion.java | 232 ++++++++++++++++++ .../PartyIsLeaderPlaceholder.java | 29 +++ .../PartyIsMemberPlaceholder.java | 21 ++ .../placeholders/PartyLeaderPlaceholder.java | 22 ++ .../placeholders/PartyNamePlaceholder.java | 22 ++ .../placeholders/PartySizePlaceholder.java | 22 ++ .../nossr50/placeholders/Placeholder.java | 18 ++ .../PowerLevelCapPlaceholder.java | 22 ++ .../placeholders/PowerLevelPlaceholder.java | 22 ++ .../SkillExpNeededPlaceholder.java | 26 ++ .../placeholders/SkillExpPlaceholder.java | 26 ++ .../SkillExpRemainingPlaceholder.java | 25 ++ .../placeholders/SkillLevelPlaceholder.java | 25 ++ .../placeholders/SkillRankPlaceholder.java | 25 ++ .../placeholders/SkillXpRatePlaceholder.java | 25 ++ .../XpEventActivePlaceholder.java | 22 ++ .../placeholders/XpRatePlaceholder.java | 22 ++ src/main/resources/plugin.yml | 2 +- 19 files changed, 617 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PartyIsLeaderPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PartyIsMemberPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PartyLeaderPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PartyNamePlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PartySizePlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/Placeholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PowerLevelCapPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/PowerLevelPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/XpEventActivePlaceholder.java create mode 100644 src/main/java/com/gmail/nossr50/placeholders/XpRatePlaceholder.java diff --git a/pom.xml b/pom.xml index 1cb45e652..fc3256895 100755 --- a/pom.xml +++ b/pom.xml @@ -241,10 +241,20 @@ sonatype-oss-snapshots1 https://s01.oss.sonatype.org/content/repositories/snapshots/ + + placeholderapi + https://repo.extendedclip.com/content/repositories/placeholderapi/ + + + me.clip + placeholderapi + 2.11.3 + provided + co.aikar acf-bukkit diff --git a/src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java b/src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java new file mode 100644 index 000000000..bb53e49c9 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java @@ -0,0 +1,232 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.api.ExperienceAPI; +import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.datatypes.party.Party; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.util.Permissions; +import com.gmail.nossr50.util.player.UserManager; +import com.gmail.nossr50.util.text.StringUtils; + +import me.clip.placeholderapi.PlaceholderAPIPlugin; +import org.bukkit.entity.Player; + +import java.util.Map; +import java.util.TreeMap; + +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class PapiExpansion extends PlaceholderExpansion { + private final Map placeholders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + + public PapiExpansion() { + init(); + } + + @Override + public String getIdentifier() { + return "mcmmo"; + } + + @Override + public String getAuthor() { + return "mcMMO Dev Team"; + } + + @Override + public String getVersion() { + //grab version from pom.xml + return "1.0,0"; + } + + @Override + public String getRequiredPlugin() { + return "mcMMO"; + } + + @Override + @Nullable + public String onPlaceholderRequest(final Player player, @NotNull final String params) { + String token; + String data = null; + int dataPosition = params.indexOf(":"); + + if (dataPosition != -1) { + token = params.substring(0, dataPosition); + data = params.substring(dataPosition + 1); + } else { + token = params; + } + + Placeholder placeholder = placeholders.get(token); + + if (placeholder != null) { + return placeholder.process(player, data); + } else { + return null; + } + } + + public Integer getSkillLevel(PrimarySkillType skill, Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + return user.getSkillLevel(skill); + } + + public Integer getExpNeeded(PrimarySkillType skill, Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + return user.getXpToLevel(skill); + } + + public Integer getExp(PrimarySkillType skill, Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + + return user.getSkillXpLevel(skill); + } + + + public Integer getExpRemaining(PrimarySkillType skill, Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + int current = user.getSkillXpLevel(skill); + int needed = user.getXpToLevel(skill); + + return needed - current; + } + + public Integer getRank(PrimarySkillType skill, Player player) { + try { + return ExperienceAPI.getPlayerRankSkill(player.getUniqueId(), StringUtils.getCapitalized(skill.toString())); + } catch (Exception ex) { + return null; + } + } + + public Integer getPowerLevel(Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + return user.getPowerLevel(); + } + + public Integer getPowerCap(Player player) { + return mcMMO.p.getGeneralConfig().getPowerLevelCap(); + } + + public String getPartyName(Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + final Party party = user.getParty(); + + return (party == null) ? null : party.getName(); + } + + public String getPartyLeader(Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + final Party party = user.getParty(); + return (party == null) ? null : party.getLeader().getPlayerName(); + } + + public Integer getPartySize(Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + final Party party = user.getParty(); + return (party == null) ? null : party.getMembers().size(); + } + + public String getXpRate(Player player) { + return String.valueOf(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); + } + + public String getSkillXpRate(PrimarySkillType skill, Player player) { + final McMMOPlayer user = UserManager.getPlayer(player); + if (user == null) return null; + + double modifier = 1.0F; + + if (Permissions.customXpBoost(player, skill)) + modifier = ExperienceConfig.getInstance().getCustomXpPerkBoost(); + else if (Permissions.quadrupleXp(player, skill)) + modifier = 4; + else if (Permissions.tripleXp(player, skill)) + modifier = 3; + else if (Permissions.doubleAndOneHalfXp(player, skill)) + modifier = 2.5; + else if (Permissions.doubleXp(player, skill)) + modifier = 2; + else if (Permissions.oneAndOneHalfXp(player, skill)) + modifier = 1.5; + else if (Permissions.oneAndOneTenthXp(player, skill)) + modifier = 1.1; + + return String.valueOf(modifier); + } + + public String isExpEventActive(Player player) { + return mcMMO.p.isXPEventEnabled() ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse(); + } + + public void registerPlaceholder(Placeholder placeholder) { + final Placeholder registered = placeholders.get(placeholder.getName()); + if (registered != null) + throw new IllegalStateException("Placeholder " + placeholder.getName() + " is already registered!"); + + placeholders.put(placeholder.getName(), placeholder); + } + + protected void init() { + + for (PrimarySkillType skill : PrimarySkillType.values()) { + // %mcmmo_level_% + registerPlaceholder(new SkillLevelPlaceholder(this, skill)); + + //%mcmmo_xp_needed_% + registerPlaceholder(new SkillExpNeededPlaceholder(this, skill)); + + //%mcmmo_xp_% + registerPlaceholder(new SkillExpPlaceholder(this, skill)); + + //%mcmmo_xp_remaining_% + registerPlaceholder(new SkillExpRemainingPlaceholder(this, skill)); + + //%mcmmo_rank_% + registerPlaceholder(new SkillRankPlaceholder(this, skill)); + + //%mcmmo_xprate_% + registerPlaceholder(new SkillXpRatePlaceholder(this, skill)); + } + + + //%mcmmo_power_level% + registerPlaceholder(new PowerLevelPlaceholder(this)); + + // %mcmmo_power_level_cap% + registerPlaceholder(new PowerLevelCapPlaceholder(this)); + + // %mcmmo_in_party% + registerPlaceholder(new PartyIsMemberPlaceholder(this)); + + /// %mcmmo_party_name% + registerPlaceholder(new PartyNamePlaceholder(this)); + + // %mcmmo_is_party_leader% + registerPlaceholder(new PartyIsLeaderPlaceholder(this)); + + // %mcmmo_party_leader% + registerPlaceholder(new PartyLeaderPlaceholder(this)); + + // %mcmmo_party_size% + registerPlaceholder(new PartySizePlaceholder(this)); + + // %mcmmo_is_xp_event_active% + registerPlaceholder(new XpEventActivePlaceholder(this)); + // %mcmmo_xprate% + registerPlaceholder(new XpRatePlaceholder(this)); + }; +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PartyIsLeaderPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PartyIsLeaderPlaceholder.java new file mode 100644 index 000000000..f10248f20 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PartyIsLeaderPlaceholder.java @@ -0,0 +1,29 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public class PartyIsLeaderPlaceholder implements Placeholder { + + private final PapiExpansion papiExpansion; + + public PartyIsLeaderPlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + /** + * {@inheritDoc} + */ + @Override + public String process(Player player, String params) { + String leader = papiExpansion.getPartyLeader(player); + return (leader.equals(player.getName())) ? "true" : "false"; + } + + /** + * {@inheritDoc} + */ + @Override + public String getName() { + return "is_party_leader"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PartyIsMemberPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PartyIsMemberPlaceholder.java new file mode 100644 index 000000000..ac385a4ba --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PartyIsMemberPlaceholder.java @@ -0,0 +1,21 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public class PartyIsMemberPlaceholder implements Placeholder { + + private final PapiExpansion papiExpansion; + public PartyIsMemberPlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + return (papiExpansion.getPartyName(player) == null) ? "false" : "true"; + } + + @Override + public String getName() { + return "in_party"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PartyLeaderPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PartyLeaderPlaceholder.java new file mode 100644 index 000000000..3f753bed9 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PartyLeaderPlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import org.apache.commons.lang.StringUtils; +import org.bukkit.entity.Player; + +public class PartyLeaderPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public PartyLeaderPlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + return StringUtils.stripToEmpty(papiExpansion.getPartyLeader(player)); + } + + @Override + public String getName() { + return "party_leader"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PartyNamePlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PartyNamePlaceholder.java new file mode 100644 index 000000000..2cec030d6 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PartyNamePlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import org.apache.commons.lang.StringUtils; +import org.bukkit.entity.Player; + +public class PartyNamePlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public PartyNamePlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + return StringUtils.stripToEmpty(papiExpansion.getPartyName(player)); + } + + @Override + public String getName() { + return "party_name"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PartySizePlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PartySizePlaceholder.java new file mode 100644 index 000000000..0d60d2786 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PartySizePlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public class PartySizePlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public PartySizePlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + Integer partySize = papiExpansion.getPartySize(player); + return (partySize == null) ? "" : partySize.toString(); + } + + @Override + public String getName() { + return "party_size"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/Placeholder.java b/src/main/java/com/gmail/nossr50/placeholders/Placeholder.java new file mode 100644 index 000000000..0df697325 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/Placeholder.java @@ -0,0 +1,18 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public interface Placeholder { + + /** + * @param player the player to process the placeholder for + * @param params the paramaters to be passed to the placeholder + * @return the value of the placeholder + */ + String process(Player player, String params); + + /** + * @return the name of the placeholder + */ + String getName(); +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PowerLevelCapPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PowerLevelCapPlaceholder.java new file mode 100644 index 000000000..ac4192a00 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PowerLevelCapPlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public class PowerLevelCapPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public PowerLevelCapPlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + Integer cap = papiExpansion.getPowerCap(player); + return (cap == null) ? "" : cap.toString(); + } + + @Override + public String getName() { + return "power_level_cap"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/PowerLevelPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/PowerLevelPlaceholder.java new file mode 100644 index 000000000..1b2916c23 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/PowerLevelPlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import org.bukkit.entity.Player; + +public class PowerLevelPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public PowerLevelPlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + Integer powerLevel = papiExpansion.getPowerLevel(player); + return (powerLevel == null) ? "" : powerLevel.toString(); + } + + @Override + public String getName() { + return "power_level"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java new file mode 100644 index 000000000..93cc967e9 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java @@ -0,0 +1,26 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillExpNeededPlaceholder implements Placeholder { + + private final PapiExpansion papiExpansion; + private final PrimarySkillType skillType; + + public SkillExpNeededPlaceholder(PapiExpansion papiExpansion, PrimarySkillType skillType) { + this.papiExpansion = papiExpansion; + this.skillType = skillType; + } + + @Override + public String process(Player player, String params) { + final Integer expNeeded = papiExpansion.getExpNeeded(skillType, player); + return (expNeeded == null) ? "" : expNeeded.toString(); + } + + @Override + public String getName() { + return "xp_needed_" + skillType.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java new file mode 100644 index 000000000..a6f9fd2bd --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java @@ -0,0 +1,26 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillExpPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + private final PrimarySkillType skill; + + public SkillExpPlaceholder(PapiExpansion papiExpansion, PrimarySkillType skill) { + this.papiExpansion = papiExpansion; + this.skill = skill; + } + + + @Override + public String process(Player player, String params) { + Integer exp = papiExpansion.getExp(skill, player); + return (exp == null) ? "" : exp.toString(); + } + + @Override + public String getName() { + return "xp_" + skill.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java new file mode 100644 index 000000000..6f8c61715 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java @@ -0,0 +1,25 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillExpRemainingPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + private final PrimarySkillType skill; + + public SkillExpRemainingPlaceholder(PapiExpansion papiExpansion, PrimarySkillType skill) { + this.papiExpansion = papiExpansion; + this.skill = skill; + } + + @Override + public String process(Player player, String params) { + final Integer expRemaining = papiExpansion.getExpRemaining(skill, player); + return (expRemaining == null) ? "" : expRemaining.toString(); + } + + @Override + public String getName() { + return "xp_remaining_" + skill.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java new file mode 100644 index 000000000..3521a5969 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java @@ -0,0 +1,25 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillLevelPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + private final PrimarySkillType skillType; + + public SkillLevelPlaceholder(PapiExpansion papiExpansion, PrimarySkillType skillType) { + this.papiExpansion = papiExpansion; + this.skillType = skillType; + } + + @Override + public String process(Player p, String params) { + final Integer skillLevel = papiExpansion.getSkillLevel(skillType, p); + return (skillLevel == null) ? "" : skillLevel.toString(); + } + + @Override + public String getName() { + return "level_" + skillType.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java new file mode 100644 index 000000000..1deca8e8a --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java @@ -0,0 +1,25 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillRankPlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + private final PrimarySkillType skill; + + public SkillRankPlaceholder(PapiExpansion papiExpansion, PrimarySkillType skill) { + this.papiExpansion = papiExpansion; + this.skill = skill; + } + + @Override + public String process(Player player, String params) { + Integer rank = papiExpansion.getRank(skill, player); + return (rank == null) ? "" : rank.toString(); + } + + @Override + public String getName() { + return "rank_" + skill.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java new file mode 100644 index 000000000..85fe7f461 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java @@ -0,0 +1,25 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class SkillXpRatePlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + private final PrimarySkillType skillType; + + public SkillXpRatePlaceholder(PapiExpansion papiExpansion, PrimarySkillType skillType) { + this.papiExpansion = papiExpansion; + this.skillType = skillType; + } + + @Override + public String process(Player p, String params) { + final String skillLevel = papiExpansion.getSkillXpRate(skillType, p); + return (skillLevel == null) ? "" : skillLevel; + } + + @Override + public String getName() { + return "xprate_" + skillType.toString().toLowerCase(); + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/XpEventActivePlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/XpEventActivePlaceholder.java new file mode 100644 index 000000000..e55c47ed6 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/XpEventActivePlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class XpEventActivePlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public XpEventActivePlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + return papiExpansion.isExpEventActive(player); + } + + @Override + public String getName() { + return "is_xp_event_active"; + } +} diff --git a/src/main/java/com/gmail/nossr50/placeholders/XpRatePlaceholder.java b/src/main/java/com/gmail/nossr50/placeholders/XpRatePlaceholder.java new file mode 100644 index 000000000..907c3865e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/placeholders/XpRatePlaceholder.java @@ -0,0 +1,22 @@ +package com.gmail.nossr50.placeholders; + +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import org.bukkit.entity.Player; + +public class XpRatePlaceholder implements Placeholder { + private final PapiExpansion papiExpansion; + + public XpRatePlaceholder(PapiExpansion papiExpansion) { + this.papiExpansion = papiExpansion; + } + + @Override + public String process(Player player, String params) { + return papiExpansion.getXpRate(player); + } + + @Override + public String getName() { + return "xprate"; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1708fe719..fec5c78c2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -14,7 +14,7 @@ author: nossr50 authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike] website: https://www.mcmmo.org main: com.gmail.nossr50.mcMMO -softdepend: [WorldGuard, CombatTag, HealthBar] +softdepend: [WorldGuard, CombatTag, HealthBar, PlaceholderAPI] load: POSTWORLD api-version: 1.13