Jump to content
Live Updates

Leaderboard


Popular Content

Showing content with the highest reputation since 01/22/2019 in all areas

  1. 3 points
  2. 2 points
    At present, the A'therys Wiki has 283 pages! We're coming up to the big Three Zero Zero, and I thought I'd put out the option for people to suggest what they would like to know within the world of A'therys. This can range from anything - from metaknowledge regarding an event or the world itself, to more general information like "I really want to know more about ____" While most suggestions will be considered; a few ground rules - Preferably, it should be able to fit into one article - No requests of "make ____ canon" - This won't be a poll; but I will gauge peoples' reactions/responses to suggestions placed in here!
  3. 1 point
    Hmm... maybe something about the religious rituals and holidays of each nation?
  4. 1 point
    Welcome to the A'therys resource pack development page. The A'therys resource pack started out as a medieval styled texture pack based on john smith for the A'therys server, later switching to use conquest as the foundation for the pack. Although the server has moved onto conquest reforged and is no longer using the pack, progress still continues to slowly march forward. Up until now, I haven't been releasing many packs or updates out to the community mostly because I was dissatisfied with my own additions to the pack after I took over from the previous developer. However, I have decided to change and start this thread to hopefully motivate myself to work more on it. Any thoughts and opinions are welcome, please report any problems with the pack, and give your support by showing what you've built using the pack. I will continue to update this post as more stuff is done. ~Chrisblox
  5. 1 point
  6. 1 point
    Hey I'm a pretty old player, though not one of the oldest, been around since V1. I was a co-mayor in Altharia, then a mayor of my own time (Sommeil Paix) and Orator Prince in V2. I was eventually the nation head of Aloreh for like 6 months (ish, maybe longer?) in V3/Evo before leaving a bit before the end of the server. I was a pretty prolific in-game author, lore guy, and all that. Had a pretty big library, not to flex too hard. Fun facts about me? I beheaded whatever-the-name of the canon leader of Aloreh was, in canon, until it got retconned when OA got back from vacation once. IRL I'm just a university student with a boring office job. Worked on some political campaigns, study international relations with my specialty being Eastern Europe and Southeast Asia, also a side degree in history because I was bored. I'm also fluent in Latin and Ancient Greek, two very helpful things for getting ladies. I'll be headed to law school soon to do JAG for the Navy, that's about it. Anywho, dunno if anyone remembers me but here're some pictures of my town from back in the day.
  7. 1 point
    As if I ever wanted to be :/.
  8. 1 point
    Believe it or not, about 20% of traffic still comes from the texture pack thread on the Hypixel site. I also get about 3/4 emails a week asking is there an updated version. Really happy you are still at it Chris There is still demand for our pack!
  9. 1 point
    A recent raid has ended poorly for a warrior. They now sit twiddling their thumbs in a stone room with iron bars blocking out any chance of light, hope and future. Visit your ignorant & resentful inmate today! Warp to the spawn (/spawn) to see more. Please can all minors be accompanied by an adult.
  10. 1 point
    Right, so a few people said they liked the content in the last ( and first ever ) Boring Dev Log, so I suppose I should make a franchise out of it. To start off with, how about a sequel? AtherysTowns Today, I'm going to go over the pains I've been having with the AtherysTowns plugin, specifically focusing on the permission system, as that has been the most painful part of it, causing me to rewrite the plugin from scratch. Again, to preface this, I doubt many would get any enjoyment out of this thread. And this one in particular is more of a rant on my part, getting something off my chest about permission management in general ( not just in minecraft ). Permission Management Is Hard It just is. It's frustratingly hard. That's not to say that permission handling models don't exist out there, they do, but they're mostly intended for enterprise-level applications. Things like Access Control Lists ( ACLs ), Attribute Based Access Control ( ABAC ), which is itself an improvement of the Role-based Access Control ( RBAC ) approach, which can itself be used to implement Lattice-based access control ( LBAC ). Did you understand any of that? Yeah, neither did I. Security in general is a very broad subject, requiring a lot of specialization in order to be considered an "expert" on it. I am certainly not one such person. And if you came to me and told me "Hey, maybe find an Informational Security Expert to help you out with the permission part of this minecraft plugin", I would have probably ignored you because that's too much effort for a bloody minecraft plugin. Yet, here we are, after having written and rewritten the permission system of AtherysTowns a good dozen times, I slightly regret not having done my research better. Now that that's off my chest, let's get into the boring parts... So How Will Permissions Work in AtherysTowns? Before we get into the details, let's establish a few basic concepts. Broadly speaking, we have 2 types of objects in our plugin. We have actors ( those who can execute actions ), and subjects ( objects which are acted upon by an actor ). We also have 4 types of entities in the plugin, which is the Nation, the Town, the Plot and the Resident ( which represents a player ). A Nation contains many towns, a Town contains many Plots and Residents. There are other things which are part of these entities as well, but those are just noise for the purposes of the permission plugin and don't matter. So then, here's the first important question: Which of these are Actors, and which of these are Subjects? The answer seems simple at a glance: Residents are actors, and all others are subjects, right? Well, yes and no. If we say that only Residents are Actors, then we have to deal with certain limitations. Imagine the following: How does the mayor go about doing this? If we accept that only Residents are actors, they would have to manually permit all residents from Town B to build upon Plot C. Fine, say they do that. What if one of those residents leaves their town? The plugin wouldn't be able tell if the resident was added because they were part of a town ( Town B in this case ), or because they were explicitly permitted, independent of any town, to change the plot. The way to fix this, is to have a way for the mayor of Town A to permit Town B ( as an object ) to modify Plot C. But because we've already said only Residents are Actors, we can't do that. There are a few possible solutions to this. What I've done is I've just said "Ok, so not only Residents are Actors, but also any entities which contain residents". What this results in is the following: Plots are Subjects Residents are Actors Towns are Actors AND Subjects Nations are Actors AND Subjects To explain it more broadly, any entity which represents a part of the world is a Subject. Any entity which represents a player ( or a group of players ) is an Actor. Any entity which represents both is both a Subject, and an Actor. Let's go back to our initial case: Now, because of our rework, we've made it so the mayor can permit Town B ( instead of each of Town B's residents independently ) to build upon Plot C. If a resident leaves Town B, then by definition they are no longer a part of Town B, and would therefore have no permission to change Plot C anymore. This system, as you can guess I hope, also extends to Nations. You can imagine I'm sure many different situations where this would come in useful.
  11. 1 point
    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!
  12. 1 point
    Ducks will conquer the everything........ Merry Christmas
  13. 1 point

About Us

A’therys Horizons is an upcoming Minecraft Modded RPG Server, a world truly unique with many experiences for Roleplayers, Pvpers, Builders & Merchants alike.

Useful Links

Keep up to date!

×

Important Information

By using this site, you agree to our Terms of Use, Guidelines and Privacy Policy