mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2024-11-24 00:15:16 +01:00
Attributes now follow class slots
This commit is contained in:
parent
efc387d7a2
commit
5c35e35ee6
@ -31,6 +31,7 @@ import net.Indyuce.mmocore.api.Waypoint;
|
|||||||
import net.Indyuce.mmocore.api.event.PlayerCastSkillEvent;
|
import net.Indyuce.mmocore.api.event.PlayerCastSkillEvent;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
||||||
import net.Indyuce.mmocore.api.math.particle.SmallParticleEffect;
|
import net.Indyuce.mmocore.api.math.particle.SmallParticleEffect;
|
||||||
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes;
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes;
|
||||||
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
||||||
import net.Indyuce.mmocore.api.player.profess.PlayerClass.Subclass;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass.Subclass;
|
||||||
@ -103,7 +104,7 @@ public class PlayerData {
|
|||||||
this.attributeReallocationPoints = config.getInt("attribute-realloc-points");
|
this.attributeReallocationPoints = config.getInt("attribute-realloc-points");
|
||||||
this.level = config.getInt("level");
|
this.level = config.getInt("level");
|
||||||
this.experience = config.getInt("experience");
|
this.experience = config.getInt("experience");
|
||||||
this.profess = config.contains("class") ? MMOCore.plugin.classManager.get(config.getString("class")) : null;
|
this.profess = config.contains("class") ? MMOCore.plugin.classManager.get(config.getString("class")) : MMOCore.plugin.classManager.getDefaultClass();
|
||||||
this.mana = getStats().getStat(StatType.MAX_MANA);
|
this.mana = getStats().getStat(StatType.MAX_MANA);
|
||||||
this.stamina = getStats().getStat(StatType.MAX_STAMINA);
|
this.stamina = getStats().getStat(StatType.MAX_STAMINA);
|
||||||
this.stellium = getStats().getStat(StatType.MAX_STELLIUM);
|
this.stellium = getStats().getStat(StatType.MAX_STELLIUM);
|
||||||
@ -178,7 +179,10 @@ public class PlayerData {
|
|||||||
config.set("class-info." + key + ".level", info.getLevel());
|
config.set("class-info." + key + ".level", info.getLevel());
|
||||||
config.set("class-info." + key + ".experience", info.getExperience());
|
config.set("class-info." + key + ".experience", info.getExperience());
|
||||||
config.set("class-info." + key + ".skill-points", info.getSkillPoints());
|
config.set("class-info." + key + ".skill-points", info.getSkillPoints());
|
||||||
|
config.set("class-info." + key + ".attribute-points", info.getAttributePoints());
|
||||||
|
config.set("class-info." + key + ".attribute-realloc-points", info.getAttributeReallocationPoints());
|
||||||
info.getSkillKeys().forEach(skill -> config.set("class-info." + key + ".skill." + skill, info.getSkillLevel(skill)));
|
info.getSkillKeys().forEach(skill -> config.set("class-info." + key + ".skill." + skill, info.getSkillLevel(skill)));
|
||||||
|
info.getAttributeKeys().forEach(attribute -> config.set("class-info." + key + ".attribute." + attribute, info.getAttributeLevel(attribute)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -565,6 +569,25 @@ public class PlayerData {
|
|||||||
if (System.currentTimeMillis() > lastActionbarUpdate + 1200)
|
if (System.currentTimeMillis() > lastActionbarUpdate + 1200)
|
||||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getProfess().getManaDisplay().generateBar(getMana(), getStats().getStat(StatType.MAX_MANA))));
|
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(getProfess().getManaDisplay().generateBar(getMana(), getStats().getStat(StatType.MAX_MANA))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setAttributes(PlayerAttribute attribute, int value) {
|
||||||
|
setAttributes(attribute.getId(), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttributes(String id, int value) {
|
||||||
|
attributes.setBaseAttribute(id, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearAttributePoints() {
|
||||||
|
attributes.getAttributeInstances().forEach(ins -> ins.setBase(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> mapAttributePoints() {
|
||||||
|
Map<String, Integer> ap = new HashMap<String, Integer>();
|
||||||
|
attributes.getAttributeInstances().forEach(ins -> ap.put(ins.getId(), ins.getBase()));
|
||||||
|
return ap;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSkillLevel(Skill skill, int level) {
|
public void setSkillLevel(Skill skill, int level) {
|
||||||
setSkillLevel(skill.getId(), level);
|
setSkillLevel(skill.getId(), level);
|
||||||
|
@ -158,5 +158,16 @@ public class PlayerAttributes {
|
|||||||
int total = getTotal();
|
int total = getTotal();
|
||||||
attribute.getStats().forEach(stat -> data.getStats().getInstance(stat).addModifier("attribute." + attribute.getId(), attribute.getBuff(stat).multiply(total)));
|
attribute.getStats().forEach(stat -> data.getStats().getInstance(stat).addModifier("attribute." + attribute.getId(), attribute.getBuff(stat).multiply(total)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBaseAttribute(String id, int value) {
|
||||||
|
getAttributeInstances().forEach(ins -> {
|
||||||
|
if(ins.getId().equals(id))
|
||||||
|
ins.setBase(value);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,18 +7,25 @@ import java.util.Set;
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||||
import net.Indyuce.mmocore.api.player.profess.PlayerClass.ClassOption;
|
import net.Indyuce.mmocore.api.player.profess.PlayerClass.ClassOption;
|
||||||
import net.Indyuce.mmocore.api.skill.Skill;
|
import net.Indyuce.mmocore.api.skill.Skill;
|
||||||
|
|
||||||
public class SavedClassInformation {
|
public class SavedClassInformation {
|
||||||
private final int level, experience, skillPoints;
|
private final int level, experience, skillPoints, attributePoints, attributeReallocationPoints;
|
||||||
|
private final Map<String, Integer> attributes;
|
||||||
private final Map<String, Integer> skills;
|
private final Map<String, Integer> skills;
|
||||||
|
|
||||||
public SavedClassInformation(ConfigurationSection config) {
|
public SavedClassInformation(ConfigurationSection config) {
|
||||||
level = config.getInt("level");
|
level = config.getInt("level");
|
||||||
experience = config.getInt("experience");
|
experience = config.getInt("experience");
|
||||||
skillPoints = config.getInt("skill-points");
|
skillPoints = config.getInt("skill-points");
|
||||||
|
attributePoints = config.getInt("attribute-points");
|
||||||
|
attributeReallocationPoints = config.getInt("attribute-realloc-points");
|
||||||
|
|
||||||
|
attributes = new HashMap<>();
|
||||||
|
if (config.contains("attribute"))
|
||||||
|
config.getKeys(false).forEach(key -> attributes.put(key, config.getInt(key)));
|
||||||
skills = new HashMap<>();
|
skills = new HashMap<>();
|
||||||
if (config.contains("skill"))
|
if (config.contains("skill"))
|
||||||
config.getKeys(false).forEach(key -> skills.put(key, config.getInt(key)));
|
config.getKeys(false).forEach(key -> skills.put(key, config.getInt(key)));
|
||||||
@ -29,12 +36,18 @@ public class SavedClassInformation {
|
|||||||
skillPoints = player.getSkillPoints();
|
skillPoints = player.getSkillPoints();
|
||||||
experience = player.getExperience();
|
experience = player.getExperience();
|
||||||
skills = player.mapSkillLevels();
|
skills = player.mapSkillLevels();
|
||||||
|
attributes = player.mapAttributePoints();
|
||||||
|
attributePoints = player.getAttributePoints();
|
||||||
|
attributeReallocationPoints = player.getAttributeReallocationPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SavedClassInformation(int level, int experience, int skillPoints) {
|
public SavedClassInformation(int level, int experience, int skillPoints, int attributePoints, int attributeReallocationPoints) {
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.experience = experience;
|
this.experience = experience;
|
||||||
this.skillPoints = skillPoints;
|
this.skillPoints = skillPoints;
|
||||||
|
this.attributePoints = attributePoints;
|
||||||
|
this.attributeReallocationPoints = attributeReallocationPoints;
|
||||||
|
attributes = new HashMap<>();
|
||||||
skills = new HashMap<>();
|
skills = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +63,14 @@ public class SavedClassInformation {
|
|||||||
return skillPoints;
|
return skillPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getAttributePoints() {
|
||||||
|
return attributePoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAttributeReallocationPoints() {
|
||||||
|
return attributeReallocationPoints;
|
||||||
|
}
|
||||||
|
|
||||||
public Set<String> getSkillKeys() {
|
public Set<String> getSkillKeys() {
|
||||||
return skills.keySet();
|
return skills.keySet();
|
||||||
}
|
}
|
||||||
@ -66,8 +87,29 @@ public class SavedClassInformation {
|
|||||||
registerSkillLevel(skill.getId(), level);
|
registerSkillLevel(skill.getId(), level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerSkillLevel(String skill, int level) {
|
public void registerSkillLevel(String attribute, int level) {
|
||||||
skills.put(skill, level);
|
skills.put(attribute, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Set<String> getAttributeKeys() {
|
||||||
|
return attributes.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAttributeLevel(PlayerAttribute attribute) {
|
||||||
|
return getAttributeLevel(attribute.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAttributeLevel(String id) {
|
||||||
|
return attributes.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerAttributeLevel(PlayerAttribute attribute, int level) {
|
||||||
|
registerSkillLevel(attribute.getId(), level);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerAttributeLevel(String attribute, int level) {
|
||||||
|
attributes.put(attribute, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void load(PlayerClass profess, PlayerData player) {
|
public void load(PlayerClass profess, PlayerData player) {
|
||||||
@ -85,7 +127,8 @@ public class SavedClassInformation {
|
|||||||
player.clearSkillLevels();
|
player.clearSkillLevels();
|
||||||
while (player.hasSkillBound(0))
|
while (player.hasSkillBound(0))
|
||||||
player.unbindSkill(0);
|
player.unbindSkill(0);
|
||||||
|
player.clearAttributePoints();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reads this class info, applies it to the player. set class after
|
* reads this class info, applies it to the player. set class after
|
||||||
* changing level so the player stats can be calculated based on new
|
* changing level so the player stats can be calculated based on new
|
||||||
@ -94,7 +137,10 @@ public class SavedClassInformation {
|
|||||||
player.setLevel(level);
|
player.setLevel(level);
|
||||||
player.setExperience(experience);
|
player.setExperience(experience);
|
||||||
player.setSkillPoints(skillPoints);
|
player.setSkillPoints(skillPoints);
|
||||||
|
player.setAttributePoints(attributePoints);
|
||||||
|
player.setAttributeReallocationPoints(attributeReallocationPoints);
|
||||||
skills.keySet().forEach(id -> player.setSkillLevel(id, skills.get(id)));
|
skills.keySet().forEach(id -> player.setSkillLevel(id, skills.get(id)));
|
||||||
|
attributes.keySet().forEach(id -> player.setAttributes(id, attributes.get(id)));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* unload current class information and set the new profess once
|
* unload current class information and set the new profess once
|
||||||
|
@ -128,7 +128,9 @@ public class ClassConfirmation extends EditableInventory {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
playerData.giveClassPoints(-1);
|
playerData.giveClassPoints(-1);
|
||||||
(playerData.hasSavedClass(profess) ? playerData.getClassInfo(profess) : new SavedClassInformation(1, 0, 0)).load(profess, playerData);
|
(playerData.hasSavedClass(profess) ? playerData.getClassInfo(profess) : new SavedClassInformation(1, 0, 0, 0, 0)).load(profess, playerData);
|
||||||
|
while (playerData.hasSkillBound(0))
|
||||||
|
playerData.unbindSkill(0);
|
||||||
player.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("class-select", "class", profess.getName()));
|
player.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("class-select", "class", profess.getName()));
|
||||||
player.playSound(player.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 1, 1);
|
player.playSound(player.getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 1, 1);
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
|
Loading…
Reference in New Issue
Block a user