Points

Content Count

Popular Content

The Mortal Plane Awaits...
v2/ Evo Monas Roth - Capital of the Daggerlands (Once named Monas Roth)
To honor the past versions of our amazing server and its legacy, we are returning the world of A'therys Ascended to your pleasure once more! Thanks to the tireless work of our beloved admin @Dannie, he has managed to pull my old build server from the depths of Minecraft limbo.
v1 Calastore - Capital of Ithero
Whilst many of you use to use my build server, this will give you a chance to revisit your old builds on there. However beyond that, we have also restored the other worlds on there, including the A'therys v1 and v2 worlds. But to push the goal even further, we have also managed to bring back the A'therys Evo world.
v2/ Evo Vrovona City - Capital of Vrovona
Unfortunately you cannot play on the world as we did once before. All of our main resources are committed to delivering A'therys Horizons. However, in the mean time, why not take a trip down memory lane? Or even better, introduce our new and upcoming friends to the world you once knew.
v2/ Evo Methes Avonthes - Capial of Aloreh
As we look beyond the Horizon, to a world we all do not know and adventures that await, we can treasure the past and the legacy of A'therys Ascended.
v1 Qhul-Rahav - Capital of Ar-Selukk
You can connect to the server (play.atherys.com) via the Conquest Reforged client OR with vanilla Minecraft 1.12.2. You can get to this server by running the command /server old. To get permissions just ask any fellow staff member, as the server is running off my original A'therys Evo build server set up with PermissionsEX. You can easily visit all of the worlds via multiverse by using /mv list and /mvtp <world name>. Any issues please contact us via the #support channel on our discord: https://discord.gg/b7HdQVN
/warp Atherysv1 - To get to A'therys v1 world
/warp Atherys v2 - To get ot the A'therys v2 world (Note that the capitals are not in this map as they were taken out and transfered to the Evo map)
/warp AtherysEvo - To get ot the A'therys Evo Map - WARNING YOU SPAWN ON MONAS' MONUMENTUM TOWER
v1 Dorrod Muth - Capital of Roreg Logh
We will continue to work on hard on putting together and delivering A'therys Horizons, but in the mean time we hope you enjoy this opportunity to revisit A'therys Ascended.
ENJOY AND HAVE A HAPPY, PROSPEROUS, AND SAFE NEW YEAR!
-A'therys Horizons Staff Team
Atherys v1 Map
Atherys v2 Map
A'therys Evo Map

Alright, so this is something that will not appeal to most people. In fact, I would say hardly anyone would get much out of reading this. Unless you're interested in the nitty gritty technical details of programming and plugin development, you can skip this one.
Introduction
The entire point of the boring dev logs is to give you an insight into how we're going about developing A'therys plugins.
Since we've decided to go modded, we have to run a Forge Server. However, this brings with it some unfortunate implications, including having to use Forge to create... well, anything, really. I, for one, do not want to be making mods when the functionality is best described as a server-side plugin, thus I don't see the point in using Forge for any of our gameplay mechanics.
Luckily, we have Sponge ( Found at https://www.spongepowered.org/ ). It offers a higher-level abstraction atop Forge which makes it so much easier to work with. Of course, this comes with limitations, but so far I will say that I have not felt limited by Sponge in 99% of cases, and it's only in some corner cases where Sponge has proven to be lacking. But even then, I've managed to find workarounds which have worked just fine.
Great, so we have our starting point then, right? Well, not quite. Sponge offers a beautiful abstraction, but for our needs we need more than just a plugin framework. The elephant in the room is Persistence, with Sponge not offering any high-level solution for this. But there are other, smaller things which could improve the speed with which we develop our plugins. Thus, something I've nicknamed the "A'therys Framework" is born out of these needs.
This first Boring Dev Log is going to cover what the A'therys Framework is, and why it's necessary.
AtherysCore
In actuality, the A'therys Framework is represented by a single plugin: AtherysCore ( Found here: https://github.com/Atherys-Horizons/AtherysCore ). Core provides all the tools and utilities we need to make A'therys plugins better, faster and stronger. And that's all it does. It has no functionality in it. For all intents and purposes, it is nothing more than a library built atop Sponge.
Annotation-Based Command API
In Sponge, the way you'd traditionally go about creating a command is described here ( https://docs.spongepowered.org/stable/en/plugin/commands/index.html ), and it's a process that often times requires several classes ( not just the one it's described in ), plus more code relating to the command that's placed in the plugin main class. Overall, it creates a very disjointed feeling to command creation, with code being split up in several places. This makes it not only harder to read, but also harder to maintain.
The Annotation-Based Command API is described here ( https://github.com/Atherys-Horizons/AtherysCore/wiki/The-Command-API ) and it's quite a simple abstraction atop Sponge's commands, yet it makes it so much easier to work with.
Gson Utilities
Gson is a library that Minecraft ( and therefore Bukkit/Spigot and Sponge also ) uses to parse json into meaningful objects that it can use. Specifically, any time you describe something in JSON that has to be read by the game ( see: data packs in the latest updates ), Gson will be used. It's a great library written by Google and it works well for 90% of cases. The problem is the other 10%.
More specifically, Gson has issues with polymorphic structures and inheritance. If you have a ClassA interface/abstract class, which is inherited by ClassB and ClassC, you have to describe that relationship explicitly to Gson otherwise it's not going to be happy. It will try to instantiate abstract classes during deserialization, which obviously results in errors. The fix for this, as provided by Gson, is a class lovingly named the RuntimeTypeAdapterFactory. I shorten this to RTAF.
In the RTAF, you provide the abstract class, and link it to several possible implementations. Gson will then embed the implementation type into the serialized data, so it knows for the future which implementation to use for the json it's deserializing. Overall, this is a swell strategy, but it results in some boilerplate which is not very pleasant to look at.
The result therefore is the TypeAdapterFactoryRegistry class ( https://github.com/Atherys-Horizons/AtherysCore/wiki/TypeAdapterFactoryRegistry ), which will store multiple RTAFs and create Gson instances using them. The result is much more organized code, and less boilerplate.
Interaction/Attachment Service
This is something @Rynelf wrote to solve yet another issue with commands. Sometimes, a command needs to be more interactive. For example, you might need to write a command, and hit a block or an entity in order to achieve something.
The details of it are pretty straightforward and you can read the code here ( https://github.com/Atherys-Horizons/AtherysCore/tree/hibernate/src/main/java/com/atherys/core/interaction ), so I won't go into too much detail.
PluginConfig
Plugin configuration in Spigot was a pain in my opinion. And in Sponge, despite best efforts, it's still not the easiest thing in the world to set up a configuration file. That's why the PluginConfig class exists. It offers an abstraction atop Sponge's Configurate library, which is really nothing but the boilerplate required to setup an ObjectMapper and a ConfigurationLoader.
Question API
Another simple addition is the Question API which allows one to easily create text-based question-and-answer forms. Underneath it uses Sponge's Text API to create a question under the form of "Question? [Answer1] [Answer2] ... [AnswerN]". The player can then click on any of the answer buttons to execute some code.
Sound Utilities
Makes it easier to create and send sounds to a player.
Alright, and now we come to the big daddy of them all...
Persistence( JPA/Hibernate )
Persistence means storage, essentially. For example, you create a town, and you want that town to still be there after the server restarts. Might seem simple enough from a user perspective, but it falls under the massive field of persistence. And for this, we've gone several different directions in the past, gone through multiple iterations of each, until we've finally arrived to where we are today: JPA and Hibernate.
Originally, the Core plugin didn't offer any persistence abstractions. Each plugin was responsible for handling it's own, which proved to be inefficient at best. The first abstraction was based off of the NoSQL database MongoDB, which has been proven to be robust and high-performance. Over the course of 5-6 months, in became clear that the simple abstraction atop Mongo simply wasn't enough, and we'd need something better: an ORM.
An ORM stands for an Object-Relational Mapper, and what it does is translate memory data structures into database data, without the programmer having to do much for it. And in the beginning, we used Morphia, which is an ORM for MongoDB. We ran with this for a good 3-4 months, until it became clear that MongoDB in and of itself was simply not a good solution to our needs.
With that revelation, I decided to finally just go for the big one: Hibernate and JPA ( short of Java Persistence API ). It will take any Java object, and store it into an SQL database almost as if by magic, with minimal effort on the programmer's part. The only thing that I did was write a simple 80-line abstraction atop JPA which gives access to basic JPA functionality, such as CRUD operations, criteria and other such ( including JPQL queries ). What I intentionally missed out on were native queries which, while fast, lock the implementation of the database to a single driver ( such as Postgre or MySQL ).
And speaking of drivers, the default database I've chosen to go for is PostgreSQL. It's much faster than MySQL, though still an SQL database, and even offers additional potentially useful features such as JSON support, partitioning, and others.
Conclusion
To conclude this long boring dev log, I would like to say that you can still find all of the source code for our plugins at https://github.com/Atherys-Horizons. And specifically the AtherysCore plugin at https://github.com/Atherys-Horizons/AtherysCore. I don't know if I'm going to make a second one of these. It depends a lot on the time I might have or would want to spend on writing long threads like these, as opposed to writing code. So, we'll see. Take care for now!

Hi everyone, I know it's been a while since I've posted on here but seeing as the website got a nostalgic makeover I felt inspired to try and be active on the forums again. I know everyone is anxious for Horizons to be released, as am I and the rest of the staff. But it takes time to build a good server so thank you, everyone, for the patience you have in the team.
Anyway, I am curious what everyone's plans are for when A'therys Horizons releases, what are your goals for your towns, what do you want to achieve. Personally, my goal is to have a castle town situated high in the mountains this time around and just focus on creating my logging empire (not sure about the last part hehe). I am really excited about this iteration of A'therys and I think it will be worth the wait.
Look forward to hearing your plans for Horizons,
-jon
Oh, and have a Merry Christmas and a Happy New Year!

Make a few wild assertions and boasts, declare myself some kind of local authority figure, start several projects of epic proportion that'll eat countless hours of my ever-dwindling free time, then fail to deliver. Show up to team fights. Get drunk and flirt with @redninja685. You know, the usual.

December 22, 2018
Small Governmental Update put in today!
Added Government of the Gennaian Isles
Governmental Concepts originally by @Xathas
Very long-winded Isles Chat with @Foe, @Tristan_vr, @raxiam, @Dani, and @redninja685 . Fortunately there were no casualties. 🤯
Compiled by Xathas; Edits and Revisions by @Foe

So far I have no intention of making armor and weapons which give you special abilities. It's all about modifying stats at the moment.
As for more updates, I've known this is a problem for a while now ( and @Rynelf has tried to fix it with his Dev Log ), but I just never considered it that important to give updates that often. Fact is that very little changes in terms of our overall design strategy for Horizons, and Sellt's diaries touch on that part of our development plenty. The rest is just boring technical details.

We talking some V1 diamond helmet everyone played it mayhem maker or the original tank killer?
Either way PvP better still handle decently well anything I have played in recent times seems like a botched version of the original with either no skill or an unlimited skill cap where players become unstoppable overtime. Progression should be a thing but, to an extent in my opinion either way I am actually interested to see what comes out.
Is this more like a OS Runescape thing where it just determines your stats or is this more a GW2 where it entirely changes your optional abilitys, playstyle and status effects?
And @HaedHutner You should make updates more often I like to read them and hardly see anything about the combat. Thanks Mate

December 24, 2018
So with the website returning to it's dark theme, we've made a bunch of improvements to the lorelanding!
Added a MAP to the lorelanding!
This map (see below for all 5 playable nations lit up) will light up a nation when you hover over it; and allow you to click into it to go to the nation's overview page!
Original Map Artistic Render by @cicetil
Overlay graphics and new HoriRule [the nifty divider in the lore sections] by @Xathas
Coding by @Rynelf (HTML, CSS, and JavaScript!)

Senior Staff
Every team has its leaders.
@Xathas
Loremaster 2.0
- Oversees and manages the Wiki
- Ensures quality of content
- Does a lot of writing, redrafting, and setting fire to scrap paper
- The final judge
- Hates Comic Sans MS with a passion
@Foe
Discord Manager
- Keeps the Discord (and Xathas' brain) organized.
- Assists with organizing tasks among the Lanterns.
- Assists with creation, drafting, and editing of Lore
@Aerun
Literally Satan
- Public Relations
- Ensures any German-influenced names don't hash the actual language.
- Tries to make sure Xathas doesn't wind up in the HR Office (again)
- Favorite Pokemon is Lickitung
Rubious Lanterns
The monkeys at the typewriter behind every lore update you see.
@Razrivon
Old Fart
- V1 Veteran who writes from the perspective RTS/4X strategy game
- Wants the Third Calling to happen a little too much for comfort.
@Rynelf
Gandalf the Grammar Nazi
- Strikes bad grammar down with the Argentate Sabre
- Part of the code development team, assists with CSS and Javascript in the Lore pages.
@RuddyF
Possibly an AI
- Youngest Lantern, highly enthusiastic, and possibly insane.
- Should not be allowed near Fire Drakes nor Flashpowder
Wards
Probationary Members, working effortlessly to prove themselves!
Also consists of those who can't commit full time, but wish to assist on projects of interest.
@CaptnSunny
Resident Aussie
- Somehow escaped the Homestuck fandom with her mind intact
- Likes owls, new cultures, and food... all the food!!!
- Once survived an assassination attempt by bicycle
????
Honestly, not sure why they're in the Discord.
@Crash
The Bandicoot
- Wielder of the Ban-hammer
- He's the Enforcer. Don't like it? Too F***ing bad
- Plays Shadowrun every other Saturday with @Xathas . Survived a TPK by missing a session.
@HaedHutner
Coder, fellow hater of Apple
- Probably hiding in the Lore Team Discord to avoid @Dannie
- Update; Dannie has found the lantern discord. The ducks have invaded. There is no hope... there certainly isn't -Dannie

There is a lot of individualization with all of the Quest-inspired guilds, and the magical, capitalism-like power struggle of rags to riches opens up a lot of future possibilities for anyone and everyone. Plus who doesn't love crazy weather and natural disasters to keep life interesting?