Welcome to JD Skill Tree, a fully data-driven progression mod for Minecraft 1.20! This mod introduces a tiered skill altar system that allows players to trade experience levels for permanent buffs.
What sets this mod apart is its focus on customization. Server owners and modpack creators can build entirely new skill trees directly inside the game without writing a single line of code.
- Features
- gameplay-guide
- Creating Addons (No Coding Required)
- Installation & Dependencies
- For Developers
- License
You can also Look through the wiki for more information
- Interactive Skill Tree: A clean, user-friendly UI for viewing and unlocking skills.
- Custom Skills: The system is designed to be easily expandable with new and unique skills.
- Prerequisites: Skills can have dependencies, requiring players to unlock parent skills first to create a true sense of progression.
- Skill Altar: A unique in-game block that serves as the central point for accessing and managing your skills.
- Craft the Skill Altar: Start by crafting the central block for this mod, the Skill Altar. Higher tier skills will require higher tier skill alters.
- Access the Tree: Place the Skill Altar in the world and right-click it to open the skill tree screen.
- Unlock Skills: Gather the required resources or experience and click on a skill to unlock it, granting you its abilities!
The project follows a standard Fabric mod structure. Here is a brief overview of the key directories and files:
.
├── .github/workflows # CI/CD pipelines (Auto Release and Bump Version)
├── src
│ ├── main
│ │ ├── java/com/jd_skill_tree
│ │ │ ├── api # Interfaces for cross-side logic (IUnlockedSkillsData)
│ │ │ ├── blocks # Block definitions (SkillAltar, ModBlocks)
│ │ │ │ └── entity # Block Entities (SkillAltarBlockEntity)
│ │ │ ├── command # Server-side commands (/skill grant, etc.)
│ │ │ ├── mixin # Core game modifications (PlayerEntityMixin, LivingEntityMixin)
│ │ │ ├── networking # Packet handling (S2C and C2S communication)
│ │ │ ├── skills # CORE: Skill data structure and logic
│ │ │ │ ├── actions # Active triggers (SkillAction, TriggerType, Handlers)
│ │ │ │ ├── conditions # Requirement logic (Health, Items, Biomes, etc.)
│ │ │ │ └── effects # Passive buffs (Attributes, Enchants, Mining Speed)
│ │ │ ├── utils # Helpers (ExperienceUtils, ModRegistries)
│ │ │ └── Jd_skill_tree.java # Main Mod Initializer
│ │ │
│ │ └── resources # Server/Common resources
│ │ ├── assets/jd_skill_tree # Textures, models, blockstates
│ │ ├── fabric.mod.json # Mod metadata (License, dependencies)
│ │ └── jd_skill_tree.mixins.json
│ │
│ └── client
│ └── java/com/jd_skill_tree
│ ├── blocks/entity/renderer # Visual renderers (Floating Book animation)
│ ├── client # Client interaction handlers
│ ├── networking # Client-side packet receivers
│ ├── screens # UI / GUI Logic
│ │ └── widgets # Custom UI elements (Skill Nodes)
│ ├── skills # Client-side data caching (ClientSkillData)
│ └── Jd_skill_tree_client.java # Client Mod Initializer
│
├── build.gradle # Dependencies and build configuration
└── gradle.properties # Mod version and properties
This project is built using the Fabric modding toolchain for Minecraft 1.20.
- Prerequisites:
- Java Development Kit (JDK) 17.
- Clone the repository:
git clone https://github.com/JammingDino/jd_skill_tree.git cd jd_skill_tree - Build the project:
The compiled
# On Windows gradlew build # On macOS/Linux ./gradlew build
.jarfile will be located in thebuild/libsdirectory.
Jd_skill_tree.java: The main entry point. It now initializes the SkillNetworking, registers the new Action/Effect/Condition types, and handles server lifecycle events for data syncing.skills/Skill.java: Now a POJO (Plain Old Java Object) loaded entirely from JSON. Instead of hardcoded logic, it contains lists ofSkillEffect,SkillAction, andSkillConditionobjects.skills/SkillLoader.java: The resource listener that uses GSON to deserialize JSON files from data packs into Java objects. It handles the reloading of skills without restarting the game.skills/SkillManager.java: The active runtime registry. It caches all loaded skills and tracks which Attributes (e.g., Max Health) need to be monitored by the Mixins.blocks/SkillAltar.java: Defines the Altar's behavior. It detects player interaction to open the standard Skill Tree UI, or opens the Developer Editor if the Altar is Tier 99.screens/DeveloperEditorScreen.java: The complex client-side GUI that allows developers/admins to create, configure, test, and export new skills directly in-game.networking/SkillNetworking.java: Handles the critical communication between Server and Client, including syncing the entire Skill Registry (definitions) and the player's unlocked status.mixin/PlayerEntityMixin.java: The core gameplay logic engine. It injects code into the vanilla player entity to apply passive effects (Attributes, Knockback, XP multipliers) based on unlocked skills.
Contributions are welcome! If you have ideas for new skills, improvements, or bug fixes, please feel free to open an issue or submit a pull request.
This project is licensed under the terms specified in the LICENSE file.