Added the possibility to redefine the display section inside of skill-tree folder in order to have different display for each skill-tree. (Check wiki)

This commit is contained in:
Ka0rX 2023-05-31 17:25:32 +01:00
parent 38065a1120
commit 4065737f35
7 changed files with 1398 additions and 89 deletions

View File

@ -340,10 +340,10 @@ public class SkillTreeViewer extends EditableInventory {
public Icon getIcon(IntegerCoordinates coordinates) { public Icon getIcon(IntegerCoordinates coordinates) {
boolean hasUpPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() - 1)); boolean hasUpPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() - 1));
boolean hasDownPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() + 1)); boolean hasDownPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX(), coordinates.getY() + 1));
boolean hasRightPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() + 1, coordinates.getY())); boolean hasRightPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() + 1, coordinates.getY()));
boolean hasLeftPath = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() - 1, coordinates.getY())); boolean hasLeftPathOrNode = skillTree.isPathOrNode(new IntegerCoordinates(coordinates.getX() - 1, coordinates.getY()));
if (skillTree.isNode(coordinates)) { if (skillTree.isNode(coordinates)) {
SkillTreeNode node = skillTree.getNode(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 the node has its own display, it will be shown.
if (node.hasIcon(nodeStatus)) if (node.hasIcon(nodeStatus))
return node.getIcon(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(displayInfo);
Icon icon = icons.get(new NodeDisplayInfo(nodeType, nodeStatus));
Validate.notNull(icon, "The node " + node.getFullId() + " has no icon for the type " + nodeType + " and the status " + nodeStatus); Validate.notNull(icon, "The node " + node.getFullId() + " has no icon for the type " + nodeType + " and the status " + nodeStatus);
return icon; return icon;
} else { } else {
PathType pathType = PathType.getPathType(hasUpPath, hasRightPath, hasDownPath, hasLeftPath); PathType pathType = PathType.getPathType(hasUpPathOrNode, hasRightPathOrNode, hasDownPathOrNode, hasLeftPathOrNode);
SkillTreePath path = skillTree.getPath(coordinates); 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)); Validate.notNull(icon, "There is no icon for the path type " + pathType + " and the status " + path.getStatus(playerData));
return icon; return icon;
} }

View File

@ -5,11 +5,14 @@ import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.util.PostLoadObject; import io.lumine.mythic.lib.api.util.PostLoadObject;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData; 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.manager.registry.RegisteredObject;
import net.Indyuce.mmocore.skilltree.*; import net.Indyuce.mmocore.skilltree.*;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -53,6 +56,9 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
//Caches the height of the skill tree //Caches the height of the skill tree
protected final List<SkillTreeNode> roots = new ArrayList<>(); protected final List<SkillTreeNode> roots = new ArrayList<>();
protected final Map<DisplayInfo, Icon> icons = new HashMap<>();
public SkillTree(ConfigurationSection config) { public SkillTree(ConfigurationSection config) {
super(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 + "'"); 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) { public boolean isNode(String name) {
return nodes.containsKey(name); return nodes.containsKey(name);

View File

@ -521,18 +521,274 @@ paths:
x: 2 x: 2
y: 3 y: 3
icons:
unlocked: # This section is to have a specific display for the skill tree in the GUI.
1: # It is optional as if you don't fill it the config in gui/skill-tree.yml will be used.
item: 'GREEN_DYE' # For each node it will first look if the node has a specific display, if not it will look if
locked: # the display is defined in this section. If not it will use the default display in gui/skill-tree.yml.
1: #
item: "BROWN_DYE" #display:
unlockable: # paths:
1: # unlocked:
item: "BLUE_DYE" # up:
fully-locked: # item: "WHITE_DYE"
1: # custom-model-data: 0
item: "BLACK_DYE" # up-right:
path: # item: "WHITE_DYE"
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

View File

@ -493,20 +493,273 @@ nodes:
- "&eAdditional magic skill damage in +%3" - "&eAdditional magic skill damage in +%3"
# 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.
icons: # For each node it will first look if the node has a specific display, if not it will look if
unlocked: # the display is defined in this section. If not it will use the default display in gui/skill-tree.yml.
1: #
item: 'GREEN_DYE' #display:
locked: # paths:
1: # unlocked:
item: "BROWN_DYE" # up:
unlockable: # item: "WHITE_DYE"
1: # custom-model-data: 0
item: "BLUE_DYE" # up-right:
fully-locked: # item: "WHITE_DYE"
1: # custom-model-data: 0
item: "BLACK_DYE" # up-left:
path: # item: "WHITE_DYE"
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

View File

@ -493,18 +493,273 @@ nodes:
icons: # This section is to have a specific display for the skill tree in the GUI.
unlocked: # It is optional as if you don't fill it the config in gui/skill-tree.yml will be used.
1: # For each node it will first look if the node has a specific display, if not it will look if
item: 'GREEN_DYE' # the display is defined in this section. If not it will use the default display in gui/skill-tree.yml.
locked: #
1: #display:
item: "BROWN_DYE" # paths:
unlockable: # unlocked:
1: # up:
item: "BLUE_DYE" # item: "WHITE_DYE"
fully-locked: # custom-model-data: 0
1: # up-right:
item: "BLACK_DYE" # item: "WHITE_DYE"
path: # custom-model-data: 0
item: "WHITE_DYE" # 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

View File

@ -489,18 +489,273 @@ nodes:
icons: # This section is to have a specific display for the skill tree in the GUI.
unlocked: # It is optional as if you don't fill it the config in gui/skill-tree.yml will be used.
1: # For each node it will first look if the node has a specific display, if not it will look if
item: 'GREEN_DYE' # the display is defined in this section. If not it will use the default display in gui/skill-tree.yml.
locked: #
1: #display:
item: "BROWN_DYE" # paths:
unlockable: # unlocked:
1: # up:
item: "BLUE_DYE" # item: "WHITE_DYE"
fully-locked: # custom-model-data: 0
1: # up-right:
item: "BLACK_DYE" # item: "WHITE_DYE"
path: # custom-model-data: 0
item: "WHITE_DYE" # 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

View File

@ -488,21 +488,273 @@ nodes:
- "&eAdditional on-hit weapon damage in +%2." - "&eAdditional on-hit weapon damage in +%2."
# 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
icons: # the display is defined in this section. If not it will use the default display in gui/skill-tree.yml.
unlocked: #
1: #display:
item: 'GREEN_DYE' # paths:
locked: # unlocked:
1: # up:
item: "BROWN_DYE" # item: "WHITE_DYE"
unlockable: # custom-model-data: 0
1: # up-right:
item: "BLUE_DYE" # item: "WHITE_DYE"
fully-locked: # custom-model-data: 0
1: # up-left:
item: "BLACK_DYE" # item: "WHITE_DYE"
path: # custom-model-data: 0
item: "WHITE_DYE" # 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