Bug Fixing for "point-consumed" field for skill Trees. You can now set the number of points that are consumed each time you level up a node.

This commit is contained in:
Ka0rX 2023-04-06 16:06:37 +01:00
parent 816fbc5722
commit 0d950bcd48
3 changed files with 6 additions and 8 deletions

View File

@ -206,9 +206,6 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
skillTreePoints.put(id, skillTreePoints.getOrDefault(id, 0) + val);
}
public int countSkillTreePoints(SkillTree skillTree) {
return nodeLevels.keySet().stream().filter(node -> node.getTree().equals(skillTree)).mapToInt(node -> nodeLevels.get(node) * node.getSkillTreePointsConsumed()).sum();
}
/**
* Make a copy to make sure that the object
@ -339,7 +336,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
}
public void setNodeLevel(SkillTreeNode node, int nodeLevel) {
int delta = nodeLevel - nodeLevels.getOrDefault(node, 0);
int delta = (nodeLevel - nodeLevels.getOrDefault(node, 0))*node.getSkillTreePointsConsumed();
pointSpent.put(node.getTree(), pointSpent.getOrDefault(node.getTree(), 0) + delta);
nodeLevels.put(node, nodeLevel);
}

View File

@ -248,6 +248,7 @@ public class SkillTreeViewer extends EditableInventory {
holders.register("max-level", node.getMaxLevel());
holders.register("max-children", node.getMaxChildren());
holders.register("size", node.getSize());
holders.register("point-consumed", node.getSkillTreePointsConsumed());
}
int maxPointSpent = inv.getSkillTree().getMaxPointSpent();
holders.register("max-point-spent", maxPointSpent == Integer.MAX_VALUE ? "" : maxPointSpent);
@ -367,7 +368,7 @@ public class SkillTreeViewer extends EditableInventory {
open();
}
if (item.getFunction().equals("reallocation")) {
int spent = playerData.countSkillTreePoints(skillTree);
int spent = playerData.getPointSpent(skillTree);
if (spent < 1) {
MMOCore.plugin.configManager.getSimpleMessage("no-skill-tree-points-spent").send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
@ -381,7 +382,7 @@ public class SkillTreeViewer extends EditableInventory {
event.setCancelled(true);
return;
} else {
int reallocated = playerData.countSkillTreePoints(skillTree);
int reallocated = playerData.getPointSpent(skillTree);
//We remove all the nodeStates progress
playerData.giveSkillTreePoints(skillTree.getId(), reallocated);
playerData.giveSkillTreeReallocationPoints(-1);
@ -446,7 +447,7 @@ public class SkillTreeViewer extends EditableInventory {
//Else the player doesn't doesn't have the skill tree points
else {
MMOCore.plugin.configManager.getSimpleMessage("not-enough-skill-tree-points").send(player);
MMOCore.plugin.configManager.getSimpleMessage("not-enough-skill-tree-points", "point", "" + node.getSkillTreePointsConsumed()).send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
event.setCancelled(true);
return;

View File

@ -60,7 +60,7 @@ public class SkillTreeNode implements ExperienceObject {
name = Objects.requireNonNull(config.getString("name"), "Could not find node name");
size = Objects.requireNonNull(config.getInt("size"));
isRoot = config.getBoolean("is-root", false);
skillTreePointsConsumed=config.getInt("skill-tree-points",1);
skillTreePointsConsumed=config.getInt("point-consumed",1);
Validate.isTrue(skillTreePointsConsumed>0,"The skill tree points consumed by a node must be greater than 0.");
if (config.contains("lores"))
for (String key : config.getConfigurationSection("lores").getKeys(false))