-
Notifications
You must be signed in to change notification settings - Fork 7
Overview
It's been a long time since I first created this mod and a while since I last updated it making it hopefully somewhat better than its previous reincarnation despite its overwhelming popularity (insert sarcasm here). Jokes aside, I feel like this mod does have some potential, and the only thing holding it back is the programmer. That being said, this is my attempt at motivating myself, organizing my thoughts, and documenting what I have as well as getting any feedback from anyone interested if such mythical people exist.
The goal of this mod is to add a front-facing API that modders can implement into their own mods as well as provide meaningful functionality to non-modders in such a way that feels natural and a natural extension to the established systems provided in Minecraft itself. In other words, the goal is to provide the Minecraft community with an accessible way to implement and make use of Skill Trees and the Skills within as if it was already provided by Minecraft. Ideally, this would work even if only the server had the mod. While this may be possible to implement such functionality in datapacks, I am reluctant to scrape the progress I have already achieved, but have implemented datapacks into the mod itself already (more on that later). By the end of the development process, this mod should be fully integrated into existing systems such as loot tables
The current road of development aims to support the latest version of Minecraft, which is as the time of writing 1.16.4, but due to problems with setting up the dev environment the current target version is Minecraft 1.16.3. With future and subsequent versions being developed thereafter with hopefully little changes needed to be made other than updating a few events. With that in mind, there is no plan to have any dependencies besides Minecraft Forge.
Progress has already been made, but the idea is work in phases, which each phase having a certain set of goals.
This phase aimes at setting up the basics of the mod such as setting up packets for server and client communication, client keybinds, a basic capability and a class I recently developed aimed to make rendering images much easier for myself, modders and even non-modders alike.
This phase focused on integrating the systems to work together as well as see the foundation for the creation of skill trees and rendering the skill tree gui. The first step was developing a skill tree gui that would render registered pages. This covered things like page tabs location (similar to how advancements are placed along all sides of the window), rendering icons, rendering the background of the tab, being able to select them and navigate across pages of skill tree tabs if need be and depending on placement. As well as a few QOL features for players.
This could be considered a phase in itself, but the defining feature was changing how skills were registered. Instead of a modder being forced to register skill pages and skills during the registry event they are now registered by creating skill page jsons in the resource folder for modders under "data.zskilltree.pages" and "data.zskilltree.skills" or under the same paths in the "data" folder for datapacks which allowed them to be reloaded and rendering without having to restart the game. The structure of the JSON files as well as useful features therein will be discussed on its dedicated wiki page.
This phase's goal is to finish implementing the rendering of skills assigned to pages in a similar fashion as the skill pages. Once development of basic skill rendering is done. Working on integrating the SkillCapability system is the next step. That is, being able to award skills through commands and having those skills be persistent across sessions. Commands for granting and revoking access to certain trees will also be introduced. In previous iterations, a concept of skill points was added to be used as a form of currency. At this time, a harder codded skill currency is not planned but a system to make adding such a system trivial through the player nbt. Though it is possible that I will ultimately add a skill point currency for unification between potential mods/datapacks.
I believe the next goal would be to intergrate loottables, predicates, advancements and more into the system as well as set up mod events if need be and create systems that json files can use in those same systems and in the skill tree system.
Hopefully at this point, everything will be working together perfectly and I can focus on polish of the gui such as rendering tooltips of skills. And revisiting how the background of skill trees get rendered if I don't get to it before. As well as add features such as scrolling (like advancement pages do when they don't all fit) and a potential zoom feature.
Getting my thoughts in order seems to have made completing the project seem more doable. And should I need to pause development (which is likely at the time of writing) for a short time I will have something to come back to and continue from where I left off.