Universes icon

Universes -----

A multi-world plugin for 1.14+



Universes, Life, And Other things
Before I begin, no, there is no update to the plugin. This is merely something that has been on my mind for some time, and something I want share.

I'm sure the vast majority of you don't really know what developing a plugin involves. Of course its nothing like developing Microsoft Windows or some other massively used product, but those projects are working on by hundreds of people at the very least.

Developing a plugin is not nearly as rigorous as that. I have no boss overlooking my work, I have no deadlines, none of the workplace stress. But it is also just me. And I am also still pushing a product out to the general populous that should be complete and work as intended. Sometimes that is not the case. More often than not, the bugs reported are small things that can be worked around, but are still prevalent and annoying. But that's why I check the website every day. I read every review and every discussion board post and every private message I am sent about all of my plugins. Most of the time, people are helpful enough to send me error reports and detail what the experience so I can better help them resolve the issues. But from time to time, I'll receive something along the lines of, "It doesn't work," and "Why can't your plugin do this?"

Answers to these questions are rarely simple. Today, I want to just take a few minutes to explain why I sometimes can't give an answer or why fixes can sometimes take so long.

Last year, at about this time, I decided I wanted to make my own multi-world management plugin. I spent a majority of my free time between last April and last July designing and programming the plugin I eventually named Universes. I had no intention of actually publishing it originally--in fact, I only really built it for fun and to test my skills as a budding programmer. But I had poured so much time and effort into it, I wanted to share it and let others reap the benefits of my work. I can safely say, no less than 300 hours went into Universes 1.0.

Throughout this year, I have made changes and released numerous new versions. I've lost track of the hours I've poured into this project, but it's quite a lot. Being a college student, I'm already pretty busy too. So, in late January, not long after the release of the 2.1.1 patches, I received a review stating Universes was bad and confusing, and that my work was lazy. (If you're curious, I'm referring to the only 1-star review I've received). I got to thinking about the first quote I mentioned above.

"it doesn't work."
If something doesn't work, no doubt I'd like to fix it. But saying no more than that is frustrating. What doesn't work? Can you give me an example of where something went wrong? If all I see is something like that, are you expecting me to go through the entire plugin and test every single thing again or look through all the code for potential bugs. Even then, I have no idea if what I'm fixing is what I'm told was broken. Universes, in case you don't know, contains somewhere around 6 thousand lines of code spanning 48 different files. Going through all of that to search for a needle that looks like the rest could take months.

If something is wrong, before stating so in a review, reach out to me and tell me. I'll ask you to tell me what happened when the bug occurred, and I'll ask for logs and error reports as well to help with my investigation. If I have just those two or three things from you, which would take all of five minute for you to obtain, my search would shrink to maybe three or four hundred lines of code over one or two files.

Moving on, I've seen many different users reach out to me here and on discord, which I'm always happy to see and will never turn away, and I've noticed a few recurring things. Probably the most notable one, is along the lines of the second quote I mentioned above.

"Why can't your plugin do this?" "Why will you add this feature"
Sometimes, adding something or changing something isn't as easy as it seems. For example, the per world inventories system. Before I had even thought about adding the feature, just before 1.14 came out, I received a private message here on the spigot forums asking when per world inventories would be included. I had not even considered the idea prior but when confronted with someone who appeared to be assuming I was planning to include the feature, I realized that it was something a lot of people would probably want. I figured it probably wouldn't be hard to do. All I needed to do was swap out inventories when someone changed worlds right? Well, not quite. Turns out, doing that required complete rewrites of the teleport handling events and several days of researching ways to do it.

Perhaps an even better example, however, came not too long ago. I was asked by someone on Discord whom I had previously helped with something if I could modify the /ut command so that it could save and return players to their last location in a given world. That sounds like something that could be done in a matter of minutes. But, like with most things, it wasn't so simple. In fact, to make that small change, I had to copy over the code that /ut originally had and make /us to maintain that functionality. Then, I rewrote the code for the command from the ground up to achieve what he was looking for. Along with that, I had to decide on a place to store these coordinates I was retrieving. Since I already had inventory data files in a folder for each world already, I decided to use those to store the coordinates. After that, I had to modify the code where player teleports are handled to store coordinates when the player changed worlds. Intermittently, I had to test the code I was writing in to make sure it worked the way I wanted. In all, adding in that small little feature took me almost a week amid my classes.

And then, only a day after publishing the release, I received word that the new command still had some glitches. So even when I was done, I wasn't done. In fact, I think I still need to do some work there.

Now, I just have one more thing I'd like to touch on. I know, this is getting pretty long. I apologize for that.

More frequently than I'd like, new features I add in don't work correctly for some people. As I've said, I'm the only one working on this plugin. This means that when I test the plugin prior to release, the features are only examined in one server environment. However, no two servers are alike, and I have no way of knowing what plugins you do or don't have. I try to test with the common plugins a lot of people have, like Essentials for example, but I can't account for everything.

When issues do arise, though, I try my best to get things working. In fact, I've been working closely with two servers that have been having some odd isolated issues. I don't discount the possibility that something I've done just won't work on someone's server, thus, I am open to the idea of making custom versions where needed. Or, if you have the knowledge and ability, the code is provided in a github link for anyone to make their own changes.

Having said all of that, I'd like to leave you all with one simple request. When something goes wrong, before you post or comment, reach out to me. I can promise you I'll see your message within a day, and I will always work, to the best of my abilities, to fix things. And, if you've requested or suggested a new feature, I ask that you just give me a little time to do it.

I suppose that was two things, haha. I hope you all enjoy the work that I do. Nothing brings me more joy than seeing you guys happy with the fruits of my labor.

You all have a great day now. And feel free to reach out with any comments or questions.
----------, May 14, 2020
Resource Information
Author:
----------
Total Downloads: 8,378
First Release: Jun 6, 2019
Last Update: Jun 14, 2024
Category: ---------------
All-Time Rating:
32 ratings
Find more info at discord.gg...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings