promotional bannermobile promotional banner

Wan's Skill Tree

Skill tree: adds a real way to have progression in the game via skilltree, fully configurable via datapack
Back to Files

rpgskilltree-neoforge_1.21.1_1.0.0.jar

File namerpgskilltree-neoforge_1.21.1_1.0.0.jar
Uploader
LeonisTeamLeonisTeam
Uploaded
Sep 4, 2026
Downloads
12
Size
345.5 KB
Mod Loaders
NeoForge
File ID
8809267
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:wans-skill-tree-1655170:8809267"

Learn more about Curse Maven

What's new

Changelog 1.0.0

RPG: SkillTree 1.0.0
First release. Minecraft 1.21.1, NeoForge. Everything below is what the mod ships with — and
almost all of it is a default that whoever builds the tree can change, in game, without touching a file.

WHAT THIS MOD IS
It is a skill tree, and it is empty on purpose.
The mod gives you the tree, the editor, the lock on recipes and dimensions, and a block that hands
out points. It does not decide what your progression is. A modpack, or another mod, fills it in. A
small default tree is included so the mod does something the moment you install it.
Dispatch Post gives you orders
|
+-- you deliver the materials --> the courier leaves --> comes back --> RESEARCH POINT
|
v
you spend it on a SKILL
|
+----------------------------------------+
| |
it unlocks it gives you
recipes and dimensions items, experience,
that were locked stats, recipes for free

THE SKILL TREE
A tree of skills. Each one costs points of a certain type, and gives you something when you take it.
Building it
• You build it in the game, not in a text editor. Turn on edit mode, open the tree, and drag
skills around with the mouse.
• The toolbar, left to right: select to move skills, add to place a new one, delete to remove
one, link to join two of them, decor for decorations, center to jump back to the middle, and
settings off to the right.
• Settings holds the things you set once and forget: locked recipes, locked dimensions and
point types.
• Skills snap to a grid so the tree stays tidy. Hold SHIFT while dragging to ignore the grid.
• Drag the background to move around, scroll to zoom.
• What you see is exactly what your players will see. It is the same screen.
How a skill opens
• A skill with no skills before it is always available. Those are the roots.

1 / 10

• A skill with skills before it is either needs all of — the point where two branches join and you
must have done both — or needs any of — a fork, where two different roads lead to the
same place.
• A skill can be hidden: it does not appear until you can reach it. Everything after a hidden skill
is hidden too, and so are the lines, otherwise a line coming out of nowhere would point
straight at the secret.
Icons
Any item can be a skill icon, a tab icon or a point type icon — and so can any of Minecraft's potion
effect sprites. There are about a hundred of them, they are drawn to be read at a glance, and no
item replaces them: there is no "speed" item. Items come first, so an item named like an effect still
shows the item.
Commands
Command What it does
/skilltree skill enable turns edit mode on
/skilltree skill disable turns it off
/skilltree skill open opens the tree
/skilltree skill reload re-reads the tree from disk
/skilltree skill export writes the tree out, ready to drop into a

modpack

/skilltree skill reset [player] wipes points and skills
/skilltree points give <players> <type>
<amount>

hands out points

/skilltree points set <players> <type>
<amount>

sets them

/skilltree points query [player] shows what someone has
/skilltree team says how shared progress is set up right

now

Edit mode is per session: it switches off when the server restarts, so it cannot stay on by mistake.

TABS
The tree can have several tabs, in a column down the left side.
• One per chapter, or one per mod that adds its own skills. Ten mods together do not become
three hundred skills in one pile.
• The column scrolls with the mouse wheel, and opens up with the arrow at the top to show

2 / 10

the tab names next to their icons.
• + at the bottom adds a tab. It stays put while the list scrolls.
• Drag a tab to reorder it. Drop it above or below another and the column reorders; drop it
onto another and it becomes a sub-tab of that one. Sub-tabs are drawn indented under their
parent, and the parent folds away with the little arrow.
• Right-click a tab to rename it, change its icon, or delete it.
• Deleting a tab asks you what to do with its skills: throw them away too, or move them to
another tab you pick.
• A skill on one tab can require a skill on another. The line is not drawn — a line leaving the
screen tells nobody anything — but the requirement is real. It is how a modpack ties together
two mods that have never heard of each other.
Backgrounds
Each tab can have a background, picked from about a dozen vanilla block textures. They are
pointed at by id, so not a single pixel of Mojang's artwork ends up in the jar. The tile grows with the
zoom, and there is a dark veil over it — a full-brightness block texture shouts louder than the skills
do, and your eye ends up on the floor instead of on the tree.
Animated block textures work too. A file like sculk.png is a strip of frames, not a square, and only
the first frame is drawn.
Decorations
Item and block icons laid on the canvas with the DECOR tool: movable, resizable and rotatable,
and always drawn underneath the skills.
• They can be the 3D item or a single flat face of a block model — a grass block has three
(top, side, bottom) and the first one is not the one you usually want, so you pick.
• Scale runs from 0.05 to 256, rotation in 5 degree steps. Hold SHIFT for coarse steps —
double the scale, 45 degrees at a time.
• No external images, on purpose: an item id is something everybody already has, and it
travels inside the datapack.
• Coordinates are in grid cells, so decorations stay where you put them when the view moves.

LOCKED RECIPES
Locked means locked.
This is not "hidden from the recipe book but it still works if you know the layout". Nothing comes out
of the crafting table until a skill opens it.
• It reaches machines too. The lock hangs off the recipe manager, not off any one
workbench, so it covers the crafting table, the 2x2 grid, the smithing table, the furnace, the
stonecutter, Create's crushing, milling, mixing, pressing and cutting, the Mechanical Crafter
— and whatever the next mod adds, without us touching anything.
• A machine has no player. A Mechanical Crafter runs by itself in the middle of a factory, so

3 / 10

the rule is: it is enough that one player has unlocked it. On a server the first person to unlock
opens automation for everybody, which is how a shared factory is expected to work.
• It works on any mod's recipes, and on vanilla's.
• A skill can give a recipe in two different ways: shows puts it in the recipe book as a hint,
unlocks actually lets you make it.
• Locking and unlocking are two separate things. A recipe is locked by a rule or by the list;
a skill reward is only the key. A recipe nobody locked stays free even if a skill hands it out —
and a recipe you unlock by hand really does come back.
• If two different skills both unlock the same recipe, having either one is enough.
• There is a screen listing everything that is locked, with a column that tells you whether any
skill actually opens it. A locked recipe that no skill opens is a recipe nobody can ever
reach.
A mod can declare that all of its recipes start locked with one line in its file. There is an escape
hatch for the handful that must stay free, otherwise there would be no way to begin.

LOCKED DIMENSIONS
A dimension in the tree's locked_dimensions list cannot be entered until a skill hands it over.
• The lock sits on the travel event, not on portal blocks, so it covers the Nether, the End and
whatever way another mod invents — they all go through the same door.
• Locking and unlocking stay separate, same as recipes: handing out the Nether does not lock
it for anyone, and taking it off the list opens it again.
• Nobody is thrown out of a dimension they are already in. Only entering is checked.
• No automatic rule for dimensions, on purpose: there are five or six in a modpack, and locking
one is something you do deliberately.

WHAT A SKILL CAN ASK FOR
Besides the points it costs:
Requirement What it means
Craft craft 8 of them by hand first
Advancement get that advancement first — other mods' advancements count
Experience levels reach level 30 first
Item in inventory have 4 diamonds on you
The last two have a consume / keep switch, and it changes what the requirement is:
• keep — it is a test. Show me you have it, and keep it.
• consume — it is a price. Hand it over.
4 / 10

Every requirement is checked before anything is taken. A skill that asks for two things and can only
pay one takes neither.
Only what a skill actually asks for is counted. The mod does not keep a tally of everything you ever
crafted.
Advancements are picked from a list, not typed by hand. The list comes from the server,
because the client only knows the advancements it has already seen — somebody drawing a tree
has to be able to pick one they have never met. Recipe advancements are left out (there are
thousands of them and they would drown the hundred real ones); hidden ones with no display are
kept, because those are exactly the ones mods use as switches.

WHAT A SKILL CAN GIVE
Reward Notes
A recipe either shown in the book, or properly unlocked
An item if your inventory is full it drops at your feet instead of vanishing
Experience as points, or as levels — you choose
A
dimension

opens one of the locked dimensions

A stat health, speed, dig speed, jump, armour, reach — and any other attribute that exists,

other mods' included

The stat reward takes the three vanilla operations: add_value adds a flat amount,
add_multiplied_base is a percentage of the starting value (the one you almost always want: two
skills of +10% make +20%, not +21%), and add_multiplied_total is a percentage of everything
and multiplies with other bonuses.
Like recipes and dimensions, a stat bonus is not a gift but a running total: it is recalculated from
what the player has taken, every time the data changes. A reset removes it, deleting the skill
removes it, and changing the number in the datapack changes it for people who already took it.

THE SKILL PANEL
The panel on the right of the tree shows what a skill wants and what it gives, and it shows the
things themselves, not their ids.
• Recipes are drawn as grids, right under the reward: crafting table, the Mechanical Crafter,
the furnace, the stonecutter, and the smithing table too.
• An item reward of 8 shows a counter, like any other stack.
• An advancement requirement uses the advancement's own icon.
• An effect uses its potion sprite.

5 / 10

• A dimension shows its name, not minecraft:the_end.
• The panel scrolls with the wheel when a skill has more requirements and rewards than fit,
and it stops above the buttons instead of sliding underneath them.

THE DISPATCH POST
The block that research points come from. A mechanical courier lives in it and posts orders on a
board.
• The board picks the orders, not you. That is where the game is: an order you cannot
produce takes up a slot until you discard it.
• Each slot can only be discarded a limited number of times. After that you either fill it or leave
it.
• You accept an order, gather what it wants, and then send the courier yourself. It leaves, and
comes back with a point.
• The point goes to whoever sends the courier, not to whoever placed the block. Loading
the materials is something anyone can do — that is how other players help — but pressing
send is what closes the order. Who sent it is written on the order and saved, because the
courier takes minutes and the world can close in between.
• One courier at a time. While it is out, nothing else ships.
• When it comes back, the orders still sitting on the board are redrawn with fresh numbers.
Orders you already accepted are left alone: someone who has started producing should not
find the bill changed under their hands.
• The more points you have already earned, the heavier the orders get. The same list of
materials carries you from the first day to the last.
• Materials can be loaded by hand or by pipe: the slots inside are a normal inventory, so
hoppers, chutes and Create's own machines can feed it.
• It has a recipe. Two andesite alloy and a barrel in a column — or, if Create is not installed,
two iron ingots, because a Create ingredient in a mod that runs without Create is a recipe
that never loads.
Adjustable: how many orders sit on the board (1 to 9), how many discards each slot gets, and how
many different things one order can ask for.
How it looks and sounds
The post is a shulker box with a mechanical courier inside. The lid opens when you open the
screen and closes behind you; when the courier leaves, the whole block teleports out with it in a
puff of end particles, and it comes back the same way. Open the lid and you can see the creature
in the shell.
Making it yours
Model, texture, sounds and particles are all replaceable from outside, without compiling anything.
• Model and texture — resource pack. The block is drawn from three ordinary block models:

6 / 10

models/block/dispatch_post_base, _lid and _head. Replace them and you change the
shape, not just the paint. Draw them facing north; the game turns them like any other block
with a facing.
• The animation is not in the files and you get it for free: the lid rises half a block and turns
270 degrees, whatever model you put there, as long as the piece called _lid is the lid.
• Sounds — resource pack or datapack. Four events of our own:
rpgskilltree:dispatch_post.open, .close, .send and .return. By default our
sounds.json just points them at the vanilla shulker box sounds, so nothing changes until
somebody rewrites it — and rewriting it touches only the post, not every shulker box in the
game.
• Sounds and particles — from the tree file, under "dispatch":
"effects": {
"sound_open": "rpgskilltree:dispatch_post.open",
"sound_close": "rpgskilltree:dispatch_post.close",
"sound_send": "rpgskilltree:dispatch_post.send",
"sound_return": "rpgskilltree:dispatch_post.return",
"particle_send": "minecraft:portal",
"particle_return": "minecraft:portal"
}
Every key is optional; what you leave out stays as it was. An id that does not exist — a mod
dropped from the pack — does not break the tree: it falls back to the default and writes one line in
the log. Particles have to be simple ones (portal, flame, smoke), because the kinds that need more
than an id, like coloured dust, cannot be written as a single id.

POINT TYPES
There is no single "point". You can have as many kinds as you want, and each one carries its own:
• name, colour and icon;
• list of materials its orders can ask for, each with how much it asks for at the start of the game
and how much at the very end;
• courier time;
• which other type it depends on — so the types open one after another instead of all at once.
A point of one type will not pay for a skill of another type. That is the thing that stops a player
farming one material and unlocking the whole tree.
A material can be a single item or a tag, written the same way as a vanilla ingredient:
#minecraft:logs means any log. That is the difference between an order you fill from the trees in
front of you and one that sends you looking for a savanna. A tag that is empty in a given install is
skipped — tags are filled in by datapacks and nobody guarantees there is anything in them.
All of it is edited from the Settings button in the edit toolbar. No files involved.

A TREE WITH NO POINTS AT ALL
Some packs do not want a currency: they want the tree as a map of what you have achieved. Put

7 / 10

"points": false in the tree file and every skill costs zero, and points cannot be earned by any
road — not from the post, not from the command, not from another mod calling the API.
A mod that wants this no matter what the pack does can call SkillApi.disablePoints() from its
constructor instead. That one does not switch back on: no datapack, no command and no screen
puts it back. It is meant for the mod maker who wants to force the point, and it is deliberately not
something a player can toggle in game.

SHARED PROGRESS FOR A TEAM
With teamProgress turned on in the server config, points and unlocked skills belong to your FTB
Teams party: what one person unlocks, everybody has. It updates live — two players with the tree
open at the same time both see it change.
FTB Teams is an optional dependency: without it the setting simply does nothing. /skilltree team
says which way it is set up right now — config on or off, FTB Teams found or not, which party you
are in, and whether your points are yours or the team's. Without it, "it does not work" means four
different things.
The config is a server config, so it lives in config/, not inside the world.

FOR MODPACK MAKERS AND MOD DEVELOPERS
A mod fills the tree with one file
Put this in your own jar:
data/<your modid>/rpgskilltree/tree/main.json
Inside it: your tab, your skills, your point types, your recipe locks and your dimension locks. Zero
lines of Java.
And if RPG: SkillTree is not installed, nobody ever reads that file and nothing happens. No
dependency to declare, no crash. That is the whole point of doing it this way.
It is a datapack
• /reload picks it up.
• It travels with your modpack update, and reaches players who already started a world.
• If ten mods each ship their piece, they add up into one tree. Same id wins by load order, so a
modpack can correct a skill a mod shipped with.
The world file is a difference, not a photocopy
This is the thing that changed most since the first draft of this document.
What lives in the world is: the datapacks, plus what the editor changed, minus what it
deliberately removed. A skill nobody touched always comes from the datapack, so it keeps
getting updated. A mod installed later still brings its own skills into a world that has already been

8 / 10

edited, and putting a deleted skill back with the same id brings it back for good.
The old behaviour — when the datapacks changed, the world file was set aside as
skill_tree.json.bak — is gone. It was a hammer: the only way to make an update arrive was to
throw away the work of whoever had been editing. Now the two live together. Files written by the
old version still load.
One missing mod cannot kill somebody else's tree
A tree can name a reward or requirement type that belongs to another mod. If that mod is not there,
the unknown entries are stripped out of the JSON before it is parsed, and the log says how many
and which ones. Before, one missing mod took down the whole file — the skill, and every other skill
with it.
An entry written wrong (with no type at all) is deliberately let through, so the error message tells
you what is actually wrong.
There is an API too
A separate rpgskilltree-api artifact, for the things a file cannot say:
• ask whether a player has a skill, or how many points they have;
• give points from your own event — a boss killed, a structure found, a quest completed;
• grant a skill outright, without charging for it;
• react when someone unlocks a skill, and hand out whatever you like;
• lock recipes by a rule of your own;
• turn points off for good.
New kinds of reward and requirement are registered from code, so a mod can add its own
without waiting for us — a quest reward, a mana cost, anything. The interfaces for those now live in
the api artifact, so you register your own types without compiling against the whole mod.
Wan Packaged Config
Optional dependency. If it is installed, the post's behaviour settings become part of a config
package — config/packs/<pack>/rpgskilltree.json — and switch with the rest of the pack. If it
is not installed nothing changes and the server config is used. The tree itself always stays a
datapack.

THE DEFAULT TREE
The mod ships with a small tree of its own, so that installing it on its own does something: one tab,
fourteen skills, a point type with its material pool, and a few decorations.
Two things to know before you ship a pack on top of it:
• out of the box it locks the shield recipe, and the Nether and the End, behind skills;
• like every other tree, it adds up with the one your pack ships — it does not step aside for it.

9 / 10

GOOD TO KNOW
• It is needed on both client and server. The data lives on the server, the editor is a screen.
• Points and unlocked skills are per player — or per team, see above — and you do not lose
them when you die.
• The server decides everything. The client only greys out buttons as a courtesy.

NOT IN YET
Said up front so nobody goes looking for it:
• a reward that runs a command — the last one missing from the reward family;
• a background colour per tab, and free images instead of block textures;
• locking the use of an item, not only its recipe.

This mod has no related projects