Minecraft 1.21.1
Vanaf nu draait SkyBlock op Minecraft versie 1.21.1, we hebben de keuze gemaakt om zo snel mogelijk te updaten naar deze versie vanwege vele nieuwe functies binnen Minecraft die zijn toegevoegd voor items en entities. Dit geeft ons de mogelijkheid om wat leuke custom dingen toe te gaan voegen in de toekomst.Speeltijd per profiel
Er wordt nu per profiel bijgehouden hoeveel speeltijd je hebt, deze tijd is terug te vinden in het profielen menu (/profielen)Let op! De speeltijd die je op dit moment al hebt op SkyBlock wordt hier niet in meegenomen, omdat we niet kunnen achterhalen op welk profiel dit was behaald. Deze speeltijd is echter niet weggehaald en de totale speeltijd kan je nog steeds zien met het command /playtime.
Overige aanpassingen
- Vincent geeft nu elk uur willekeurig fruit in plaats van steak
- De volgende fruitsoorten kan je krijgen bij vincent
- Bananentrossen
- Druiven
- Kiwi's
- Citroenen
- Mango's
- Sinaasappels
- Peren
- Ananassen
- Frambozen
- Aardbeien
- De volgende fruitsoorten kan je krijgen bij vincent
- Team bank saldo is toegevoegd aan profiel informatie in het profielen menu
- Leaderboards
- Er is een leaderboard voor meeste chatgames gewonnen toegevoegd en is ergens in de lobby te vinden
- De leaderboards die naast de crates staan zijn vastgezet, dit geeft een overzichtelijker beeld
- Chatgames
- Deze functionaliteit zit er inmiddels al een tijdje in, maar is nooit eerder genoemd in een update.
- Het mob hunter menu is wat duidelijker gemaakt
- Het /eiland commando heeft naast /island en /is nog een alias gekregen, ga jij erachter komen?
Bug fixes
- Soms kreeg je items in je inventory die uit een menu zoals het SkyBlock menu kwamen
- De vliegen op eiland permissie bij de eiland instellingen werd niet goed opgeslagen
- Challenge generator blok bleef staan nadat de de challenge was afgelopen
- Challenge generator blok kon verplaatst worden d.m.v. pistons
- Items stackten soms niet goed in kisten, hoppers, etc
- Je kon je eiland spawn locatie zetten op een ander eiland
- Bonemeal kon gebruikt worden op spawn locatie in de nether
- Nether en end dimensies werden soms niet ontgrendeld, ook al had je het level al wel behaald
- Verschillende typfouten verholpen
Mob Hunter update
In een suggestie die ik heb aangemaakt in de Discord server heb ik een idee opgelegd voor een Mob Hunter update, met daarbij onder anderen ook 1.21 en een eiland naam voor eiland leaderboards. Deze aanpassingen zitten nog niet in deze update meegenomen, maar zal de volgende update komen.We zijn echter al wel begonnen met de development van deze update, maar bij het overzetten van SkyBlock naar 1.21 kwam er meer bij kijken dan van te voren gedacht. Hierdoor hebben we besloten om de versie aanpassing nu te doen en de rest van de update in de volgende update, om te kijken hoe het loopt met 1.21 en eventueel nodige problemen op te lossen voordat een grotere aanpassing erin zit.
Ten eerste moesten we wachten tot elke externe plugin die we gebruiken support had toegevoegd voor 1.21, hier ben je nou eenmaal van afhankelijk en kunnen we vrij weinig aan veranderen.
In de tussentijd konden we beginnen aan het updaten van onze eigen plugins, eerst ons utils project waarin we voor elke versie die we gebruiken op de server een module hebben zitten om NMS code (weet je niet wat dit is, zoek het even op internet) aan te roepen. Hier moesten we dus een nieuwe module voor aanmaken om support toe te voegen voor 1.21, normaal gesproken is dit niet zoveel werk, omdat er vaak niet veel wordt aangepast op een paar class (bestand) en package (map) namen. Alleen de server software die we gebruiken; Paper, heeft de keuze gemaakt om de NMS code niet meer te obfuscaten (dit houdt eigenlijk in dat een methode in de originele code bijvoorbeeld 'setName' heet, maar na het obfuscaten 'a' heet) waardoor we aardig wat methode, class namen, etc. moesten aanpassen om dit werkend te krijgen.
De tweede horde die we tegenkwamen was de hologram die we gebruikten, deze wordt niet meer onderhouden. Daarnaast gebruikte deze plugin nog armor stands voor holograms, terwijl we tegenwoordig display entities kunnen gebruiken. We hebben een eigen systeem geschreven om holograms te maken met display entities. Nu het systeem klaar was, was het een kwestie van alle holograms omzetten die we gebruiken (NPC's, shops, parkour, crates, leaderboards, etc)
Daarna kwamen we aan bij het volgende stuk: inventories, verloren items, eiland leveringen, etc; alles dat te maken heeft met items. Voorheen gebruikten we een simpele methode waarbij we de NBT van een item ophaalde en deze omzette naar bytes en in de database gooiden. Echter op het moment dat we dit probeerde in te laden op 1.21, kregen we allemaal errors, het formaat wordt niet meer ondersteunt. Na verschillende dingen geprobeerd te hebben om de data van 1.20 naar 1.21 te migreren hebben we uiteindelijk toch gekozen om een eigen formaat te schrijven.
Om het simpel uit te leggen, we hebben eigen objecten aangemaakt die data (armor trims en patterns, display name, lore, enchantments, armor kleur, etc.) van een item lezen en opslaan in bytes en andersom. Naast dat dit ons de optie geeft om onnodige data over te slaan, geeft het ook de mogelijkheid om makkelijk te migreren, omdat we niet meer afhankelijk zijn van het formaat van Minecraft zelf.
Na lang testen van het eigen formaat, kwam de volgende stap; de huidige data omzetten naar ons eigen formaat. Dit hebben we gedaan door een simpel versie systeem te schrijven, waarbij we kunnen kiezen met welke versie een item wordt ingeladen en opgeslagen. Waarbij in dit geval versie 1 het Minecraft formaat is en versie 2 ons eigen formaat. Het enige wat we nu nog hoefden te doen was een migratie schrijven om de huidige data met versie 1 in te laden en opnieuw op te slaan met versie 2. Voilà, alle inventories, verloren items, eiland leveringen en shop items staan nu opgeslagen in ons eigen formaat.
Dit hele stuk hebben we nog gedaan toen de server op 1.20 draaide, nu dat alle data is overgezet was het een kwestie van ons eigen formaat toepassen op 1.21. Er kwam nieuwe data bij en sommige eigen objecten moesten anders omgezet worden naar item data. Maar omdat het nu ons eigen formaat is, is het een simpele kwestie van hier en daar wat updaten en klaar.
Dit is dus ook voor in de toekomst een stuk makkelijker en hoeven we hier niet meer zoveel tijd aan te besteden (als goed is)
Al met al aardig wat aanpassingen die veel impact kunnen hebben wanneer er iets niet goed werkt, om die reden hebben we gekozen om dit als een losse update te releasen en kijken hoe het uitpakt en welke eventuele problemen er vanaf komen.
In de tussentijd konden we beginnen aan het updaten van onze eigen plugins, eerst ons utils project waarin we voor elke versie die we gebruiken op de server een module hebben zitten om NMS code (weet je niet wat dit is, zoek het even op internet) aan te roepen. Hier moesten we dus een nieuwe module voor aanmaken om support toe te voegen voor 1.21, normaal gesproken is dit niet zoveel werk, omdat er vaak niet veel wordt aangepast op een paar class (bestand) en package (map) namen. Alleen de server software die we gebruiken; Paper, heeft de keuze gemaakt om de NMS code niet meer te obfuscaten (dit houdt eigenlijk in dat een methode in de originele code bijvoorbeeld 'setName' heet, maar na het obfuscaten 'a' heet) waardoor we aardig wat methode, class namen, etc. moesten aanpassen om dit werkend te krijgen.
De tweede horde die we tegenkwamen was de hologram die we gebruikten, deze wordt niet meer onderhouden. Daarnaast gebruikte deze plugin nog armor stands voor holograms, terwijl we tegenwoordig display entities kunnen gebruiken. We hebben een eigen systeem geschreven om holograms te maken met display entities. Nu het systeem klaar was, was het een kwestie van alle holograms omzetten die we gebruiken (NPC's, shops, parkour, crates, leaderboards, etc)
Daarna kwamen we aan bij het volgende stuk: inventories, verloren items, eiland leveringen, etc; alles dat te maken heeft met items. Voorheen gebruikten we een simpele methode waarbij we de NBT van een item ophaalde en deze omzette naar bytes en in de database gooiden. Echter op het moment dat we dit probeerde in te laden op 1.21, kregen we allemaal errors, het formaat wordt niet meer ondersteunt. Na verschillende dingen geprobeerd te hebben om de data van 1.20 naar 1.21 te migreren hebben we uiteindelijk toch gekozen om een eigen formaat te schrijven.
Om het simpel uit te leggen, we hebben eigen objecten aangemaakt die data (armor trims en patterns, display name, lore, enchantments, armor kleur, etc.) van een item lezen en opslaan in bytes en andersom. Naast dat dit ons de optie geeft om onnodige data over te slaan, geeft het ook de mogelijkheid om makkelijk te migreren, omdat we niet meer afhankelijk zijn van het formaat van Minecraft zelf.
Na lang testen van het eigen formaat, kwam de volgende stap; de huidige data omzetten naar ons eigen formaat. Dit hebben we gedaan door een simpel versie systeem te schrijven, waarbij we kunnen kiezen met welke versie een item wordt ingeladen en opgeslagen. Waarbij in dit geval versie 1 het Minecraft formaat is en versie 2 ons eigen formaat. Het enige wat we nu nog hoefden te doen was een migratie schrijven om de huidige data met versie 1 in te laden en opnieuw op te slaan met versie 2. Voilà, alle inventories, verloren items, eiland leveringen en shop items staan nu opgeslagen in ons eigen formaat.
Dit hele stuk hebben we nog gedaan toen de server op 1.20 draaide, nu dat alle data is overgezet was het een kwestie van ons eigen formaat toepassen op 1.21. Er kwam nieuwe data bij en sommige eigen objecten moesten anders omgezet worden naar item data. Maar omdat het nu ons eigen formaat is, is het een simpele kwestie van hier en daar wat updaten en klaar.
Dit is dus ook voor in de toekomst een stuk makkelijker en hoeven we hier niet meer zoveel tijd aan te besteden (als goed is)
Al met al aardig wat aanpassingen die veel impact kunnen hebben wanneer er iets niet goed werkt, om die reden hebben we gekozen om dit als een losse update te releasen en kijken hoe het uitpakt en welke eventuele problemen er vanaf komen.