Welcome, Guest!!
follow us on... Facebook twitter youtube

Author Topic: Development diary #2 - Plugins - Please just work!  (Read 423 times)

Offline Oplegoman

  • Senior Admin
  • Member
  • ****
  • Posts: 455
  • Reputation Power: 37
  • Oplegoman is on the verge of being accepted.Oplegoman is on the verge of being accepted.Oplegoman is on the verge of being accepted.Oplegoman is on the verge of being accepted.Oplegoman is on the verge of being accepted.
    • View Profile
Development diary #2 - Plugins - Please just work!
« on: April 04, 2021, 06:18:51 PM »
Development diary #2 - Plugins - Please just work!

(Some things got an update, totally not by changing plugins or anything...)


Our first Dev. Diary seemed to go down well and as promised we are bringing you another one focused on plugins. We shall discuss the good, the bad and the ugly about getting plugins to work as we would intend. We would like to make it clear from the outset that most plugins are developed by people on their own time and for the most part these people are not full-time developers adhering to "standard practice". This does mean plugins are not made equal, and they come in varying quality. This is something which we are in constant battle with.

Current Setup

Currently, we are running 50 different plugins:


With each of them serving a purpose, some are core to the server, such as Towny or GriefPrevention, while others you may have never noticed or thought about such as ProtocolLib, LuckPerms or PlaceholderAPI. For the most part, these plugins work together well enough for us to not see many issues and go about playing the game as we normally would. But for this to happen, so smoothly we have had to modify all the different config files for each and every plugin to our needs or requirements, this is a very time-consuming process.

As you may have heard before, our current setup is falling apart, which is a little dramatic but not far from the truth. As for plugins, they update and progress through their versions, features are added, removed or reworked. This is very nice if we want to include that new feature, but it has a rather annoying aspect of it which none of you will see. With each update, the config will have updated features or changes. If we wanted the best possible performance from our plugins we would refresh our configs upon each plugin update, which is pretty hard to do on a permanently online server without significant downtime or causing major irreversible issues.

Another aspect of plugins I would like to touch on here is how they hold their data, plugins depending on how sophisticated they allow you to pick between two distinct data storage methods:


  • As singular files in the plugins' folder - This is the most common method by which plugins hold their data and for smaller servers, this is not an issue. This type of storage will have implications later on, especially with bungee.
  • Within a database (MySQL) - This would allow us to hold data outside the plugins folder and have the potential of having more concurrent connections to our data. For servers from our size up, it's near enough a must for data retrieval speed and limiting the number of files (no one wants to deal with 250,000 files in a singular folder).

For our current setup, it does not matter which storage method we have gone for as it would work as it would all be running on the same server so the availability of plugins is just so vast.

Bungee

As we are moving towards bungee, we had had to specify within our planning what we want to do and ensure we could use plugins we currently do more creatively, find new plugins for specific tasks or if all else fails find a compromise we are willing to take. This sort of thing we can only do through experimentation to even see if the new plugin will work as intended.

Our main goal was to ensure the same level of integration our current worlds benefited from, with bungee having it exactly how it currently is would be impossible due to the fundamentals of bungee and how it wants to keep each server segregated from the rest. This is great for a large minigames network or a large multi-game network with factions, towny, SMP, etc; but it does not work for us.

Not to worry however, we have made progress on this front, and we continue to make progress. This is some progress we have made and would like to share with you all;



  • Cross-server chatting - This could be seen as more on the most important aspects and was something which is a must from our point of view.
    • We have gotten Local, Global, Senior Member and all staff channels working.
    • Direct Messages are currently working (just needs format fixing).
    • Mailing is partially working, trying to narrow down the issue, it's likely a database issue.
    • Town and Nation Chats is proving extremely difficult.
    • McMMO party chat will be replaced with another party plugin to allow cross-server chatting.
  • Cross-server Inventories - We got plugins for it to work, don't ask me how, it just works, and I claim it to be magic!
    • Fedgardia, Horizon, Kattalox, Alpha and Pern all share the same inventory.
    • Can be a little slow to update your inventory if you jumped between servers quickly.
    • Money is shared between Fedgarida, Horizon, Alpha and Pern. You can also pay an offline player, which is something new.
  • Cross-server Teleportation - We had to get 5 different plugins for this to work, so all sorts of teleportation do work as we would like it to.
    • Homes work, the home bed will not be possible.
    • Warps work, it will mean all warps will need to be remade and signs replaced. We are working on a plan for this.
    • TP?s, work across servers as you would expect.
    • /back /back does not work as intended, looking at solutions for that.

That was a little teaser of the progress we have made on the project, We could have listed more but not quite ready to write a novel.

Certain Plugin Changes

Certain plugin changes will just have to happen with how some plugins store their data, and if it's not in a database, the plugin essentially becomes useless to us. We have made some plugin changes so far, to some which we knew would work across bungee in the way we would want it to. This list is likely not final and some more changes are likely to be added at a later date.

Essentials Home        -->  MaSuite Homes
Essentials Teleports  -->  MaSuite Teleports
Essentials Warps      -->  MaSuite Warps
Towny Chat               -->  ChatControl Red
AuctionHouse            -->  GlobalMarketChest
McMMO Party Chat    -->  Party and Friends


Putting things into context

We are running 7 servers which all have a base of 36 plugins to ensure consistency between the servers, each of these plugins has at least one config file which would need changing to meet our needs, this makes over 252 different configuration files. Each configuration file can range from anything from 20 lines long to well over 3000 lines long depending on the plugin. This equates to an extreme task.

As we are running 7 servers, and we have many plugins which use MySQL databases, we have well over 25 active databases, each database could have multiple tables of data. This at last check makes 300 active connections to the MySQL server at any given time, once it gets played upon we can imagine the number of active connections going up.

We have given these few facts to show the enormity of the project ahead of us and show that we are making progress in the right direction even if that progress is currently rather slow. For the next development diary, give us some questions or concerns which you would like to be answered about this massive project.


- Sentinel Staff
« Last Edit: April 05, 2021, 04:59:43 PM by The Carrot »