forked from Upstream/mmocore
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:
parent
816fbc5722
commit
0d950bcd48
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user