diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index a2742ded..3b446677 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -318,7 +318,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc nodeStates.put(node, nodeStatus); } - public NodeStatus getNodeState(SkillTreeNode node) { + public NodeStatus getNodeStatus(SkillTreeNode node) { return nodeStates.get(node); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java index 4db8f3fe..4bf5728e 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java @@ -271,7 +271,7 @@ public class SkillTreeViewer extends EditableInventory { if (inv.getSkillTree().isNode(inv.getCoordinates(n))) { SkillTreeNode node = inv.getNode(n); holders.register("current-level", inv.getPlayerData().getNodeLevel(node)); - holders.register("current-state", inv.getPlayerData().getNodeState(node)); + holders.register("current-state", inv.getPlayerData().getNodeStatus(node)); holders.register("max-level", node.getMaxLevel()); holders.register("max-children", node.getMaxChildren()); holders.register("size", node.getSize()); @@ -345,12 +345,13 @@ public class SkillTreeViewer extends EditableInventory { if (skillTree.isNode(coordinates)) { SkillTreeNode node = skillTree.getNode(coordinates); + NodeStatus nodeStatus =playerData.getNodeStatus(node); //If the node has its own display, it will be shown. - if(node.getItem()!=null) - return new Icon(node.getItem(),node.getCustomModelData()); + if(node.hasIcon(nodeStatus)) + return node.getIcon(nodeStatus); NodeType nodeType = NodeType.getNodeType(hasUpPath, hasRightPath, hasDownPath, hasLeftPath); - return icons.get(new NodeDisplayInfo(nodeType, playerData.getNodeState(node))); + return icons.get(new NodeDisplayInfo(nodeType, nodeStatus)); } else { PathType pathType = PathType.getPathType(hasUpPath, hasRightPath, hasDownPath, hasLeftPath); SkillTreePath path = skillTree.getPath(coordinates); @@ -479,7 +480,7 @@ public class SkillTreeViewer extends EditableInventory { MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer()); open(); event.setCancelled(true); - } else if (playerData.getNodeState(node) == NodeStatus.LOCKED || playerData.getNodeState(node) == NodeStatus.FULLY_LOCKED) { + } else if (playerData.getNodeStatus(node) == NodeStatus.LOCKED || playerData.getNodeStatus(node) == NodeStatus.FULLY_LOCKED) { MMOCore.plugin.configManager.getSimpleMessage("locked-node").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); event.setCancelled(true); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java index 3ee7a830..a72b8a25 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreeNode.java @@ -12,7 +12,6 @@ import net.Indyuce.mmocore.gui.skilltree.display.Icon; import net.Indyuce.mmocore.skilltree.tree.SkillTree; import org.apache.commons.lang.Validate; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -227,7 +226,7 @@ public class SkillTreeNode implements ExperienceObject { public Placeholders getPlaceholders(PlayerData playerData) { Placeholders holders = new Placeholders(); holders.register("name", getName()); - holders.register("node-state", playerData.getNodeState(this)); + holders.register("node-state", playerData.getNodeStatus(this)); holders.register("size", getSize()); holders.register("level", playerData.getNodeLevel(this)); holders.register("max-level", getMaxLevel()); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreePath.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreePath.java index b094e397..7bef7757 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreePath.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/SkillTreePath.java @@ -7,7 +7,7 @@ import net.Indyuce.mmocore.skilltree.tree.SkillTree; public record SkillTreePath(SkillTree tree, IntegerCoordinates coordinates, SkillTreeNode from, SkillTreeNode to) { public PathStatus getStatus(PlayerData playerData) { - if (playerData.getNodeState(from) == NodeStatus.UNLOCKED && playerData.getNodeState(to) == NodeStatus.UNLOCKED) { + if (playerData.getNodeStatus(from) == NodeStatus.UNLOCKED && playerData.getNodeStatus(to) == NodeStatus.UNLOCKED) { return PathStatus.UNLOCKED; } return PathStatus.LOCKED; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/LinkedSkillTree.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/LinkedSkillTree.java index 3808041c..c3f4108f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/LinkedSkillTree.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/LinkedSkillTree.java @@ -84,7 +84,7 @@ public class LinkedSkillTree extends SkillTree { * We recursively label all the locked nodes who are connected to an unlockable node. **/ private void labelLockedNodes(PlayerData playerData) { - List unlockableNodes = nodes.values().stream().filter(node -> playerData.getNodeState(node) == NodeStatus.UNLOCKABLE).toList(); + List unlockableNodes = nodes.values().stream().filter(node -> playerData.getNodeStatus(node) == NodeStatus.UNLOCKABLE).toList(); for (SkillTreeNode node : unlockableNodes) { labelLockedNodesFrom(playerData, node); } @@ -109,7 +109,7 @@ public class LinkedSkillTree extends SkillTree { boolean isUnlockable = false; for (IntegerCoordinates coordinates : getCheckCoordinates(node.getCoordinates())) { if (isNode(coordinates)) - if (isNode(coordinates) && playerData.getNodeState(getNode(coordinates)) == NodeStatus.UNLOCKED && countUnlockedNeighbours(coordinates, playerData) <= getNode(coordinates).getMaxChildren()) + if (isNode(coordinates) && playerData.getNodeStatus(getNode(coordinates)) == NodeStatus.UNLOCKED && countUnlockedNeighbours(coordinates, playerData) <= getNode(coordinates).getMaxChildren()) isUnlockable = true; } return isUnlockable; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java index 3f267381..cc6b6e37 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skilltree/tree/SkillTree.java @@ -5,10 +5,6 @@ import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.api.util.PostLoadObject; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.gui.skilltree.display.DisplayInfo; -import net.Indyuce.mmocore.gui.skilltree.display.Icon; -import net.Indyuce.mmocore.gui.skilltree.display.NodeDisplayInfo; -import net.Indyuce.mmocore.gui.skilltree.display.NodeType; import net.Indyuce.mmocore.manager.registry.RegisteredObject; import net.Indyuce.mmocore.skilltree.IntegerCoordinates; import net.Indyuce.mmocore.skilltree.NodeStatus; @@ -21,7 +17,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.logging.Level; /** * A passive skill tree that features nodes, or passive skills. @@ -228,7 +223,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje numberChildren++; //We must check if the parent is Fully Locked or not and if it can unlock a new node(with its max children constraint) - if (numberChildren >= strongParent.getMaxChildren() || playerData.getNodeState(strongParent) == NodeStatus.FULLY_LOCKED) + if (numberChildren >= strongParent.getMaxChildren() || playerData.getNodeStatus(strongParent) == NodeStatus.FULLY_LOCKED) isFullyLockedFromStrongParent = true; } @@ -242,7 +237,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje for (SkillTreeNode child : softParent.getChildren()) if (playerData.getNodeLevel(child) > 0) numberChildren++; - if (numberChildren < softParent.getMaxChildren() && playerData.getNodeState(softParent) != NodeStatus.FULLY_LOCKED) + if (numberChildren < softParent.getMaxChildren() && playerData.getNodeStatus(softParent) != NodeStatus.FULLY_LOCKED) isFullyLockedFromSoftParent = false; }