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) {
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;
}

View File

@ -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<SkillTreeNode> roots = new ArrayList<>();
protected final Map<DisplayInfo, Icon> 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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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