Rynelf's Dev Diary #1
I know we've been pretty quiet on the development front (though you can always see what we're working on) so I'm hoping to change that with these sort of changelogs. For the first entry I thought I would go through each of the plugins we have planned and outline their status. Most of the information here is able to be found at their repositories, but I thought I would describe them anyway. I've included the lines of code for each just for fun, as it is not always an indication of a project's complexity/time spent. Hopefully this will give you an idea of the amount of work we've accomplished and have yet to do. As always, HeadHunter and I are always in need of more help.
Note: HeadHunter has written the vast majority of code, you can find the evidence in the repositories.
Plugins we're working on
AtherysQuests is the plugin we have worked on the most. We have a solid base and are now working on other features to flesh out its functionality. Here is a sample of its working features:
A branching dialogue system between players and NPCs
Location, delivery, killing, dialogue objectives & more
A quest log
Receiving quests from items, blocks, locations, and NPCs
Features we are working on:
Fancy particle effects
AtherysCore contains the utilities and abstractions that other plugins rely on. There are no real "features", but things included are:
A database API
Command creation utilities
Serialization utilities, & others
Most of my effort recently has been on implementing functions for use with scripting, or writing documentation on how to write scripts. For this I've made a website that contains every function and how to use them, as well as other guides and information. I also made an extension for Visual Studio Code (a text editor) that autocompletes functions, so you don't have to reference the documentation constantly. I want to make scripting as accessible as possible so the people creating quests can be efficient. Despite not being the largest in terms of code, it has taken a great deal of time due to its surrounding projects. Current features of AtherysScript:
Basic Minecraft interactions (spawning items, moving players, spawning mobs/particles/sounds)
An API that allows other plugins to connect to AtherysScript and create functions to use their functionality (like AtherysQuest)
Projects related to AtherysScript:
The documentation - AtherysDocs
An application to generate the documentation from the Java code itself - AtherysDoclet
The VS Code extension - AtherysCode
Previous lines: 6760
AtherysTowns has proven tricky to get right. HeadHunter has worked almost entirely on his own with this one. The single issue he's facing is how to nail down the permissions system. With so many moving parts, it is difficult not to create a spaghetti of code like Towny was.
AtherysRoleplay is a relatively simple plugin that includes character cards and dice rolling. Chat will be included after it has been solved for AtherysTowns as we want all of the chats to work together perfectly.
Character cards in book form
Shift + right click to view other players
Dice rolling (of any size)
AtherysParties is another simple (relatively) plugin that includes your usual party mechanics: party chat, leaving/joining/kicking etc. It was previously in AtherysCore but was moved into its own plugin.
AtherysCombat includes different damage types, mostly for use with AtherysRPG.
AtherysRPG is going to be one of the larger plugins (with Towns and Quests). It will include all of the RPG skill mechanics. Despite the large amount of code, there is not much to show off with it yet. The base for all of the mechanics has been laid out, and I'll be picking up on some of its implementation soon.
AtherysBattlegrounds is the conquest/capture point system. This plugin is mainly finished, and was even rewritten recently to be better.
AtherysOre will be responsible for generating ore deposits in the world. It is complete for the most part.
We are updating and upgrading an existing Sponge plugin that had fallen under disrepair due to its author's disappearance. We have it running again, with support for AtherysScript through another plugin that connects the two. We did not want to have a dependency on our own plugins for NPCs, as it is a plugin that many people may want to use.
Economy plugins do not differ that much, so we will be making changes to an existing plugin, EconomyLite.
Plugins we're planning for
We can't do everything at once, so here are a few of the plugins we haven't started development for.
AtherysProfessions is going to be another larger plugin, though it is still in the initial planning phase; no code has been written for it yet. Professions will limit what players are able to craft in order to promote working together.
AtherysDungeons and AtherysInstances
AtherysDungeons will be another large plugin that powers A'therys' dungeons. We haven't decided on whether Instances will be its own plugin, or placed in the same one as Dungeons. We have started thinking about how dungeon instances will work, though nothing is finalized.
Getting the quest scripting in a stable state
Improving the scripting documentation
Starting the meat of AtherysRPG's implementation
Figuring out a permission system for Towns