X-Prison_Reloaded/src/main/java/dev/drawethree/xprison/placeholders/XPrisonMVdWPlaceholder.java

269 lines
14 KiB
Java

package dev.drawethree.xprison.placeholders;
import be.maximvdw.placeholderapi.PlaceholderAPI;
import dev.drawethree.xprison.XPrison;
import dev.drawethree.xprison.autominer.utils.AutoMinerUtils;
import dev.drawethree.xprison.autosell.XPrisonAutoSell;
import dev.drawethree.xprison.enchants.XPrisonEnchants;
import dev.drawethree.xprison.gangs.XPrisonGangs;
import dev.drawethree.xprison.gangs.model.Gang;
import dev.drawethree.xprison.gems.XPrisonGems;
import dev.drawethree.xprison.mines.XPrisonMines;
import dev.drawethree.xprison.mines.model.mine.Mine;
import dev.drawethree.xprison.multipliers.XPrisonMultipliers;
import dev.drawethree.xprison.multipliers.multiplier.GlobalMultiplier;
import dev.drawethree.xprison.multipliers.multiplier.Multiplier;
import dev.drawethree.xprison.multipliers.multiplier.PlayerMultiplier;
import dev.drawethree.xprison.pickaxelevels.XPrisonPickaxeLevels;
import dev.drawethree.xprison.pickaxelevels.model.PickaxeLevel;
import dev.drawethree.xprison.prestiges.XPrisonPrestiges;
import dev.drawethree.xprison.ranks.XPrisonRanks;
import dev.drawethree.xprison.ranks.model.Rank;
import dev.drawethree.xprison.tokens.XPrisonTokens;
import dev.drawethree.xprison.utils.misc.MathUtils;
import dev.drawethree.xprison.utils.misc.TimeUtil;
import java.util.Optional;
public class XPrisonMVdWPlaceholder {
private final XPrison plugin;
public XPrisonMVdWPlaceholder(XPrison plugin) {
this.plugin = plugin;
}
public void register() {
this.registerTokensPlaceholders();
this.registerEnchantsPlaceholders();
this.registerGemsPlaceholders();
this.registerGangsPlaceholders();
this.registerMultipliersPlaceholders();
this.registerRanksPlaceholders();
this.registerPrestigesPlaceholders();
this.registerPickaxeLevelsPlaceholders();
this.registerAutoSellPlaceholders();
this.registerMinesPlaceholders();
}
private void registerEnchantsPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonEnchants.MODULE_NAME)) {
return;
}
}
private void registerPrestigesPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonPrestiges.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_prestige", event -> plugin.getPrestiges().getApi().getPlayerPrestige(event.getPlayer()).getPrefix());
PlaceholderAPI.registerPlaceholder(plugin, "xprison_prestige_id", event -> String.valueOf(plugin.getPrestiges().getApi().getPlayerPrestige(event.getPlayer()).getId()));
}
private void registerAutoSellPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonAutoSell.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_autominer_time", event -> {
int autominerTime = plugin.getAutoMiner().getManager().getAutoMinerTime(event.getPlayer());
return AutoMinerUtils.getAutoMinerTimeLeftFormatted(autominerTime);
});
}
private void registerPickaxeLevelsPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonPickaxeLevels.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_pickaxe_level", event -> {
Optional<PickaxeLevel> levelOptional = plugin.getPickaxeLevels().getApi().getPickaxeLevel(event.getPlayer());
return levelOptional.map(level -> String.valueOf(level.getLevel())).orElse("0");
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_pickaxe_progress", event -> plugin.getPickaxeLevels().getApi().getProgressBar(event.getPlayer()));
}
private void registerGangsPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonGangs.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_name", event -> {
Optional<Gang> optionalGang = this.plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
return optionalGang.map(gang -> this.plugin.getGangs().getConfig().getPlaceholder("gang-in-gang").replace("%gang%", gang.getName())).orElseGet(() -> this.plugin.getGangs().getConfig().getPlaceholder("gang-without"));
});
PlaceholderAPI.registerPlaceholder(plugin, "nvus_gang", event -> {
Optional<Gang> optionalGang = this.plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
return optionalGang.map(gang -> this.plugin.getGangs().getConfig().getPlaceholder("gang-in-gang").replace("%gang%", gang.getName())).orElseGet(() -> this.plugin.getGangs().getConfig().getPlaceholder("gang-without"));
});
PlaceholderAPI.registerPlaceholder(plugin, "nvus_gang_amt", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
// +1 because of leader
return optionalGang.map(gang -> String.valueOf(gang.getMembersOffline().size() + 1)).orElse("");
});
PlaceholderAPI.registerPlaceholder(plugin, "nvus_gang_leader", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
if (optionalGang.isPresent()) {
return optionalGang.get().getOwnerOffline().getName();
}
return "";
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang", event -> {
Optional<Gang> optionalGang = this.plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
return optionalGang.map(gang -> this.plugin.getGangs().getConfig().getPlaceholder("gang-in-gang").replace("%gang%", gang.getName())).orElseGet(() -> this.plugin.getGangs().getConfig().getPlaceholder("gang-without"));
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_value", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
if (optionalGang.isPresent()) {
return String.format("%,d", optionalGang.get().getValue());
} else {
return "";
}
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_has_gang", event -> plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer()).isPresent() ? "Yes" : "No");
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_is_leader", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
return optionalGang.map(gang -> gang.isOwner(event.getPlayer()) ? "Yes" : "No").orElse("");
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_leader_name", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
if (optionalGang.isPresent()) {
return optionalGang.get().getOwnerOffline().getName();
}
return "";
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_members_amount", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
// +1 because of leader
return optionalGang.map(gang -> String.valueOf(gang.getMembersOffline().size() + 1)).orElse("");
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gang_members_online", event -> {
Optional<Gang> optionalGang = plugin.getGangs().getGangsManager().getPlayerGang(event.getPlayer());
return optionalGang.map(gang -> String.valueOf(gang.getOnlinePlayers().size())).orElse("");
});
}
private void registerRanksPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonRanks.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_rank", event -> plugin.getRanks().getApi().getPlayerRank(event.getPlayer()).getPrefix());
PlaceholderAPI.registerPlaceholder(plugin, "xprison_next_rank", event -> {
Optional<Rank> nextRank = plugin.getRanks().getApi().getNextPlayerRank(event.getPlayer());
if (!nextRank.isPresent()) {
return "";
} else {
return nextRank.get().getPrefix();
}
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_rankup_progress", event -> String.format("%d%%", plugin.getRanks().getRanksManager().getRankupProgress(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_rankup_progress_bar", event -> plugin.getRanks().getRanksManager().getRankupProgressBar(event.getPlayer()));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_next_rank_cost_raw", event -> String.valueOf(plugin.getRanks().getRanksManager().getNextRankCost(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_next_rank_cost", event -> String.format("%,.2f", plugin.getRanks().getRanksManager().getNextRankCost(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_next_rank_cost_formatted", event -> MathUtils.formatNumber(plugin.getRanks().getRanksManager().getNextRankCost(event.getPlayer())));
}
private void registerMultipliersPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonMultipliers.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_multiplier_sell", event -> {
PlayerMultiplier sellMulti = plugin.getMultipliers().getApi().getSellMultiplier(event.getPlayer());
if (sellMulti == null || sellMulti.isExpired()) {
return String.format("%.2f", 0.0);
} else {
return String.format("%.2f", (1.0 + sellMulti.getMultiplier()));
}
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_multiplier_token", event -> {
PlayerMultiplier tokenMulti = plugin.getMultipliers().getApi().getTokenMultiplier(event.getPlayer());
if (tokenMulti == null || tokenMulti.isExpired()) {
return String.format("%.2f", 0.0);
} else {
return String.format("%.2f", (1.0 + tokenMulti.getMultiplier()));
}
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_multiplier_global_sell", event -> {
GlobalMultiplier sellMulti = plugin.getMultipliers().getApi().getGlobalSellMultiplier();
return String.format("%.2f", sellMulti.isExpired() ? 0.0 : sellMulti.getMultiplier());
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_multiplier_global_token", event -> {
GlobalMultiplier tokenMulti = plugin.getMultipliers().getApi().getGlobalTokenMultiplier();
return String.format("%.2f", tokenMulti.isExpired() ? 0.0 : tokenMulti.getMultiplier());
});
PlaceholderAPI.registerPlaceholder(plugin, "xprison_multiplier_rank", event -> {
Multiplier rankMulti = plugin.getMultipliers().getApi().getRankMultiplier(event.getPlayer());
if (rankMulti == null) {
return String.format("%.2f", 0.0);
} else {
return String.format("%.2f", rankMulti.getMultiplier());
}
});
}
private void registerGemsPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonGems.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gems_1", event -> String.valueOf(plugin.getGems().getGemsManager().getPlayerGems(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gems_2", event -> String.format("%,d", plugin.getGems().getGemsManager().getPlayerGems(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gems_3", event -> MathUtils.formatNumber(plugin.getGems().getGemsManager().getPlayerGems(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gems", event -> String.format("%,d", plugin.getGems().getGemsManager().getPlayerGems(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_gems_formatted", event -> MathUtils.formatNumber(plugin.getGems().getGemsManager().getPlayerGems(event.getPlayer())));
}
private void registerTokensPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonTokens.MODULE_NAME)) {
return;
}
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens", event -> String.format("%,d", plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens_formatted", event -> MathUtils.formatNumber(plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens_1", event -> String.valueOf(plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens_2", event -> String.format("%,d", plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens_3", event -> MathUtils.formatNumber(plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_blocks", event -> String.format("%,d", plugin.getTokens().getTokensManager().getPlayerBrokenBlocks(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_blocks_formatted", event -> MathUtils.formatNumber(plugin.getTokens().getTokensManager().getPlayerBrokenBlocks(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_blocks_1", event -> String.valueOf(plugin.getTokens().getTokensManager().getPlayerBrokenBlocks(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_blocks_2", event -> String.format("%,d", plugin.getTokens().getTokensManager().getPlayerBrokenBlocks(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_blocks_3", event -> MathUtils.formatNumber(plugin.getTokens().getTokensManager().getPlayerBrokenBlocks(event.getPlayer())));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_tokens_formatted", event -> MathUtils.formatNumber(plugin.getTokens().getTokensManager().getPlayerTokens(event.getPlayer())));
}
private void registerMinesPlaceholders() {
if (!this.plugin.isModuleEnabled(XPrisonMines.MODULE_NAME)) {
return;
}
for (Mine mine : this.plugin.getMines().getManager().getMines()) {
PlaceholderAPI.registerPlaceholder(plugin, "xprison_mine_" + mine.getName() + "_blocks_left", event -> String.format("%,d", mine.getCurrentBlocks()));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_mine_" + mine.getName() + "_blocks_left_percentage", event -> String.format("%,.2f", (double) mine.getCurrentBlocks() / mine.getTotalBlocks() * 100.0D));
PlaceholderAPI.registerPlaceholder(plugin, "xprison_mine_" + mine.getName() + "_reset_time", event -> TimeUtil.getTime(mine.getSecondsToNextReset()));
}
}
}