Change world storage layout to be closer to vanilla & implement migration#13736
Change world storage layout to be closer to vanilla & implement migration#13736
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
|
@Doc94 should be fixed now |
|
Last updated for: 2024b0def3ce7914763b51e7ac3e66e24bf9562f. Download the Paperclip jar for this pull request: paper-13736.zip Maven PublicationThe artifacts published by this PR:Repository DeclarationIn order to use the artifacts published by the PR, add the following repository to your buildscript: repositories {
maven("https://maven-prs.papermc.io/Paper/pr13736") {
name = "Maven for PR #13736" // https://github.com/PaperMC/Paper/pull/13736
mavenContent {
includeModule("io.papermc.paper", "dev-bundle")
includeModule("io.papermc.paper", "paper-api")
}
}
} |
|
Seems like converter fails with symlinked files. Perhaps a vanilla bug? # bukkit.yml
settings:
world-container: worlds# worlds/allowed_symlinks.txt
[regex].* |
This comment was marked as resolved.
This comment was marked as resolved.
Not a bug, intentional vanilla bailout. Moving file structures around with symlinks involved is generally a good way to break stuff, given their often relative nature. You can't just safely move those around without an entire list of considerations which they, and more than likely us, would not want to deal with |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
@Doc94 @benwoo1110 |
|
@Bobcat00 Yes it's expected for those directories to be created by the vanilla logic before our migration runs. But it's not expected for the restart to attempt migrating them. Should be fixed now. A remaining edge case is you will get the harmless delay & no-op migration if you migrate a world with end/nether disabled from an old version, and then later enable them. |
|
@jpenilla thanks for the quick update! I have tested and confirmed that the latest commits fixed the issues I raised! Adding on to the updated world folder return, I am thinking Bukkit#getWorldContainer() should also be updated to |
…olete The concept still exists, we do not need to deprecate it. But it's no longer useful now that all worlds are in the same level directory.
|
@tehbeard |

This moves world storage to use a modified vanilla layout instead of continuing to carry forward legacy CraftBukkit baggage.
<level name>/dimensions/<location>i.e.world/dimensions/minecraft/overworldlike vanilla.paper-world.ymlnow goes in that directorydatapath instead of each world having a seconddatain it's split root directory.--forceUpgrade/ recreate-region-files are not wired up for this layout yet, so they are explicitly disabledThis also adds migration support for both:
Migration has been tested in a local matrix including Paper, Vanilla, Datapack, and API source data from multiple versions with custom level names and world containers.