Skip to content

Stable 1.21.4 and API 4.0 release#158

Merged
b0ykoe merged 135 commits intomainfrom
develop
Apr 20, 2025
Merged

Stable 1.21.4 and API 4.0 release#158
b0ykoe merged 135 commits intomainfrom
develop

Conversation

@davidmayr
Copy link
Member

This PR includes all changes from #154 alongside the following updates and fixes:

  • Reintroduction of the old slime formats
  • Fixed world importing of < 1.18 worlds
  • A breaking API fix: Worlds cloned from read-only worlds were always read-only, even if a loader was provided. This has been fixed and mentioned in the API docs.
  • A experimental custom Slime Serialization API based on Expose APIs for manual serialization/deserialization #80
  • Make skeleton cloning a bit more efficient by not cloning immutable objects (55609f3)
  • A fix for importing vanilla world entities
  • A few other smaller fixes

The changes compile correctly and seem to be stable. Critical changes (Cloning efficiency improvements, the breaking API fix and the serialization API) have been made as recently as today so they have not been tested in the community yet, however they seem to work fine from my own testing.

kyngs and others added 30 commits August 11, 2024 22:52
Automatically updated to Paper commit: a8cb8e6745dab32139d954d732a3423a454545ab
[ci skip] Fix JavaDocs for HeightMap#MOTION_BLOCKING_NO_LEAVES (#11291)

Automatically updated to Paper commit: ba1b0162faaa7bf78d33162f6976586bb3049275
Allow server administrators to disable book size checks (#10457)

Automatically updated to Paper commit: dae906ba452e4a17779aa6438ccd6deb42d7f0df
Add getWorld method that uses adventure Key (#11199)

Automatically updated to Paper commit: 8fd3a67138b5d7a3a21e059eb3c3b766ffdfc281
[ci skip] Clean up book limits patch (#11297)

Automatically updated to Paper commit: be1078f5f2e28c1a1de99e9c96e4003c3f96f6e8
Use player file, not directory, when checking for offline player data

When trying to fall back to offline player data in onlide mode,
we need to use the player file. This fixes a mistake during
update where 'file' was used, but the new code uses 'file1'
for the player file.

Automatically updated to Paper commit: b4bc512cac4d75f9e366479c5d8fdcf4275c85ce
Fix entity limit patch deleting unnecessary entities

We need to continue the save loop, not break from it
when a limit is reached.

Automatically updated to Paper commit: 64c9ee6584ce15e5b486bdc7183fe902e22fddf3
Allow getting/setting the sign's editor uuid (#10637)

* Allow getting/setting the sign's editor uuid

* rebased

---------

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>

Automatically updated to Paper commit: 44017487a81534067fd17e2d5e8669e61e19d719
Fix CraftBukkit drag system (#10703)

Automatically updated to Paper commit: 8c3018a4b177aa0f7658d510bf7d19c5fa8e5b65
Fix Selector Arguments not working with permission (#11286)

Automatically updated to Paper commit: 57dd822393df78a4cb47f7a2c2d037dc2a77d5bd
Leashable API (#10961)

Automatically updated to Paper commit: 2e82fd2d2c1881665e27654977390fa48f5ec346
Add even more Enchantment API (#11115)

Automatically updated to Paper commit: 66a97cc929740475bc8dd192382c4ae59fdeace9
Update item data sanitization (#11227)

Automatically updated to Paper commit: 0e7361704a16c8386d829c26603f3e5c0bf72b39
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#11284)

Updated Upstream (Bukkit/CraftBukkit/Spigot)

Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
4068c6aa PR-1053: Change docs for max power in FireworkMeta
6b3c241b SPIGOT-7783, SPIGOT-7784, PR-1051: Add Trial Vault & Spawner event API
5fe300ec PR-1052: Fix broken links and minor improvement for checkstyle.xml

CraftBukkit Changes:
7548afcf2 SPIGOT-7872: Fix crash with event-modified teleports
93480d5d6 SPIGOT-7868, PR-1463: Fix default and max power in FireworkMeta
5060d1a84 SPIGOT-7783, SPIGOT-7784, PR-1460: Add Trial Vault & Spawner event API
11dfcae71 PR-1462: Fix broken links and minor improvement for checkstyle.xml

Spigot Changes:
ca581228 Rebuild patches

Automatically updated to Paper commit: 75655ec1d34f344c7b0ba9f31f2ada87951d277d
Add Configuration for vertical Despawn Ranges (#11279)

Automatically updated to Paper commit: 52ae4ad4666b34d637f2de573ed03c02b0fc6a24
Migrate ArmorStand meta to using entity tag (#11107)

Automatically updated to Paper commit: d5ffc573dc17092ea2cfdd4ce14dac3e70b932f5
Implement more methods for horse inventories (#11147)

Automatically updated to Paper commit: 4829fbf6bd51e2dc86e2f190971c081aac76a201
Handle custom registry elements properly (#11230)

* Handle custom registry elements properly

* update error message

Datapack made painting variant support is added in PaperMC/Paper#11244

* change msg for art conversion

---------

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>

Automatically updated to Paper commit: 78216fef26e454c78dff5e495f6ebe673be56900
Re-implement portalCreateRadius world config (#11267)

Automatically updated to Paper commit: e619744fbdc4963eed0b04c1e44bd1089ce50285
Allow skipping of world symlink validation (#11250)

Automatically updated to Paper commit: 534ab86010330ce3afa732910227585d0dc02d1e
[ci-skip] Revert "Add Configuration for vertical Despawn Ranges (#10440)" (#11278)

This reverts commit 1b8ab116edd5da15791de96aa462db90756848dc.

Automatically updated to Paper commit: 1b8ab116edd5da15791de96aa462db90756848dc
Add Configuration for vertical Despawn Ranges (#10440)

Automatically updated to Paper commit: ec55c11fc074929e4aa1a1ecdaef51da69dbf0be
Fix indestructable light blocks (#11275)

Co-authored-by: Bjarne Koll <lynxplay101@gmail.com>

Automatically updated to Paper commit: 95719832bf57ae523982d681cd219e8387c39955
Fix scanForLegacyEnderDragon world config (#11262)

Automatically updated to Paper commit: 81bfda87103e1a47ea184c5da119e79218a8dc1e
[ci skip] Specify rebase location in CONTRIBUTING (#11255)

* [ci skip] Specify rebase location in CONTRIBUTING

* Improve

* remove Paper-MojangAPI mention

---------

Co-authored-by: Bjarne Koll <lynxplay101@gmail.com>
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>

Automatically updated to Paper commit: fb530743e5c71cb4faba06339bdeb14a33e06a6a
Apply optimise collision checking in move packet handling patch

Automatically updated to Paper commit: bf5852a6151aa643b87bd0e0f9e3940f867064a3
Fix NPE for PlayerPostRespawnEvent#getRespawnedLocation (#11268)

Automatically updated to Paper commit: 11b4ac7c659ffb7e4790b0856b14117b6d532200
Fix disableEndCredits world config (#11261)

Automatically updated to Paper commit: 9ab644ed290542a9e537d8f529bc6898a3da2e7d
Fix `TooltipContext.create` being wrong(#11254)

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>

Automatically updated to Paper commit: 7c9240f4a63b13be1fdcedbfb0270f9b49b75518
Improve standard messenger logging

Automatically updated to Paper commit: 1798e949e5727f376ccaee51873f21dcdedc9a5f
Fix BasicCommand suggestion arg count (#11241)

Automatically updated to Paper commit: 4a97ba3ea8cb449fe76ed1aef0b572e7cc01d542
Fix `setSendViewDistance`'s return (#11247)

Automatically updated to Paper commit: f97aff74b6f7fd4940c0c0b6cca3f8ac6e1afdef
[ci skip] Fix Effect javadocs (#11182)

Automatically updated to Paper commit: 098bd39092f50cb97a604c2f228f2af29666ca41
Remove arbitrary book page limit (#11228)

Automatically updated to Paper commit: ab0d24aa6f22308352eb363b09c992fc70de4143
Configuration for horizontal-only item merging (#11219)
Please enter the commit message for your changes. Lines starting
Paperweight 1.7.7 -> 1.7.5
gradlew 8.11.1 -> 8.10.1
- API/Core: FlowNBT -> AdventureNBT
- Add slime property support for all NBT types
- Start switch to java.nio, legacy support for java.io
- Refactoring for future deprecation and cleanup
Removes SRF < v12 support
This is to be re-added later once cleaned up and restructured
davidmayr and others added 23 commits March 15, 2025 16:58
…mp dir

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
The package name has been changed by ComputerNerd
The NBT library has been changed by ComputerNerd
Updated to the newest paper and updated all patches
Unused events and exceptions have been removed from the API
Loaders have been separated into different modules. The loader package continues to exist as a BOM package of the default loaders included in the plugin.
Delete the temporary storage access temp directory after the world unloads
Don't write/read dimension data (raids, random_sequences, ...) to/from disk
Don't write region files in specific scenarios to disk
Utilize access transformers instead of patches
Use a custom world config for all slime worlds, and don't read/write to disk on world load. Fixes Performance improvement for loading worlds #110 and replaces Don't create a new config for each slime world #122
Fix issue SlimeWorld read-only status always true when importing vanilla world #152
Return SlimeWorldInstance in API to make it easier to get the bukkit world after loading a world
Delete NMSSlimeWorld, as it was unnecessary and had wierd behaviour (explained below)
Fix a chunk pruner issue introduced by ComputerNerd in his initial 1.21.4 work
Replace entity loading code with the vanilla PostLoadProcessor, so this burden is no longer on us
Generate World UUIDs randomly instead of trying to read a file that's 100% nonexistent
Properly log if there are exceptions in async save (that are not IO related)
Fix a SlimeProperty issue that ComputerNerd introduced in his initial 1.21.4 work
Fix biome slime property
Fix poi warnings
Don't place chunks in the chunkstorage prematurely
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
…ve defaults anyway)

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
I needed to remove the java platform as it collided with the java plugin

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David <davidliebtkekse@gmail.com>
Signed-off-by: David <davidliebtkekse@gmail.com>
Signed-off-by: David <davidliebtkekse@gmail.com>
Signed-off-by: David <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

# Conflicts:
#	build.gradle.kts
#	gradle.properties
#	gradle/wrapper/gradle-wrapper.properties
#	gradlew
#	importer/build.gradle.kts
#	patches/api/0001-Slime-World-Manager.patch
#	patches/server/0001-Build-Changes.patch
#	patches/server/0002-poi-data-loader.patch
#	patches/server/0004-Fix-entity-loading.patch
#	patches/server/0012-Compile-fixes.patch
#	patches/server/0013-Separate-plugin-and-server-rework-API-to-v3.patch
#	patches/server/0015-1.21-compatibility.patch
#	plugin/build.gradle.kts
…#80

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
…the parent world is readOnly

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
…02a6b3098)

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
@davidmayr davidmayr requested a review from Copilot April 20, 2025 16:24
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request marks the Stable 1.21.4 and API 4.0 release by reintroducing legacy slime formats, fixing world importing for versions prior to 1.18, and addressing a breaking API bug along with several other fixes and improvements. Key changes include:

  • Migrating package names and NBT types from FlowPowered to Adventure’s API.
  • Introducing a new SlimeSerializationAdapter and SlimeDataConverter to support experimental serialization APIs.
  • Enhancing cloning efficiency and refining world loading semantics via updated method signatures.

Reviewed Changes

Copilot reviewed 239 out of 240 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
api/src/main/java/com/infernalsuite/asp/api/world/SlimeChunk.java Package update and type migration from CompoundTag to CompoundBinaryTag/Map with accompanying javadoc adjustments.
api/src/main/java/com/infernalsuite/asp/api/utils/SlimeFormat.java Package update.
api/src/main/java/com/infernalsuite/asp/api/utils/NibbleArray.java Package update.
api/src/main/java/com/infernalsuite/asp/api/loaders/UpdatableLoader.java Addition of a new abstract loader with an update method and custom exception.
api/src/main/java/com/infernalsuite/asp/api/loaders/SlimeSerializationAdapter.java New interface for experimental serialization.
api/src/main/java/com/infernalsuite/asp/api/loaders/SlimeLoader.java Package update.
(Various exception files) Package updates and minor adjustments to exception implementations.
api/src/main/java/com/infernalsuite/asp/api/events/LoadSlimeWorldEvent.java Changed to use SlimeWorldInstance for clarity in event handling.
api/src/main/java/com/infernalsuite/asp/api/SlimeNMSBridge.java Package update and method signature changes to utilize Adventure’s NBT API.
api/src/main/java/com/infernalsuite/asp/api/SlimeDataConverter.java New interface to facilitate the conversion of chunk, entity, and block palette data.
api/src/main/java/com/infernalsuite/asp/api/AdvancedSlimePaperAPI.java Updated method signatures for world loading and serialization, along with revised exception handling.
README.md Removed outdated Flow-NBT repository instruction.
Files not reviewed (1)
  • api/build.gradle.kts: Language not supported
Comments suppressed due to low confidence (1)

api/src/main/java/com/infernalsuite/asp/api/AdvancedSlimePaperAPI.java:55

  • [nitpick] Consider clarifying in the documentation the relationship between SlimeWorld and SlimeWorldInstance, as the API now accepts a SlimeWorld but returns a SlimeWorldInstance. This could help users understand the intended use and conversion between the two types.
SlimeWorldInstance getLoadedWorld(String worldName);

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
@davidmayr davidmayr mentioned this pull request Apr 20, 2025
2 tasks
@AverageGithub AverageGithub self-requested a review April 20, 2025 17:58
@b0ykoe b0ykoe merged commit 8e10c97 into main Apr 20, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.