DISCLAIMER: Potterworld or Droobledore LLC is not in any way affiliated with Mojang AB, J.K. Rowling, Warner Brothers or any company, copyright or trademark.
PotterworldMC PotterworldMC PotterworldMC

Development Blog - August 2022


Greetings witches and wizards!

Welcome to the fifth Technology and Development blog! Every month it is great to see the engagement and support that these blogs gain, and as such we’re excited to share even more about the inside workings of our server with players. This month we’re excited to explore some of the fundamental workings of our player bags system and highlight the server’s future upgrades.

As usual, if you haven’t read the previous ones, you can do so here. It’s definitely worth it:

May Development Blog
June Development Blog
July Development Blog

For this blog, we’ll be covering these topics:
August Achievements: What we have achieved this month
Player Bags: How these work and the challenges in delivering them
Upgrading to 1.16: Is it really coming SoonTM?
The Future: What we plan on working on in September



August Achievements

Our Housing Update was released which included many long sought after enhancements to the Housing permission system, as well as a minor revamp of the Mine Depot and Housing scoreboard

Player Bags were also released to the players after over a year in development; we’re very happy with this feat, and are excited to share some of the inner workings of the system below



Player Bags

With the recent release of Player Bags we wanted to turn our focus in this blog towards our bag system, and how it varies to regular Vaults and also explain some of the challenges we had to overcome while implementing such a system.

To begin with we will detail how we save your player bag.

Each slot in your bag is saved as an individual property within a mongo database document per-bag. This allows us to be selective about which items we submit for saving, reducing the overhead of unnecessarily saving items that haven’t changed.

To save an item in the bag, we first collect all the items that you have put in your bag. After that, we turn the itemstack into a base64 string, this is basically a set of letters and numbers that contains data about the item.

An example of the layout of a bag containing 1 Runespore Venom is shown below:
JSON:
{"bag":{"0":"rO0ABXNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFwdAAPTGph\ndmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFibGVNYXAk\nU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmplY3Q7WwAG\ndmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN0AAI9\nPXQABHR5cGV0AARtZXRhdXEAfgAGAAAAA3QAHm9yZy5idWtraXQuaW52ZW50b3J5Lkl0ZW1TdGFj\na3QAClNMSU1FX0JBTExzcQB+AABzcQB+AAN1cQB+AAYAAAAFcQB+AAh0AAltZXRhLXR5cGV0AAxk\naXNwbGF5LW5hbWV0AARsb3JldAAIaW50ZXJuYWx1cQB+AAYAAAAFdAAISXRlbU1ldGF0AApVTlNQ\nRUNJRklDdAASwqdhUnVuZXNwb3JlIFZlbm9tc3IANmNvbS5nb29nbGUuY29tbW9uLmNvbGxlY3Qu\nSW1tdXRhYmxlTGlzdCRTZXJpYWxpemVkRm9ybQAAAAAAAAAAAgABWwAIZWxlbWVudHNxAH4ABHhw\ndXEAfgAGAAAAAXQAFsKnOENhdGVnb3J5OiBNYXRlcmlhbHN0AFBINHNJQUFBQUFBQUFBT05pWU9C\nZ1lFM09MRW5OWlpETVRTeEpMY3BNekNtT0x5ck5TeTB1eUM5S2pTOUx6Y3ZQWlFBQU44dWE0aWNB\nQUFBPQ==\n"}}
The server will then process this string to fetch the number of the slot, the "0" in this case, as well as the value associated with that. That associated value is the base64 string of 1 Runespore Venom. From here, the server will load in the item as seen below:


We then compare this to the value that already exists in your bag for that particular slot to see if that item has changed. If it has not changed, we skip saving the item. If the item has changed, we will update that slot in your bag.

By being selective with what we save, it ensures that the updated content request we send to our backend service is not too large. If this change is too large, our backend will reject it for being too large, and that is what causes Vaults to corrupt.

When we look at Vaults, they were developed to save the whole inventory in a single document. As vaults became larger, the amount of data to save became larger. By breaking the data up into chunks (saving one slot at a time), like we have achieved in bags, we have resolved this issue.

In simple terms, Vaults save your entire inventory, whereas bags save one item at a time. This smaller data string has a less chance to exceed the request payload maximum, thus reducing the chance of wiping.

We’re excited to announce that we’ll be updating our Vaults to save in a similar manner. This will allow players to use them confidentially again!

However, we also had some issues when implementing bags as we realised there was no way for us to tell who’s bag we were currently saving or had open. This was caused by the fact that each bag was just an empty inventory with no identifying factors in it. This led to the issues encountered when we first dropped bags in 2021.

To get around this issue, we had to rework the way we track our open menus (and bags), to allow the server to correctly identify which player belonged to which menu.



Upgrading to 1.16

For quite some time now, many have been asking about the future of Potterworld and if we are considering upgrading to a more recent edition of Minecraft. To answer this question, yes this is planned.

Upgrading from 1.10 to 1.16 will be no easy task. With a small team there are a lot of variables we’ve had to consider. Some of these include:​
  • How do we continue to develop the server and work on a new version concurrently​
  • How do we account for breaking changes in the Minecraft versions​
  • How do we transfer the data we save in 1.10 for items/shops etc. into support for 1.16​
There are also non-dev factors to consider such as the resource pack.

We have decided our goal is to work at converting sections of the Potterworld code base into supporting 1.16. We believe this is a better approach than trying to go all in at once.

We will be utilising a system where we can run our current 1.10 code, and in parts where Minecraft has changed how their code works, we can overwrite these small sections. This has the advantage of allowing us to dynamically maintain our code and not have to perform a complete rewrite in our upgrade.



The Future

Having now completed our public upgrades of Housing, friends, parties and guilds, it is important for us to return our attention to some of the behind the scenes requests for our Game Designer team.

While we cannot reveal the specifics for now, some of the things we’ll be looking into include a more sophisticated level of in-game integration to our map. For example, seeing where your friends, party members and quest objectives are located.

Alongside this work, we’ll also be making some very minor changes to our minigames.

With regards to Party Games, based on recent feedback, we’ve gone ahead and disabled the following phases:​
  • Tag​
  • Hide the Gold​

We have also begun work on a new Party Games phase called Speed Build and hope to release it this month! Furthermore we’ve requested map upgrades to refresh some of our older games including:​
  • Capture the Pixies​
  • Keep the Crown​

This month we will be investigating the feasibility of adding minigame rejoins for our longer games such as Gauntlet and Dungeon. While we have no ETA or promises on this, we understand it is a pain point of queueing for a game, and then being disconnected with no way to return.

Finally, we are looking into the ability to allow minigames to have monthly leaderboards. However please note that this idea is only preliminary research and there is no promise that we will be able to deliver on this.

We hope these changes will be enjoyed when they land and bring more attention and popularity to our wide range of games!

And that concludes this month's Development Blog. Thank you for reading, and we hope you enjoyed it. As always, please do not hesitate to leave any feedback or thoughts below, it is greatly appreciated.​
 

Comments

Somnambulist

Librarian
Minecraft IGN: Psycho
Phoenix Raven Werewolf
#2
Excited to see Potterworld updating to 1.16 - do you guys have an ETA on this like within 3-6 months? A year?
Great job on sorting out the backpack issue since the initial release too! And it's nice that you guys are applying the same technique that's used on backpacks toward the vaults system instead of neglecting it.
Hopefully you guys are able to figure out a way to create monthly leaderboards, can't wait to see that!

As always, thank you for these updates and the insight on sorting through issues and creating new features for the server!
 

Ivan_

Librarian
Minecraft IGN: _Navyy
Auralock Griffin Phoenix Vampire Werewolf
#3
For quite some time now, many have been asking about the future of Potterworld and if we are considering upgrading to a more recent edition of Minecraft. To answer this question, yes this is planned.
woooo
 

Harrison

Graduate
Staff
Minecraft IGN: Teheeo
Auralock Dark Follower Staff Grounds Keeper Lead Phoenix Raven Vampire Werewolf Arithmancer SPEW Sr. Developer Lead
#4
Excited to see Potterworld updating to 1.16 - do you guys have an ETA on this like within 3-6 months? A year?
Since this is something we are only doing on the side. Most likely it'd be some time north of 6 months, but we won't fully know until we begin and are able to fully assess what needs to be done.
 

Ivan_

Librarian
Minecraft IGN: _Navyy
Auralock Griffin Phoenix Vampire Werewolf
#6
Why 1.16 and not 1.18 which has better performance mods and increased build height that can be used to make the Hogsworth lake actually deep, opening the possibility of an underwater update ?
dont rush them, that comes out in 2026!
 

Pankakes

Animorphus
Minecraft IGN: Pankakes_81
Griffin
#7
dont rush them, that comes out in 2026!
I mean, they definitely are busy with all the restructuring of teams and reworking the future vision of the server as well as finding the right distribution of work between the teams.

Imo the team is also more open to suggestions and they're more willing to explain. I remember talking to sunnya once how suggestions on the forums are always ignored after a decision has been made. A week after and staff is responding to forums even after they have been marked as declined just to explain their reasoning and be more clear