Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


HaedHutner last won the day on April 14 2020

HaedHutner had the most liked content!


About HaedHutner

  • Birthday 12/06/1997


  • Minecraft Username
  • Discord Username

Lore Character

  • Character Name
    Lech Dregfødt / Zeinkel
  • Character Story

Recent Profile Visitors

13,392 profile views

HaedHutner's Achievements

Daily Poster

Daily Poster (6/6)



  1. You might be right. If it turns out area and resident taxes are so horrible, yeah, chances are they get taken off. Or, alternatively, towns might prosper despite them, and the taxes might do their job and help better manage inactive towns. We don't know. We can't know. Not unless we try it. And hey, we're doing just that. Give it a chance.
  2. It wouldn't be an A'therys release without problems, would it? To give context on OptiFine and why you need it and why you have to add it manually: In the last moment, a decision was taken to include a large number of custom textures ( which we planned to have anyway at some point during the server's lifespan ). While not planned for the release, it was done anyway. Unfortunately, at around the same time, we got news that a lot of people were having issues with the custom launcher. Thus, we realized that we would also need to either fix or redo it ( from this post, you can tell which one we had to go for ). While in the process of redoing the launcher, we also realized that the OptiFine mod we had included ( we included it purely because Conquest Reforged had it as well ) was subject to copyright, and explicit permission was necessary to include it as part of the modpack ( See the OptiFine FAQ Section ). I've sent them an email as soon as we realized this, though I've gotten no reply back yet. And judging by their GitHub issues page, the chances don't look good that we'd get permission anyway. It seems there are a few modpacks which are including the OptiFine mod either without asking permission, or regardless of it. So, we're stuck. We can't go and release without OptiFine, because half of the things on the server wouldn't have textures. And we can't include it in the modpack without potentially getting in trouble. Hence the need for the additional step of adding the OptiFine mod manually. We hope you guys enjoy the release tomorrow, and we'll see you there!
  3. A'therys Public Test Server Guide Countdown To Server Release Server Address: test.atherys.com Introduction With the Public Test Server just around the corner ( see countdown above ), I've decided to whip up a quickstarter guide for you folks so you know roughly how it's gonna work. But before we jump into that, I just want to say how grateful I am to the people in the staff team who have quite literally been losing sleep on this thing, trying to get it done on time for you guys. A'therys wouldn't be possible without them. @Rynelf @cicetil @skillet52 @Owl @Eojinn @naomi210 For Starters... When you first join, you will have to pick one of the 2 sides involved in the conflict on the Isle of Soltair ( see the original post ). Once you've done that, you will be teleported to your respective side's capital city, and your adventure may begin. The way it will begin is up to you, of course, but it might be wise to pick up some gear. You'll be starting off with a bit of money, just enough hopefully to afford some starter items. From there, it's up to you. The Isle of Soltair is filled with wonders and dangers alike, and which ones you discover first is up to you. Try to stick to the road network which covers the entire island and you should be able to go anywhere, if you knew your way around of course. Exploration should probably be at the top of your priority list to begin with. Upgrading You're not expected to stay in your starter gear forever, though. As you look around and discover the Isle of Soltair, you will discover various places which will no doubt be a threat to your existence. There is much to be said of courageous acts, but most of all, they almost always result in handsome rewards. So take your risks carefully, and you may find yourself holding a shiny new sword, a tome full of ancient secrets, or a battle hardened set of armor lost by someone else much like you. It's not just the items you find out there that should draw you to these sometimes cursed places. As you engage whatever hostiles you meet, you will gain experience. Improve your stats or pick up new skills, the choice is up to you what you do with it. But one thing is certain, you will come out a better fighter than you went in. Co-operation & Competition You're not alone on the Isle of Soltair, of course. There are others much like you who seek the same rewards you do. And after all, you have sworn your allegiance to one of two sides in a heated war. Trust is valuable, so never misplace it. The friends you make along the way will be invaluable to your success in the long run, and the enemies you face will undoubtedly look to steal from you your most precious resources. As you explore further, you will discover highly disputed areas which are valuable to both sides of this conflict. Capture them for your own nation and achieve greatness. ~------------------< A >------------------~ Reporting Bugs This being a test server and all, we're definitely expecting there to be issues. It's not going to be smooth sailing, at least not to start with. You can report bugs in-game by using /report HeadHunter111 <Your bug report> . The report system is also used to report malicious players and their activities so that the moderation team can handle those. To do that, you simply replace my name with the name of the person you want to report. Command Guide Skills /skills - Display current and unlockable skills ( You can unlock new skills by clicking on them, provided you have enough experience ) /skills reset - reset skills and the the experience spent on skills /skills cast <skill-id> - cast a skill The A'therys Mod Pack* contains a Macros Mod which you can use to bind skills to keyboard keys. There is currently an issue with the macro mod button being positioned directly over the Disconnect button, and left-clicking on it will indeed disconnect you from the server. Instead, you should right-click on the button to open the macros menu. Attributes /attributes - Display your current attributes ( you can click on the plus signs to increase attributes, if you have enough experience ) /attributes reset - Reset your attributes and refund the experience spent Experience /experience - Display current experience Parties /party help - View all party commands /party - View current party /party invite - Invite player to party /party kick/remove - kick player from party ( must be party lead ) /party disband - disband party and kick all members ( must be party lead ) /party leave - leave party /party pvp <on/off> - toggle party pvp /party leader <player> - give party lead to someone else ( must be party lead ) Parties will share experience and currency dropped from any slain monsters, provided you're near the monster when it dies. Battlegrounds /rank - View your conquest points and ranks /team - View your team and which battle points it controls /team info <team> View a team and which battle points they control Killing players of the opposite team while in a battle point will earn you conquest points, as will capturing them. Battle points have a cooldown of 40 minutes before being able to be captured again. The Future To end this, I'm sure many of you are asking yourselves where this will go. As mentioned in the original post, we have plans to keep this server updated regularly. We've drafted up an internal update schedule, and even though we're not ready to share it fully, I can tell you that the next update will bring Towns functionality, and will likely be released within the first 3 months of this server's release. So, be on the lookout for future announcements!
  4. Come join us for the release of the A'therys Public Test Server. More info here: https://atherys.com/forums/topic/4360-17th-of-april-atherys-public-test-server/?tab=comments#comment-38582
  5. Hail, all! It’s been quite some time since you’ve received any substantial communication from the staff team. We’re aware that we’ve been a bit too quiet over the last year on the state of A’therys and the status of our next iteration - A’therys Horizons. Well, today comes the most significant announcement we’ve had on this subject, probably since its announcement back in May of 2017. Over the last 3 years, we’ve been working hard on producing Horizons. The one decision we took from the very start was that we would focus on quality above all else. Absolutely no shortcuts will be taken, and everything is to be done properly - just as A’therys deserves, and as you guys might expect. We’ve accrued a number of finished features over that time that we need to test. The fact of the matter is, with a scope as large as Horizons, full scale testing can be quite difficult with a small staff team. That’s where you guys come in! We want to finally get back into the habit of running an active minecraft server. Our primary goal is to introduce features one-by-one on the public test server, and have players try them out, play around with them, and find every possible issue. How Will It Work? The map that players will start on will not be the final Horizons map. We’re still keeping that one for Horizons release ( sometime in the future ). It’s a beautiful custom-designed 2kx2k map, hopefully small enough to allow for enough player interaction, but large enough to allow us to do more with it in the future. To start with, we will release the RPG system we’ve been working on, along with a feature we had in the final days of Evo - then called “Conquest”. Since then, that system has been renamed to “Battlegrounds”. Combined with this, we will have multiple zones with custom mobs spawning, along with over a hundred customly designed items to fit in with the RPG system. More on all of this in the next section. As was mentioned previously, we will be releasing extra features later on, one-by-one. We hope this will accomplish 2 things: Firstly, to allow for plenty of time for testing. The features we’ve developed are quite large in scope, and we would ideally like them to be as bug-free and balanced as possible for Horizons release. Secondly, to maintain player interest in the server over time. The map that’s attached to this post shows how it looks, along with some more points of interest. There will be 2 sides to start off with, each having their own capital. In the middle you will find the battle points. Here’s a legend of the map colors: Orange - Quest Locations Blue - Dungeon Entrances Red - Battle Points Purple - Other Points Of Interest Circle(s) - Battle Point Radius Crown - Capital What Can You Expect To See On The 17th Of April? ( Feature Preview ) Now this is the part I’m sure you’re all the most interested in. When you finally get to join the test server on the 17th of April - what will you see? The Island Of Soltair You will embark for the island of Soltair, a forgotten part of Yeor’s dream. It is a tumultuous time for A'therys. Set during the Winnowing, the public test server will explore what it’s like to exist in a world where Gods have a real effect on political events. The 2 city-states you will be able to join are called Mahkri and Lahgur. Lahgur to the north was established by refugees, running from the countless wars of the Winnowing. Their patron God, Jangur, the Spirit of Battle, holding also the portfolios of the Forge and the Mountains, led his people to build the beautiful city of Korghor. To the south, the slumbering spirit of Jangur’s rival was slept in the form of a large monument, until others who found their way to Soltair discovered it. Zafahr, spirit of Victory, the patron god of Mahkri, was awoken after people built the city of Sharra. Expect a full lore overview of Soltair island some time in the future! The Mod Pack To start with, A’therys Horizons is still planned to be a modded experience. The version we will release the public test server on is Minecraft 1.12.2. We have a modpack set and ready to go, and you can find the download link on the Forums home page, and on Twitch. (Custom Launcher coming soon) The note-worthy mods featured in this modpack are as follows: Conquest Reforged CustomNPCs Macro Mod Various other audio and visual enhancement mods The RPG System The RPG System is designed with inspiration from legendary role-playing games of past and present. Experience Earn experience by killing mobs, completing quests and participating in other server activities. With this XP, you can purchase skills and attribute upgrades. Attributes The defining stats of your character. Start off at the same point as everyone else. Give your character the attributes that fit your skill choices. Strength - Improves weapon and skill damage based on Strength. Slightly increases physical resistance. Constitution - Increases max health, health regeneration and improves skills dependent on Constitution. Dexterity - Improves weapon and skill damage based on Dexterity. Intelligence - Increases energy regeneration and improves skills dependent on Intelligence. Wisdom - Increases max energy and improves skills dependent on Wisdom. Slightly increases magical resistance. Magical Resistance - Reduces the amount of physical damage taken from attacks. Physical Resistance - Reduces the amount of magical damage taken from attacks. Some of these you can upgrade, while others are only calculated based on your equipment and buffs. Yes, that’s right, weapons and armor can also carry attributes. Your off-hand, main hand and 4 armor slots are all taken into account when calculating your final attribute total. Skills Unique abilities that are influenced by your attributes. Deal damage, heal your friends, buff your allies and curse your enemies. All of this, arranged in a graph structure which allows for maximum freedom of choice. Build your own class based on your choices, customized to fit your specific playstyle. Using skills is not free though - you use up Energy. Your total energy is determined by your attributes, as is your energy regeneration rate. There will be 18 skills in total, with 6 in tier 1, and 12 in tier 2. Tier 3 will be added in a future update. Custom Damage System Your weapon damage depends on your attributes as well. So does your total health, your passive health regeneration rate and so much more. All of this is thanks to our fully custom damage system. We completely circumvent the vanilla minecraft damage system. Battlegrounds Formerly known as “Conquest”, this is a system that we introduced in late Evo, and reinvented for Horizons. It’s an open-world PvP system based on the capturing and holding of areas out in the world. Battle Points Each battle point represents an area of the world that you can fight over, capture and hold. Awards are received from both capturing and holding. Each point has a very large radius around it, around which any PvP will be further awarded with reputation and currency. For the Public Test Server, we have chosen to go with 3 battle points, each with a radius of 250 blocks. These will be the centers of combat and player interaction in these initial stages of the server. Respawn Points Every time you die within the radius of one of these battle points, you will be given the opportunity to randomly respawn at one of 3 locations, also within the radius of the battle point. Reputation Reputation was thought up as an addition to the battlegrounds specifically for testing on the public test server. This is a concept we’ve been toying around with since late Evo, though nothing ever came of it, until now. All players are sorted in a list. When you first join the server, you will be placed at the bottom of that list. The 1st position is the most valuable, as that is what determines who is at the very top. The higher up in the list you are, the higher Tier you will achieve. You will be able to climb the list by slaying opponents which are higher ranked than you. Each PvP Tier provides you with a multiplier on currency rewards dropped from participating in PvP. Meaning, the better you are, the more rewards you’ll get. The money you earn from this can later go to purchasing better and better armor, more details on that below. Item Sets As you fight your way up the reputation tiers, you will gain access to more and more powerful items. They should allow you to progress further and faster. The approach we’ve taken for the public test server is to have several tiered armor sets. Each tier will progressively cost more than the last, so the only way to get the best equipment is to participate in PvP or grind mobs ( at least for the time being ). Items will be purchased from shops, one per capital. Mobs The public test server won’t be purely PvP, though. We’ve also created a number of different types of mobs, which we hope will add a little bit more flavor to it all. You will be able to farm these mobs for experience, which you will require to progress through your attributes and skills. And who knows, maybe every once in a while, you might get an interesting rare bit of armor or weapon. You will find these mobs scattered all around the test server. Eventually, they will play a larger role with the introduction of quests and dungeons to the test server, but more on that later. What To Expect Later? ( Future Feature Sneak Peek ) You can expect all of the below mentioned features to eventually make their way on to the Public Test Server in one form or another. We need to test everything, including how different systems interact with each other and learn how to balance them properly. Quests As shown during the Seten-Nan event, the quests plugin is essentially complete. We have planned quest lines which we will put on the public test server as soon as they are ready to be presented to you. Expect to be sent on perilous adventures, defeat unruly foes and develop deep relationships with factions through the questing system. Towns People have been able to create their own communities on the A’therys server since its very inception. The custom towns plugin we’ve been developing for Horizons is almost ready to go, but it’s just not quite there yet. Eventually you will be able to form towns, join nations and participate in international politics and conflicts, so be on the lookout for that. Dungeons Dungeons have been one of those pipe dreams we’ve had since the days of V1. We hope to finally make them come true with a comprehensive dungeoneering system for Horizons. A combination of large packs of mobs, boss fights, quests, parkour and various redstone puzzles, you and a group of your friends will be able to take part in interesting adventures to challenge your skill and your wit. Economy The server economy is of paramount importance to maintaining a rewarding gameplay experience. We’re keenly aware of this fact, after having seen the consequences of an ill-managed economy in pretty much all of our previous versions. We plan to create an economic system for Horizons which will maintain itself over a long period of time. Professions Some of you might remember the professions of V1, which were crucial to the economy back in the day. We’ve always had plans to create an in-depth profession system, and for Horizons we intend to do just that. Eventually you will be able to pick out a specific area into which you can specialize your crafting, improve your items with your newly learned skills, or create artisan goods for yourself and others. Airships We haven’t forgotten about this part. We promised this all the way back in the A’therys Horizons announcement in 2017, and we haven’t given up on integrating the Valkyrien Warfare mod (now called Valkyrien Skies) into our gameplay. Do expect to be able to create, purchase and fly around in your very own airships eventually.
  6. We are very much alive. Expect an announcement this week
  7. Happy I got to work on A'therys for as long as I could. Team's gonna do fine without me, A'therys ain't going nowhere.

  8. The Omnissiah has decreed to me in my hibernation chamber that there is a need for at least 2 new tech-priests to join the ranks of the A'therian Cult Mechanicus. Introduction I'm going to be brief. The projects in the A'therys GitHub organization ( found at http://github.com/Atherys-Horizons ) are getting quite large and hard to handle for just myself and @Rynelf . As such, I'm hoping someone reading this might be the least bit inclined to help me in the madness of figuring out the rest of what needs to be written. It's also worth pointing out that there is no money involved. I don't get paid, neither does Rynelf, and chances are you won't either. The A'therys Horizons codebase is open-source. Anyone can see it, anyone can use it, anyone can help with it. But, if you prove that you are qualified enough to contribute to it, then you can earn yourself a place in the A'therys Staff Team. What you get in return will be the opportunity to rack up points on your GitHub commit history. Something like working for exposure in the graphics design or art world. And if you join and help us out, you'll have so much work to do, that you'll have racked up 500+ commits within the year! So, don't delay, join the A'therys Development Team today! Requirements There are requirements, yes. But, they're not because I want you to be able to sing and dance while balancing atop a beach ball, and contribute to an open-source project at the same time. What I put down here as "requirements" are actually things you will just need to understand in order to contribute to the project. If you don't get the things I list here, chances are you won't have a very fun time contributing, since understanding the following things is crucial to the quality of the code you write, and how easy it is for you to write it: Java ( Obviously ) No, not JavaScript Implied is the understanding of: Java Basics Java Object-Oriented Programming Java Collections API Annotations Reflection JavaDoc documentation Gradle/Maven ( for Dependency Management ) Design Patterns ( Below are listed the ones that might come in handy specifically, but if you're not aware of one, or any, of them, that's fine too. As long as you understand what a Design Pattern is, you can pick these up quite quickly ) Facade Model-View-Controller Repository Observer Dependency Injection Object-Relational Mapping We make extensive use of JPA/Hibernate in our projects so having at least a surface-level understanding of this will be of much use to you Git/GitHub ( All of our projects are hosted on GitHub ) SQL ( We use PostgreSQL in development and probably in production once we release ) We do our persistence in SQL databases. Knowing SQL is not the most important thing on this list, but it'll help you no doubt. Sponge API ( If you understand any of the above, picking up the Sponge API shouldn't be too difficult for you )\ Application Process Ok, now that you've read through all of that, let me inform you of the application process. It's quite simple, really: You go to http://github.com/Atherys-Horizons Out of the 6 pinned repositories, you select one ( any except AtherysCore and AtherysProfessions ) You go to the Issues tab You pick an Issue to your liking You fork the repository You create a new branch on your fork which is appropriately named according to the Issue you have chosen to do You do whatever is described in the Issue ( If further information is required, or none was given at all to begin with, contact me ) After you believe you've completed the task in question, you may submit a Pull Request from the branch in your fork into the master branch in the original via GitHub Once you've submitted your Pull Request to whichever repository you've chosen, I'll go through it and do a code review. Honestly, if you get as far as Step 8, chances are I'll want you to be part of the team anyway. Finally, some of you may be wondering why this is so complicated. Well, the truth of the matter is that our codebase is complicated. After 2 years of going at it, we've made a lot of decisions when it comes to the architecture, libraries and overall organization of the code. It's not easy to get into, and I wish it weren't so, but the requirements of the project are such that it can't be easy. That's not to say that if you don't meet all of the requirements we won't help you learn the rest so you can be a fully integrated part of the team. I believe that if you get as far as step 8 of the above process, then you're dedicated enough to learn what is required to help us out. I would love it if just anyone with 2 weeks of doing Java console-based practice tasks off of Codecademy can come in and contribute to our project. But that isn't the case anymore, and there's some real requirements now to understanding what you're doing, without causing havoc in the codebase. For me, it's always been a matter of quality beats quantity. Because if our code is shit, then nobody is going to want to maintain it. A quality codebase contributes heavily to the longevity of the project, and we want this to last. I would like to thank anyone who considers applying ( even if you don't ) in advance, I wish we could make this a whole lot easier for you, but such is the nature of these things.
  9. Yikes. It's been a while. I never intended for these to be frequent, but I definitely didn't expect to forget about them for so long. At any rate, I'd like to discuss something I'm sure people are going to love to finally get some details on. The RPG System! As a reminder, anything noted in this thread is in-development and not necessarily final. It's also worth noting that I plan to go into great technical detail, as is the nature of these things. So, without further ado... Let's start off with a quick summary of my analysis of the problem. As a developer, I need to be aware of the following things: The nature of the problem I'm solving ( What problem am I solving? ) Already-existing solutions and philosophies on the matter ( Has somebody already solved this? What was their solution? ) Best practices when approaching it ( What is most efficient when solving this problem? ) The final end-user(s) of my solution ( Who is going to be using it, and in what manner? ) Why RPGs? To start with, I have to understand what I'm solving. There is obviously an issue that needs a solution, otherwise we wouldn't need to write any code. So, what's the problem? Why do we need RPG systems? Well, historically, RPGs appeared as a single, unified way to play through multiple scenarios or games. In D&D, these are called campaigns. And our case is not really so different. Let's enumerate really quickly all of the different scenarios we expect players to face in A'therys Horizons: PvP Organized ( Battlepoints, Arenas, etc. ) World PvP ( Raids ) PvE Dungeons World PvE So, we need a single system which can allow players to partake in all of these. We want players to be able to fight between each other, and the environment. To skip ahead to the next question, we have to ask ourselves if anyone has come up with a solution to this problem before. And it turns out, yes, they have. Multiple times, in fact. And, in multiple different domains. Tabletops, singleplayer video games, multiplayer video games, MMORPGs, etc. etc. They've all gone for a similar solution, and that's to develop their own proprietary RPG system. So, that's what we're going to do as well. Analysis of RPGs Everyone's aware on some level or another of the meaning behind a "role-playing game", but when it comes to specifics it gets harder to pin down. There's so many varieties of RPGs, that it's rather hard to combine them all into a single definition. From my personal analysis of board games, video games and other such, a system of gameplay can be said to be an RPG when it contains most of the following features: Attributes ( Inherent properties of the player, such as Strength, Agility, Intelligence, etc. ) Resources ( Health Points, Mana Points, Action Points, anything which the player will use up and have to replenish over time ) Skills/Abilities ( An action which the player may take, which can consequently have any imaginable effect on the gameplay ) Progression Trees ( Rather than having access to all content at game start, the player must progress through a series of decisions, each of which may modify the player in any imaginable way ) These are the basic elements of an RPG system, as I understand them. Some have more than just these, others exclude some of them. That doesn't make one RPG necessarily better or more complete than another, it's just a different style and flavor. So, has anyone developed an RPG system for Minecraft before? A few, yeah. Most notable are probably Heroes and mcMMO. And both of them have very interesting ideas, which are worth taking inspiration from. And so I have, but since very early on I decided I was not going to straight-up copy one plugin. I was going to investigate what made that one successful and/or loved, and take inspiration. The A'therys RPG System The following is (almost) copy-pasted verbatim from a previously undisclosed staff document. It contains an in-depth explanation of the basis of the RPG system, while not defining how it will deal with skills and skill trees ( the internal discussions we've had for these are still far from useful to anybody outside of staff anyway ).
  10. The locks plugin is currently planned to be a completely separate from the Towns plugin ( and in fact, I have no intention of developing such, instead opting for a plugin from Sponge's Ore repository ), thus you are correct that it is (un)intentionally being ignored within this permission system. This is a problem that can be fixed later on, and I consider it of lower priority than many other things. For right now these are considered open questions and we can resolve them later on in the development process. Who knows, in a Boring Dev Log down the line I might mention it
  11. 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.
  12. 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!
  13. 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.
  14. The Combat plugin has gone through several iterations at this point. Some of which testable, others not. It's been a genuine process of trial and error, trying to figure out how to code a plugin flexible enough to account for the oh so many different playstyles we've seen over the years. I don't like promising anything, because I'm of the opinion that no matter how far into a project you are, you can always scrap the whole thing and start from scratch if you start noticing flaws in the fundamental mindset of your design. So far though, this is what I can hint at: 1. A skil tree-based approach to progression - Just as it says on the tin, you will be able to make your own path through a skill tree. Nothing and nobody will limit you in which route you will take, and with this there will obviously be some choices which are better than others. But then again, that's always been the case. 2. Skills ( duh ) - I liked Heroes skills. There was nothing wrong with the way they worked on a fundamental level. What I didn't like was the complete and utter reliance on that dreaded macro mod which forced you to bind every single key on your keyboard to a skill. This was only made worse by the fact that you had to twist your hand into all sorts of horrible positions to set off just the right combination of skills, in just the right timing. While the skill system itself will not be limited in any way, shape, or form ( intend for it to provide the same sort of functionality as the Heroes skill system ), I hope that skill designers will take into account the fact that at the end of your skill tree, you do not necessarily need to have a dozen different skills in order to pull off the damage you need. I've always been of the opinion that at the end of the day, one should have no more than 4 or 5 skills which synergize well with each other. 3. Armor and Weapon stats ( I call them attributes, though they're a far cry from the traditional RPG meaning of an attribute ) - There was always a fear in the Heroes era of armor contributing too much to your fighting ability. Yes, the armor you wear and the weapons you use either make you better or worse for your class. That's prevalent in just about any RPG I know of. In fact, it's something of a staple. I want to see this in A'therys, and I hope that these "attributes" might result in players being more selective/careful about the items they use. This is the most experimental feature of the entire plugin, so while I talk about it here, I don't know how deep it will go when the plugin is finished. I hope I can figure out some of the kinks I have with it, because I believe it would be an excellent addition. I hope this satiates your curiosity. Take what I've written here as a general guide to my thinking and approach to the plugin, rather than concrete facts or features which are going to make it into the final product. They might not, but this is my mindset and I hope it's a good insight.
  • Create New...

Important Information

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