forked from Upstream/mmocore
Modifications for class based skill tree
This commit is contained in:
parent
60859fa503
commit
3d4cd7ad00
@ -318,6 +318,10 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
|
||||
skillTree.setupNodeState(this);
|
||||
}
|
||||
|
||||
public Map<SkillTreeNode, NodeState> getNodeStates() {
|
||||
return nodeStates;
|
||||
}
|
||||
|
||||
public void addNodeLevel(SkillTreeNode node) {
|
||||
nodeLevels.put(node, nodeLevels.get(node) + 1);
|
||||
}
|
||||
|
@ -6,12 +6,14 @@ import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import de.erethon.dungeonsxl.player.DPlayerData;
|
||||
import io.lumine.mythic.lib.skill.Skill;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||
import net.Indyuce.mmocore.manager.data.PlayerDataManager;
|
||||
import net.Indyuce.mmocore.skill.RegisteredSkill;
|
||||
import net.Indyuce.mmocore.tree.SkillTreeNode;
|
||||
import net.Indyuce.mmocore.tree.skilltree.SkillTree;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
@ -196,9 +198,15 @@ public class SavedClassInformation {
|
||||
/*
|
||||
* resets information which much be reset after everything is saved.
|
||||
*/
|
||||
|
||||
for (SkillTree skillTree : player.getProfess().getSkillTrees())
|
||||
for (SkillTreeNode node : skillTree.getNodes())
|
||||
node.getExperienceTable().removeStatTriggers(player, node);
|
||||
player.getNodeLevels().clear();
|
||||
player.getNodeStates().clear();
|
||||
player.mapSkillLevels().forEach((skill, level) -> player.resetSkillLevel(skill));
|
||||
player.getAttributes().getInstances().forEach(ins -> ins.setBase(0));
|
||||
MMOCore.plugin.skillTreeManager.getAll().forEach(skillTree -> player.resetSkillTree(skillTree));
|
||||
|
||||
while (player.hasSkillBound(0))
|
||||
player.unbindSkill(0);
|
||||
|
||||
@ -219,6 +227,13 @@ public class SavedClassInformation {
|
||||
attributes.forEach((id, pts) -> player.getAttributes().setBaseAttribute(id, pts));
|
||||
skillTreePoints.forEach((skillTree, point) -> player.setSkillTreePoints(skillTree, point));
|
||||
nodeLevels.forEach((node, level) -> player.setNodeLevel(node, level));
|
||||
|
||||
nodeLevels.keySet().forEach(node -> node.getExperienceTable().claimStatTriggers(player, node));
|
||||
//We claim back the stats triggers
|
||||
for(SkillTree skillTree:profess.getSkillTrees())
|
||||
for(SkillTreeNode node:skillTree.getNodes())
|
||||
node.getExperienceTable().claimStatTriggers(player,node);
|
||||
|
||||
/*
|
||||
* unload current class information and set the new profess once
|
||||
* everything is changed
|
||||
|
@ -67,6 +67,15 @@ public class ExperienceTable {
|
||||
}
|
||||
|
||||
|
||||
public void removeStatTriggers(PlayerData playerData,ExperienceObject object) {
|
||||
for (ExperienceItem item : items) {
|
||||
int timesClaimed = playerData.getClaims(object, this, item);
|
||||
for (int i = 0; i < timesClaimed; i++)
|
||||
item.removeStatTriggers(playerData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called when a player joins and all the statTriggers are all triggered back
|
||||
*
|
||||
@ -76,9 +85,6 @@ public class ExperienceTable {
|
||||
public void claimStatTriggers(PlayerData data, ExperienceObject object) {
|
||||
for (ExperienceItem item : items) {
|
||||
int timesClaimed = data.getClaims(object, this, item);
|
||||
//MMOCore.log(object.getKey() + "." + getId() + "." + item.getId());
|
||||
//data.getItemClaims().keySet().forEach(str->MMOCore.log(str));
|
||||
//MMOCore.log(timesClaimed+"");
|
||||
for (int i = 0; i < timesClaimed; i++)
|
||||
item.applyStatTriggers(data);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user