use of com.archyx.aureliumskills.stats.Stat in project AureliumSkills by Archy-X.
the class StorageProvider method applyData.
protected void applyData(PlayerData playerData, Map<Skill, Integer> levels, Map<Skill, Double> xpLevels) {
for (Stat stat : plugin.getStatRegistry().getStats()) {
playerData.setStatLevel(stat, 0);
}
// Apply to object if in memory
for (Skill skill : Skills.values()) {
int level = levels.get(skill);
playerData.setSkillLevel(skill, level);
playerData.setSkillXp(skill, xpLevels.get(skill));
// Add stat levels
plugin.getRewardManager().getRewardTable(skill).applyStats(playerData, level);
}
// Reload stats
new StatLeveler(plugin).reloadStat(playerData.getPlayer(), Stats.HEALTH);
new StatLeveler(plugin).reloadStat(playerData.getPlayer(), Stats.LUCK);
new StatLeveler(plugin).reloadStat(playerData.getPlayer(), Stats.WISDOM);
// Immediately save to file
save(playerData.getPlayer(), false);
}
use of com.archyx.aureliumskills.stats.Stat in project AureliumSkills by Archy-X.
the class PlaceholderSupport method onPlaceholderRequest.
@Override
public String onPlaceholderRequest(Player player, String identifier) {
if (player == null) {
return "";
}
// Gets total combined skill level
if (identifier.equals("power")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(playerData.getPowerLevel());
}
}
// Gets HP with scaling as an integer
if (identifier.equals("hp")) {
return String.valueOf(Math.round(player.getHealth() * OptionL.getDouble(Option.HEALTH_HP_INDICATOR_SCALING)));
}
// Gets HP with scaling with 1 decimal
if (identifier.equals("hp_1")) {
return NumberUtil.format1(player.getHealth() * OptionL.getDouble(Option.HEALTH_HP_INDICATOR_SCALING));
}
// Gets max hp
if (identifier.equals("hp_max")) {
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
if (attribute != null) {
return String.valueOf(Math.round(attribute.getValue() * OptionL.getDouble(Option.HEALTH_HP_INDICATOR_SCALING)));
} else {
return "";
}
}
// Gets HP with scaling with 2 decimal
if (identifier.equals("hp_2")) {
return NumberUtil.format2(player.getHealth() * OptionL.getDouble(Option.HEALTH_HP_INDICATOR_SCALING));
}
// Gets HP Percent as an integer
if (identifier.equals("hp_percent")) {
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
if (attribute != null) {
return String.valueOf(Math.round(player.getHealth() / attribute.getValue()));
} else {
return "";
}
}
// Gets mana
if (identifier.equals("mana")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(playerData.getMana());
}
}
// Gets mana rounded to an integer
if (identifier.equals("mana_int")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(Math.round(playerData.getMana()));
}
}
// Gets max mana
if (identifier.equals("mana_max")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(playerData.getMaxMana());
}
}
// Gets max mana rounded to an integer
if (identifier.equals("mana_max_int")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(Math.round(playerData.getMaxMana()));
}
}
// Gets stat values
for (Stat stat : plugin.getStatRegistry().getStats()) {
if (identifier.equals(stat.name().toLowerCase(Locale.ENGLISH))) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(playerData.getStatLevel(stat));
}
} else if (identifier.equals(stat.name().toLowerCase(Locale.ROOT) + "_int")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(Math.round(playerData.getStatLevel(stat)));
}
}
}
// Gets skill levels
for (Skill skill : plugin.getSkillRegistry().getSkills()) {
if (identifier.equals(skill.name().toLowerCase(Locale.ENGLISH))) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return String.valueOf(playerData.getSkillLevel(skill));
}
} else if (identifier.equals(skill.name().toLowerCase(Locale.ENGLISH) + "_roman")) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
return RomanNumber.toRoman(playerData.getSkillLevel(skill));
}
}
}
if (identifier.startsWith("lb_")) {
String leaderboardType = TextUtil.replace(identifier, "lb_", "");
if (leaderboardType.startsWith("power_")) {
int place = NumberUtils.toInt(TextUtil.replace(leaderboardType, "power_", ""));
if (place > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getPowerLeaderboard(place, 1);
if (list.size() > 0) {
SkillValue skillValue = list.get(0);
String name = Bukkit.getOfflinePlayer(skillValue.getId()).getName();
return (name != null ? name : "?") + " - " + skillValue.getLevel();
} else
return "";
} else {
if (identifier.endsWith("name")) {
int namePlace = NumberUtils.toInt(TextUtil.replace(leaderboardType, "power_", "", "_name", ""));
if (namePlace > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getPowerLeaderboard(namePlace, 1);
if (list.size() > 0) {
SkillValue skillValue = list.get(0);
String name = Bukkit.getOfflinePlayer(skillValue.getId()).getName();
return name != null ? name : "?";
} else
return "";
}
} else if (identifier.endsWith("value")) {
int valuePlace = NumberUtils.toInt(TextUtil.replace(leaderboardType, "power_", "", "_value", ""));
if (valuePlace > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getPowerLeaderboard(valuePlace, 1);
if (list.size() > 0) {
SkillValue playerSkill = list.get(0);
return String.valueOf(playerSkill.getLevel());
} else
return "";
}
}
}
} else {
for (Skill skill : plugin.getSkillRegistry().getSkills()) {
if (leaderboardType.startsWith(skill.name().toLowerCase(Locale.ENGLISH) + "_")) {
int place = NumberUtils.toInt(TextUtil.replace(leaderboardType, skill.name().toLowerCase(Locale.ENGLISH) + "_", ""));
if (place > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getLeaderboard(skill, 1, 1);
if (list.size() > 0) {
SkillValue skillValue = list.get(0);
String name = Bukkit.getOfflinePlayer(skillValue.getId()).getName();
return (name != null ? name : "?") + " - " + skillValue.getLevel();
} else
return "";
} else {
if (identifier.endsWith("name")) {
int namePlace = NumberUtils.toInt(TextUtil.replace(leaderboardType, skill.name().toLowerCase(Locale.ENGLISH) + "_", "", "_name", ""));
if (namePlace > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getLeaderboard(skill, namePlace, 1);
if (list.size() > 0) {
SkillValue skillValue = list.get(0);
String name = Bukkit.getOfflinePlayer(skillValue.getId()).getName();
return name != null ? name : "?";
} else
return "";
}
} else if (identifier.endsWith("value")) {
int valuePlace = NumberUtils.toInt(TextUtil.replace(leaderboardType, skill.name().toLowerCase(Locale.ENGLISH) + "_", "", "_value", ""));
if (valuePlace > 0) {
List<SkillValue> list = plugin.getLeaderboardManager().getLeaderboard(skill, valuePlace, 1);
if (list.size() > 0) {
SkillValue skillValue = list.get(0);
return String.valueOf(skillValue.getLevel());
} else
return "";
}
}
}
}
}
}
}
if (identifier.equals("rank")) {
return String.valueOf(plugin.getLeaderboardManager().getPowerRank(player.getUniqueId()));
}
if (identifier.startsWith("rank_")) {
String skillName = TextUtil.replace(identifier, "rank_", "");
Skill skill = plugin.getSkillRegistry().getSkill(skillName);
if (skill != null) {
return String.valueOf(plugin.getLeaderboardManager().getSkillRank(skill, player.getUniqueId()));
}
}
for (String id : xpIdentifiers) {
if (identifier.startsWith(id)) {
String skillName = TextUtil.replace(identifier, id, "");
Skill skill = plugin.getSkillRegistry().getSkill(skillName);
if (skill != null) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
switch(id) {
case "xp_required_formatted_":
return BigNumber.withSuffix(plugin.getLeveler().getXpRequirements().getXpRequired(skill, playerData.getSkillLevel(skill) + 1));
case "xp_required_":
return String.valueOf(plugin.getLeveler().getXpRequirements().getXpRequired(skill, playerData.getSkillLevel(skill) + 1));
case "xp_progress_int_":
return String.valueOf(Math.round(playerData.getSkillXp(skill) / (double) (plugin.getLeveler().getXpRequirements().getXpRequired(skill, playerData.getSkillLevel(skill) + 1)) * 100));
case "xp_progress_1_":
return NumberUtil.format1(playerData.getSkillXp(skill) / (double) (plugin.getLeveler().getXpRequirements().getXpRequired(skill, playerData.getSkillLevel(skill) + 1)) * 100);
case "xp_progress_":
return String.valueOf(playerData.getSkillXp(skill) / (double) (plugin.getLeveler().getXpRequirements().getXpRequired(skill, playerData.getSkillLevel(skill) + 1)) * 100);
case "xp_int_":
return String.valueOf(Math.round(playerData.getSkillXp(skill)));
case "xp_formatted_":
return BigNumber.withSuffix(Math.round(playerData.getSkillXp(skill)));
case "xp_":
return String.valueOf(playerData.getSkillXp(skill));
}
}
}
}
}
if (identifier.startsWith("multiplier")) {
if (identifier.equals("multiplier")) {
return NumberUtil.format2(plugin.getLeveler().getMultiplier(player));
}
String skillName = TextUtil.replace(identifier, "multiplier_", "");
Skill skill = plugin.getSkillRegistry().getSkill(skillName);
if (skill != null) {
return NumberUtil.format2(plugin.getLeveler().getMultiplier(player, skill));
}
}
if (identifier.startsWith("multiplier_percent")) {
if (identifier.equals("multiplier_percent")) {
return String.valueOf(Math.round((plugin.getLeveler().getMultiplier(player) - 1) * 100));
}
String skillName = TextUtil.replace(identifier, "multiplier_percent_", "");
Skill skill = plugin.getSkillRegistry().getSkill(skillName);
if (skill != null) {
return String.valueOf(Math.round((plugin.getLeveler().getMultiplier(player, skill) - 1) * 100));
}
}
return null;
}
use of com.archyx.aureliumskills.stats.Stat in project AureliumSkills by Archy-X.
the class Leveler method updateStats.
public void updateStats(Player player) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData == null)
return;
for (Stat stat : plugin.getStatRegistry().getStats()) {
playerData.setStatLevel(stat, 0);
}
for (Skill skill : plugin.getSkillRegistry().getSkills()) {
plugin.getRewardManager().getRewardTable(skill).applyStats(playerData, playerData.getSkillLevel(skill));
}
// Reloads modifiers
for (String key : playerData.getStatModifiers().keySet()) {
StatModifier modifier = playerData.getStatModifiers().get(key);
playerData.addStatLevel(modifier.getStat(), modifier.getValue());
}
statLeveler.reloadStat(player, Stats.HEALTH);
statLeveler.reloadStat(player, Stats.WISDOM);
}
use of com.archyx.aureliumskills.stats.Stat in project AureliumSkills by Archy-X.
the class ItemListener method scheduleTask.
public void scheduleTask() {
new BukkitRunnable() {
@Override
public void run() {
// For every player
for (Player player : Bukkit.getOnlinePlayers()) {
// Gets stored and held items
ItemStack stored = heldItems.get(player.getUniqueId());
ItemStack held = player.getInventory().getItemInMainHand();
// If stored item is not null
if (stored != null) {
// If stored item is different than held
if (!stored.equals(held)) {
Set<Stat> statsToReload = new HashSet<>();
// Remove modifiers from stored item
if (!stored.getType().equals(Material.AIR)) {
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
for (StatModifier modifier : modifiers.getModifiers(ModifierType.ITEM, stored)) {
playerData.removeStatModifier(modifier.getName(), false);
statsToReload.add(modifier.getStat());
}
for (Multiplier multiplier : multipliers.getMultipliers(ModifierType.ITEM, stored)) {
playerData.removeMultiplier(multiplier.getName());
}
// Remove valor
if (ItemUtils.isAxe(stored.getType())) {
foragingAbilities.removeValor(playerData);
}
// Remove stamina
if (ItemUtils.isPickaxe(stored.getType())) {
miningAbilities.removeStamina(playerData);
}
}
}
// Add modifiers from held item
if (!held.getType().equals(Material.AIR)) {
if (OptionL.getBoolean(Option.MODIFIER_AUTO_CONVERT_FROM_LEGACY)) {
held = requirements.convertFromLegacy(modifiers.convertFromLegacy(held));
if (!held.equals(player.getInventory().getItemInMainHand())) {
player.getInventory().setItemInMainHand(held);
}
}
PlayerData playerData = plugin.getPlayerManager().getPlayerData(player);
if (playerData != null) {
if (requirements.meetsRequirements(ModifierType.ITEM, held, player)) {
for (StatModifier modifier : modifiers.getModifiers(ModifierType.ITEM, held)) {
playerData.addStatModifier(modifier, false);
statsToReload.add(modifier.getStat());
}
for (Multiplier multiplier : multipliers.getMultipliers(ModifierType.ITEM, held)) {
playerData.addMultiplier(multiplier);
}
}
// Apply valor
if (ItemUtils.isAxe(held.getType())) {
foragingAbilities.applyValor(playerData);
}
// Apply stamina
if (ItemUtils.isPickaxe(held.getType())) {
miningAbilities.applyStamina(playerData);
}
}
}
for (Stat stat : statsToReload) {
statLeveler.reloadStat(player, stat);
}
// Set stored item to held item
heldItems.put(player.getUniqueId(), held.clone());
}
} else // If no mapping exists, add held item
{
heldItems.put(player.getUniqueId(), held.clone());
}
}
}
}.runTaskTimer(plugin, 0L, OptionL.getInt(Option.MODIFIER_ITEM_CHECK_PERIOD));
scheduleOffHandTask();
}
use of com.archyx.aureliumskills.stats.Stat in project AureliumSkills by Archy-X.
the class Modifiers method getModifiers.
public List<StatModifier> getModifiers(ModifierType type, ItemStack item) {
if (isNBTDisabled())
return new ArrayList<>();
NBTItem nbtItem = new NBTItem(item);
List<StatModifier> modifiers = new ArrayList<>();
NBTCompound compound = ItemUtils.getModifiersTypeCompound(nbtItem, type);
for (String key : compound.getKeys()) {
Stat stat = plugin.getStatRegistry().getStat(key);
if (stat != null) {
double value = compound.getDouble(key);
if (type == ModifierType.ITEM) {
modifiers.add(new StatModifier("AureliumSkills.Modifiers.Item." + getName(stat), stat, value));
} else if (type == ModifierType.ARMOR) {
String slot = "Helmet";
String mat = item.getType().toString();
if (mat.contains("CHESTPLATE")) {
slot = "Chestplate";
} else if (mat.contains("LEGGINGS")) {
slot = "Leggings";
} else if (mat.contains("BOOTS")) {
slot = "Boots";
}
modifiers.add(new StatModifier("AureliumSkills.Modifiers.Armor." + slot + "." + getName(stat), stat, value));
}
}
}
return modifiers;
}
Aggregations