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 b6b803a5..639e60b5 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 @@ -340,10 +340,10 @@ public class SkillTreeViewer extends EditableInventory { public Icon getIcon(IntegerCoordinates coordinates) { - boolean hasUpPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() - 1)); - boolean hasDownPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() + 1)); - boolean hasRightPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() + 1, coordinates.getY())); - boolean hasLeftPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() - 1, coordinates.getY())); + boolean hasUpPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() - 1)); + boolean hasDownPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() + 1)); + boolean hasRightPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() + 1, coordinates.getY())); + boolean hasLeftPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() - 1, coordinates.getY())); if (skillTree.isNode(coordinates)) { SkillTreeNode node = skillTree.getNode(coordinates); @@ -351,15 +351,23 @@ public class SkillTreeViewer extends EditableInventory { //If the node has its own display, it will be shown. if (node.hasIcon(nodeStatus)) return node.getIcon(nodeStatus); + NodeType nodeType = NodeType.getNodeType(hasUpPathOrNode, hasRightPathOrNode, hasDownPathOrNode, hasLeftPathOrNode); + DisplayInfo displayInfo = new NodeDisplayInfo(nodeType, nodeStatus); + //Takes the display defined in the skill tree config if it exists. + if (skillTree.hasIcon(displayInfo)) + return skillTree.getIcon(displayInfo); - NodeType nodeType = NodeType.getNodeType(hasUpPath, hasRightPath, hasDownPath, hasLeftPath); - Icon icon = icons.get(new NodeDisplayInfo(nodeType, nodeStatus)); + Icon icon = icons.get(displayInfo); Validate.notNull(icon, "The node " + node.getFullId() + " has no icon for the type " + nodeType + " and the status " + nodeStatus); return icon; } else { - PathType pathType = PathType.getPathType(hasUpPath, hasRightPath, hasDownPath, hasLeftPath); + PathType pathType = PathType.getPathType(hasUpPathOrNode, hasRightPathOrNode, hasDownPathOrNode, hasLeftPathOrNode); SkillTreePath path = skillTree.getPath(coordinates); - Icon icon = icons.get(new PathDisplayInfo(pathType, path.getStatus(playerData))); + DisplayInfo displayInfo = new PathDisplayInfo(pathType, path.getStatus(playerData)); + //Takes the display defined in the skill tree config if it exists. + if (skillTree.hasIcon(displayInfo)) + return skillTree.getIcon(displayInfo); + Icon icon = icons.get(displayInfo); Validate.notNull(icon, "There is no icon for the path type " + pathType + " and the status " + path.getStatus(playerData)); return icon; } 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 86b9ed64..8adeb0bf 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,11 +5,14 @@ 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.api.util.MMOCoreUtils; +import net.Indyuce.mmocore.gui.skilltree.display.*; import net.Indyuce.mmocore.manager.registry.RegisteredObject; import net.Indyuce.mmocore.skilltree.*; import org.apache.commons.lang.Validate; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -53,6 +56,9 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje //Caches the height of the skill tree protected final List roots = new ArrayList<>(); + protected final Map icons = new HashMap<>(); + + public SkillTree(ConfigurationSection config) { super(config); @@ -87,8 +93,24 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje } } } - } + //Loads all the pathDisplayInfo + for (PathStatus status : PathStatus.values()) + for (PathType pathType : PathType.values()) { + ConfigurationSection section = config.getConfigurationSection("display.paths." + MMOCoreUtils.ymlName(status.name()) + "." + MMOCoreUtils.ymlName(pathType.name())); + if (section != null) + icons.put(new PathDisplayInfo(pathType, status), new Icon(section)); + } + + //Loads all the nodeDisplayInfo + for (NodeStatus status : NodeStatus.values()) + for (NodeType nodeType : NodeType.values()) { + ConfigurationSection section = config.getConfigurationSection("display.nodes." + MMOCoreUtils.ymlName(status.name()) + "." + MMOCoreUtils.ymlName(nodeType.name())); + if (section != null) + icons.put(new NodeDisplayInfo(nodeType, status), new Icon(section)); + } + + } /** @@ -268,6 +290,14 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje return Objects.requireNonNull(nodes.get(name), "Could not find node in tree '" + id + "' with name '" + name + "'"); } + public boolean hasIcon(DisplayInfo displayInfo) { + return icons.containsKey(displayInfo); + } + + public Icon getIcon(DisplayInfo displayInfo) { + return icons.get(displayInfo); + } + public boolean isNode(String name) { return nodes.containsKey(name); diff --git a/MMOCore-Dist/src/main/resources/default/skill-trees/combat.yml b/MMOCore-Dist/src/main/resources/default/skill-trees/combat.yml index c2cf0c6f..2906b99f 100644 --- a/MMOCore-Dist/src/main/resources/default/skill-trees/combat.yml +++ b/MMOCore-Dist/src/main/resources/default/skill-trees/combat.yml @@ -521,18 +521,274 @@ paths: x: 2 y: 3 -icons: - unlocked: - 1: - item: 'GREEN_DYE' - locked: - 1: - item: "BROWN_DYE" - unlockable: - 1: - item: "BLUE_DYE" - fully-locked: - 1: - item: "BLACK_DYE" - path: - item: "WHITE_DYE" + +# This section is to have a specific display for the skill tree in the GUI. +# It is optional as if you don't fill it the config in gui/skill-tree.yml will be used. +# For each node it will first look if the node has a specific display, if not it will look if +# the display is defined in this section. If not it will use the default display in gui/skill-tree.yml. +# +#display: +# paths: +# unlocked: +# up: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# default: +# item: "WHITE_DYE" +# custom-model-data: 0 +# locked: +# up: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# default: +# item: "GRAY_DYE" +# custom-model-data: 0 +# fully-locked: +# up: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# default: +# item: "BLACK_DYE" +# custom-model-data: 0 +# nodes: +# unlocked: +# up-right-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# locked: +# up-right-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# unlockable: +# up-right-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# fully-locked: +# up-right-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 \ No newline at end of file diff --git a/MMOCore-Dist/src/main/resources/default/skill-trees/general.yml b/MMOCore-Dist/src/main/resources/default/skill-trees/general.yml index f1c4a679..06dd5058 100644 --- a/MMOCore-Dist/src/main/resources/default/skill-trees/general.yml +++ b/MMOCore-Dist/src/main/resources/default/skill-trees/general.yml @@ -493,20 +493,273 @@ nodes: - "&eAdditional magic skill damage in +%3" - - -icons: - unlocked: - 1: - item: 'GREEN_DYE' - locked: - 1: - item: "BROWN_DYE" - unlockable: - 1: - item: "BLUE_DYE" - fully-locked: - 1: - item: "BLACK_DYE" - path: - item: "WHITE_DYE" +# This section is to have a specific display for the skill tree in the GUI. +# It is optional as if you don't fill it the config in gui/skill-tree.yml will be used. +# For each node it will first look if the node has a specific display, if not it will look if +# the display is defined in this section. If not it will use the default display in gui/skill-tree.yml. +# +#display: +# paths: +# unlocked: +# up: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# default: +# item: "WHITE_DYE" +# custom-model-data: 0 +# locked: +# up: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# default: +# item: "GRAY_DYE" +# custom-model-data: 0 +# fully-locked: +# up: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# default: +# item: "BLACK_DYE" +# custom-model-data: 0 +# nodes: +# unlocked: +# up-right-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# locked: +# up-right-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# unlockable: +# up-right-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# fully-locked: +# up-right-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 \ No newline at end of file diff --git a/MMOCore-Dist/src/main/resources/default/skill-trees/mage-arcane-mage.yml b/MMOCore-Dist/src/main/resources/default/skill-trees/mage-arcane-mage.yml index cce40993..cd12d314 100644 --- a/MMOCore-Dist/src/main/resources/default/skill-trees/mage-arcane-mage.yml +++ b/MMOCore-Dist/src/main/resources/default/skill-trees/mage-arcane-mage.yml @@ -493,18 +493,273 @@ nodes: -icons: - unlocked: - 1: - item: 'GREEN_DYE' - locked: - 1: - item: "BROWN_DYE" - unlockable: - 1: - item: "BLUE_DYE" - fully-locked: - 1: - item: "BLACK_DYE" - path: - item: "WHITE_DYE" +# This section is to have a specific display for the skill tree in the GUI. +# It is optional as if you don't fill it the config in gui/skill-tree.yml will be used. +# For each node it will first look if the node has a specific display, if not it will look if +# the display is defined in this section. If not it will use the default display in gui/skill-tree.yml. +# +#display: +# paths: +# unlocked: +# up: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# default: +# item: "WHITE_DYE" +# custom-model-data: 0 +# locked: +# up: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# default: +# item: "GRAY_DYE" +# custom-model-data: 0 +# fully-locked: +# up: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# default: +# item: "BLACK_DYE" +# custom-model-data: 0 +# nodes: +# unlocked: +# up-right-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# locked: +# up-right-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# unlockable: +# up-right-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# fully-locked: +# up-right-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 \ No newline at end of file diff --git a/MMOCore-Dist/src/main/resources/default/skill-trees/rogue-marksman.yml b/MMOCore-Dist/src/main/resources/default/skill-trees/rogue-marksman.yml index 7e11b0d5..b83f6a50 100644 --- a/MMOCore-Dist/src/main/resources/default/skill-trees/rogue-marksman.yml +++ b/MMOCore-Dist/src/main/resources/default/skill-trees/rogue-marksman.yml @@ -489,18 +489,273 @@ nodes: -icons: - unlocked: - 1: - item: 'GREEN_DYE' - locked: - 1: - item: "BROWN_DYE" - unlockable: - 1: - item: "BLUE_DYE" - fully-locked: - 1: - item: "BLACK_DYE" - path: - item: "WHITE_DYE" +# This section is to have a specific display for the skill tree in the GUI. +# It is optional as if you don't fill it the config in gui/skill-tree.yml will be used. +# For each node it will first look if the node has a specific display, if not it will look if +# the display is defined in this section. If not it will use the default display in gui/skill-tree.yml. +# +#display: +# paths: +# unlocked: +# up: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# default: +# item: "WHITE_DYE" +# custom-model-data: 0 +# locked: +# up: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# default: +# item: "GRAY_DYE" +# custom-model-data: 0 +# fully-locked: +# up: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# default: +# item: "BLACK_DYE" +# custom-model-data: 0 +# nodes: +# unlocked: +# up-right-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# locked: +# up-right-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# unlockable: +# up-right-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# fully-locked: +# up-right-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 diff --git a/MMOCore-Dist/src/main/resources/default/skill-trees/warrior-paladin.yml b/MMOCore-Dist/src/main/resources/default/skill-trees/warrior-paladin.yml index 77cb9e95..98bcc788 100644 --- a/MMOCore-Dist/src/main/resources/default/skill-trees/warrior-paladin.yml +++ b/MMOCore-Dist/src/main/resources/default/skill-trees/warrior-paladin.yml @@ -488,21 +488,273 @@ nodes: - "&eAdditional on-hit weapon damage in +%2." - - - -icons: - unlocked: - 1: - item: 'GREEN_DYE' - locked: - 1: - item: "BROWN_DYE" - unlockable: - 1: - item: "BLUE_DYE" - fully-locked: - 1: - item: "BLACK_DYE" - path: - item: "WHITE_DYE" +# This section is to have a specific display for the skill tree in the GUI. +# It is optional as if you don't fill it the config in gui/skill-tree.yml will be used. +# For each node it will first look if the node has a specific display, if not it will look if +# the display is defined in this section. If not it will use the default display in gui/skill-tree.yml. +# +#display: +# paths: +# unlocked: +# up: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_DYE" +# custom-model-data: 0 +# right: +# item: "WHITE_DYE" +# custom-model-data: 0 +# default: +# item: "WHITE_DYE" +# custom-model-data: 0 +# locked: +# up: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_DYE" +# custom-model-data: 0 +# right: +# item: "GRAY_DYE" +# custom-model-data: 0 +# default: +# item: "GRAY_DYE" +# custom-model-data: 0 +# fully-locked: +# up: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_DYE" +# custom-model-data: 0 +# right: +# item: "BLACK_DYE" +# custom-model-data: 0 +# default: +# item: "BLACK_DYE" +# custom-model-data: 0 +# nodes: +# unlocked: +# up-right-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "WHITE_CONCRETE" +# custom-model-data: 0 +# locked: +# up-right-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# right: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# left: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# up: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# down: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "GRAY_CONCRETE" +# custom-model-data: 0 +# unlockable: +# up-right-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLUE_CONCRETE" +# custom-model-data: 0 +# fully-locked: +# up-right-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right-left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# right: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# left: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# up: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# down: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 +# no-path: +# item: "BLACK_CONCRETE" +# custom-model-data: 0 \ No newline at end of file