BIG news: NBT Data

So, today, I am writing about something really, really big. Something we have been fighting with for a long, long time. Something I have basically already given up on some long time ago. But now, it’s here.

What is it?

NBT Data.

What the @$&#% is NBT data?

Big. Really Big. It’s the best. Really great. We have the best NBT Data in the whole world.

Sorry about that.Got into the mode of my day job…

NBT data is, increasingly everywhere. As you might know, every block/item in the game used to have a number (air is 0, cobblestone is 1 and so on). Then, there was a second number to define sub-types like wool color, damaged swords, egg spawn types and so on.

Then Mojang found that they cannot remember all the numbers after they added so many blocks and renamed all blocks from numbers to item names (like ‘air’, ‘stone’ etc). Then, they realized that they had too many subtypes. Since swords are not only damaged but also enchanted, potions, fireworks and banners can have several properties, you need more information than just another number. So they created NBT (Named Binary Tag).

We are using PHP for all the deposit, shop and so on, and to be able to use PHP for a game written in Java, you need an interface. Ours is called websend.

There are 2 issues with that. 1) The way minecraft stores the NBT data is a bloody mess. 2) Anyone who wants to get NBT data out of minecraft needs to sort out that mess. So Websend needsĀ  to do the same. But they never really did. They did enchantements, used again a special format for it and then stopped there. So we never got anything else running but enchantments. In the meantime, even spawn eggs moved from numbers to NBT to indicate what mob would spawn, and they broke. Potions as well.

And then the solution came when Psiber got behind it and fixed Websend in about a full week of nerve-wrecking fiddling with the minecraft code, the websend code and another plugin that is supposed to solve NBT issues but is already included in a broken version in another plugin that we also use, so he could not use it again, and the format was wrong, and the quotes where encapsulated and whatnot other programmers nightmares.

Anyhow. You get the picture. And in the end he fixed it and I had valid NBT data in websend to use in PHP. Then, I had to go and look for every time we display item data, store item data, give items or take items from somewhere, and change the method so that it would not work only for the legacy enchantments format but for all NBT data.

Then I had to go into the shop and deposit and reformat all the existing stuff to the new NBT format so people could continue getting their lottery stuff and so on.

And now, it’s hopefully done. What does that mean?

We can use the following items in shops, deposits & lottery:

  • written books
  • potions
  • enchanted books & items
  • dyed armor
  • spawn eggs
  • named items
  • fireworks
  • shields & banners
  • any new item that mojang dreams up.

However we have actively blocked shulker boxes from being deposited (for obvious reasons).

What is left to do? A lot. some stuff more needed than others, some cool stuff as well.

  • We still have work to improve the display of items and how you can find them in the shop better than today. (e.g. search for enchantments or specific potion effects.
  • We have the option now to ‘copyright’ certain banners (as a donator perk for example) and then nobody else can create/use the same banner.
  • fix potential bugs (I have tried to test stuff, but I am not 100% sure if I got all the options).
  • Online editors for things like books (although this is complex in most cases)
  • Any other ideas?

Please be careful for the next couple of days with the shop & deposit. Please report to me immediately if something is not working 100% right. If there is an issue, make careful tests to make sure the issue is repeatable. Please don’t come to me saying you lost 100 diamonds because you tried the same issue 100 times and it still did not work.

Finally a big thanks to Psiber who helped making this possible!

 

 

Lottery issues fixed

Hey all,

I just fixed all the lottery issues. So nobody should be getting air blocks anymore…

Also there is now a 5% chance to get a random amount of a random sapling, thanks to VixenGold for the suggestion!

Today’s development updates

This is a daily update on the status of the work done behind the scenes.
Our webserver is completely open source, hosted on GitHub. You can help improve the server by fixing issues here.

Lama & Polar Bear Eggs now in the lottery!

For your info, Lama and Polar Bear eggs are now part of the lottery.

They can be won within the 1% chance to win an animal egg. There are 14 types of eggs in there, so it’s a slim (one 14th of a percent) chance, but they are out there!

Thanks a lot to alleywig for proposing this and also contributing the fix!

Today’s development updates

This is a daily update on the status of the work done behind the scenes.
Our webserver is completely open source, hosted on GitHub. You can help improve the server by fixing issues here.

Deposit issues

We recently have reports of deposit items getting lost on withdrawal. I would need to get detailed information from you on this in order to fix it:

  • The Deposit ID
  • The item type
  • which world you were in
  • possibly exact time

please post here as a comment.

[Update]

I think I found the issue. It seems that the diamond pickaxe has been re-named from “diamond_pickaxe” into “diamond_pick” in minecraft. So diamond pickaxes failed to be deposited and therefore disappeared. I have fixed that now, so we should be back to normal.

Today’s development updates

This is a daily update on the status of the work done behind the scenes.
Our webserver is completely open source, hosted on GitHub. You can help improve the server by fixing issues here.

Disguises & Teleport blocks

I was reminded by Alleywig in a forum post that the old Disguise plugin protected users to be teleported to. Since the disguise plugin broke some time ago, I forgot to look for an alternative. In order to re-instate the teleport block, I now simply gave all donators from Architect level and above the option to use the /tptoggle command (see instructions on the bottom of the User commands page) to block people teleporting to them. I consider the option by masters to teleport to users a security feature, so I do want to keep that an option for Citizen and below.

Further, I am looking into alternative plugins to re-enable the disguises. More to follow once I have found something that works and updated the command instructions.