Cleaned up PAPI Expansion

This commit is contained in:
cj89898 2023-06-19 20:02:11 -05:00
parent 019d22d92a
commit 6fd4dd1403
17 changed files with 56 additions and 539 deletions

View File

@ -15,14 +15,10 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.TreeMap;
public class PapiExpansion extends PlaceholderExpansion {
private final Map<String, Placeholder> placeholders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
public PapiExpansion() {
init();
}
@Override
@ -37,8 +33,7 @@ public class PapiExpansion extends PlaceholderExpansion {
@Override
public String getVersion() {
//grab version from pom.xml
return "1.0,0";
return mcMMO.p.getDescription().getVersion();
}
@Override
@ -49,105 +44,41 @@ public class PapiExpansion extends PlaceholderExpansion {
@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) {
// Non player-specific placeholders
if (params.equalsIgnoreCase("is_xp_event_active")) {
return mcMMO.p.isXPEventEnabled() ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
}else if (params.equalsIgnoreCase("xprate")) {
return String.valueOf(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
}
public String getSkillXpRate(PrimarySkillType skill, Player player) {
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
}else if (params.equalsIgnoreCase("power_level_cap")) {
return mcMMO.p.getGeneralConfig().getPowerLevelCap()+"";
}
final McMMOPlayer user = UserManager.getPlayer(player);
if (user == null) return null;
if (params.startsWith("level_")) {
PrimarySkillType skill = PrimarySkillType.valueOf(params.substring(6).toUpperCase());
return skill == null ? null : user.getSkillLevel(skill)+"";
}else if (params.startsWith("xp_needed_")) {
PrimarySkillType skill = PrimarySkillType.valueOf(params.substring(10).toUpperCase());
return skill == null ? null : user.getXpToLevel(skill)+"";
}else if (params.startsWith("xp_remaining_")) {
PrimarySkillType skill = PrimarySkillType.valueOf(params.substring(13).toUpperCase());
return skill == null ? null : (user.getXpToLevel(skill) - user.getSkillXpLevel(skill))+"";
}else if (params.startsWith("xp_")) {
PrimarySkillType skill = PrimarySkillType.valueOf(params.substring(3).toUpperCase());
return skill == null ? null : user.getSkillXpLevel(skill)+"";
}else if (params.startsWith("rank_")) {
try {
return ExperienceAPI.getPlayerRankSkill(player.getUniqueId(), StringUtils.getCapitalized(params.substring(5)))+"";
} catch (Exception ex) {
return null;
}
}else if (params.startsWith("xprate_")) {
PrimarySkillType skill = PrimarySkillType.valueOf(params.substring(7).toUpperCase());
if (skill == null) return null;
double modifier = 1.0F;
if (Permissions.customXpBoost(player, skill))
modifier = ExperienceConfig.getInstance().getCustomXpPerkBoost();
else if (Permissions.quadrupleXp(player, skill))
@ -162,69 +93,29 @@ public class PapiExpansion extends PlaceholderExpansion {
modifier = 1.5;
else if (Permissions.oneAndOneTenthXp(player, skill))
modifier = 1.1;
return String.valueOf(modifier);
}else if (params.equalsIgnoreCase("power_level")) {
return user.getPowerLevel()+"";
}
//Party placeholders
final Party party = user.getParty();
if (params.equalsIgnoreCase("in_party")) {
return (party==null) ? PlaceholderAPIPlugin.booleanFalse() : PlaceholderAPIPlugin.booleanTrue();
}else if (params.equalsIgnoreCase("party_name")) {
return (party == null) ? "" : party.getName();
}else if (params.equalsIgnoreCase("is_party_leader")) {
if (party == null) return "";
return party.getLeader().getPlayerName().equals(player.getName()) ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
}else if (params.equalsIgnoreCase("party_leader")) {
return (party == null) ? "" : party.getLeader().getPlayerName();
}else if (params.equalsIgnoreCase("party_size")) {
return (party == null) ? "" : party.getMembers().size()+"";
}
return null;
}
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_<skillname>%
registerPlaceholder(new SkillLevelPlaceholder(this, skill));
//%mcmmo_xp_needed_<skillname>%
registerPlaceholder(new SkillExpNeededPlaceholder(this, skill));
//%mcmmo_xp_<skillname>%
registerPlaceholder(new SkillExpPlaceholder(this, skill));
//%mcmmo_xp_remaining_<skillname>%
registerPlaceholder(new SkillExpRemainingPlaceholder(this, skill));
//%mcmmo_rank_<skillname>%
registerPlaceholder(new SkillRankPlaceholder(this, skill));
//%mcmmo_xprate_<skillname>%
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));
};
}

View File

@ -1,29 +0,0 @@
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";
}
}

View File

@ -1,21 +0,0 @@
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";
}
}

View File

@ -1,22 +0,0 @@
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";
}
}

View File

@ -1,22 +0,0 @@
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";
}
}

View File

@ -1,22 +0,0 @@
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";
}
}

View File

@ -1,18 +0,0 @@
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();
}

View File

@ -1,22 +0,0 @@
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";
}
}

View File

@ -1,22 +0,0 @@
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";
}
}

View File

@ -1,26 +0,0 @@
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();
}
}

View File

@ -1,26 +0,0 @@
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();
}
}

View File

@ -1,25 +0,0 @@
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();
}
}

View File

@ -1,25 +0,0 @@
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();
}
}

View File

@ -1,25 +0,0 @@
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();
}
}

View File

@ -1,25 +0,0 @@
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();
}
}

View File

@ -1,22 +0,0 @@
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 <S extends PrimarySkillType> 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";
}
}

View File

@ -1,22 +0,0 @@
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 <S extends PrimarySkillType> XpRatePlaceholder(PapiExpansion papiExpansion) {
this.papiExpansion = papiExpansion;
}
@Override
public String process(Player player, String params) {
return papiExpansion.getXpRate(player);
}
@Override
public String getName() {
return "xprate";
}
}