Skyblock is online again!

Published on 25 Jan 2020 by Lekro

We are pleased to announce that the 1.15.1 update for Skyblock is live on CubeKrowd!
This update was a rough ride for Skyblock, so we want to document here what happened
and how we solved it.
We transferred 18201 islands and 29144 players to a new plugin called
BentoBox, and migrated all configurations
to the new format.

Skyblock on CK has a rich history. Our first skyblock used the uSkyBlock plugin,
until April 1, 2015, when we switched to ASkyBlock and reset the world to the
current one. This world has seen a lot - almost as much as the creative world!
If you lost your island during the hard drive crash long ago and log into your island
and find that it is “unowned” (check /is info), contact a moderator to have your
island manually reassigned to you!

Special thanks

As usual, the skyblock update was not a developer-only effort, so we would
like to provide special acknowledgments to the following very helpful people:

zorua162: migrating all the challenges, greenhouses, and block value
configurations to the new format, and working with Doskeys on design

Doskeys: designing new challenges, greenhouses, and block value

TALLPUP: designing challenges and making game balance decisions

Poslovitch from the BentoBox development team: providing useful insight
and help on writing our own converter

And as usual, the CK moderation team worked together to design new
challenges, greenhouses, and the in-game experience!

Known issues

Those interested in immediately returning to their skyblock islands should be
advised of the following.

Island names have been reset.

Greenhouses have been reset. You will need to reregister greenhouses with
the /g command.

The island level calculation algorithm has changed slightly.

The spawn cow’s name is now always CubeCow and island sign is empty.

While converting, we found that 44 players likely lost an old island and
decided to play on a new one. These players now have two islands. If you
are one of the affected players, you will receive a /mail in /ckc
(lobby) or a Discord message. Please contact the moderation team in this
case. We were able to pick the right island (the developed, non-starter one)
for 30 players, but sent mails/Discord messages to 14 players.

Changelog

CK Skyblock has been updated from 1.12.2 to 1.15.1.

We have switched from ASkyBlock to BentoBox/BSkyBlock.

The starter chest now contains three wool to help avoid phantoms more easily.

Because emeralds are so much easier to obtain since 1.14, emerald blocks
now have a value of 25.

To encourage efficiency in hopper usage, hoppers now have a value of -10.

Re-added JL’s Yogurt biome.

Many commands have changed! Run /is help and /is team help for more
information.

The migration story

The migration of player and island data from ASkyBlock to BSkyBlock posed a
challenge, particularly for CK, because our ASB player files have been through
at least one stage of corruption and one hard disk crash! As a result, we had
player files split between three directories and a number of islands missing
from the database.

The major problem we had during the 1.13 update was that ASkyBlock was to be
superseded by BentoBox/BSkyBlock and the authors decided to drop support
for the plugin. There was also no migration tool available to convert
ASkyBlock configs to BSkyBlock format.
So, we thought it would be best to fork ASkyBlock and update it to 1.13,
but this turned out to be more difficult than we initially thought. Forking
the project would mean that we would have all the maintenance burden in the
future as well, and we already have quite a few projects to maintain!

After putting skyblock on the backburner for a while, we found out that the
BentoBox folks released
an official converter! We
were able to then see how BentoBox would work for CK Skyblock. zorua162
provided greenhouse, blockvalue, and challenge configurations. Initial
results using the converter were promising, but had a number of problems:

Homes and challenge completions did not convert. We wrote python scripts
to transfer these.

Certain islands failed to convert.

Islands were missing due to problems with our ASB data.

Specifically, missing islands caused BentoBox 1.9.2 to take a very long time
to search for valid island locations, and development snapshots of BentoBox
1.10.0 used these missing islands as valid locations, which caused new island
generation to happen right on top of old missing islands. Of course, neither
of these would be acceptable for CK, so it was necessary to find some way to
“mark” these islands as invalid spots for generation. As a result, we decided
to write our
our own conversion script which
would take care of all issues unique to CK’s ASB files.

pya2b was developed over the course of a few weeks and aimed to provide BSB
versions of players, islands, challenge completions, warps, homes, island
levels, and the top ten scoreboard. All other database values and
configurations were simply copied from the ones used with upstream’s converter.
We added extra island and player file reconstruction:

Player files of island members also contained the team leader uuid and island
center, so we were able to reconstruct islands from island members’ player
files.

All islands had one bedrock at the center with y=115. We were able to mark
bedrock blocks whose coordinates were not included in any player files, and
turn them into “unowned” islands.

Certain islands were present in older backups of the configs, but not the
latest version. We were able to restore these islands, provided they did not
coincide with islands described in later versions of player files.

With all this in place, we were able to reconstruct even islands that were
inaccessible/corrupted in ASkyBlock. After some finishing touches, Skyblock
is ready!