Start fixer before the world is loaded (otherwise no changes to level.dat are possible)
This commit is contained in:
parent
9e42fe7294
commit
89d548caf9
1 changed files with 13 additions and 11 deletions
|
@ -32,8 +32,19 @@ public abstract class ServerLevelMixin extends Level {
|
||||||
protected ServerLevelMixin(WritableLevelData writableLevelData, ResourceKey<Level> resourceKey, DimensionType dimensionType, Supplier<ProfilerFiller> supplier, boolean bl, boolean bl2, long l) {
|
protected ServerLevelMixin(WritableLevelData writableLevelData, ResourceKey<Level> resourceKey, DimensionType dimensionType, Supplier<ProfilerFiller> supplier, boolean bl, boolean bl2, long l) {
|
||||||
super(writableLevelData, resourceKey, dimensionType, supplier, bl, bl2, l);
|
super(writableLevelData, resourceKey, dimensionType, supplier, bl, bl2, l);
|
||||||
}
|
}
|
||||||
|
@Inject(method = "<init>*", at = @At("HEAD"))
|
||||||
@Inject(method = "<init>*", at = @At("TAIL"))
|
private void bclib_onServerWorldInitStart(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) {
|
||||||
|
ServerLevel world = ServerLevel.class.cast(this);
|
||||||
|
File dir = session.getDimensionPath(world.dimension());
|
||||||
|
if (!new File(dir, "level.dat").exists()) {
|
||||||
|
dir = dir.getParentFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldDataAPI.load(new File(dir, "data"));
|
||||||
|
DataFixerAPI.fixData(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "<init>*", at = @At("TAIL"))
|
||||||
private void bclib_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) {
|
private void bclib_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) {
|
||||||
BiomeAPI.initRegistry(server);
|
BiomeAPI.initRegistry(server);
|
||||||
|
|
||||||
|
@ -42,14 +53,5 @@ public abstract class ServerLevelMixin extends Level {
|
||||||
}
|
}
|
||||||
|
|
||||||
bclib_lastWorld = session.getLevelId();
|
bclib_lastWorld = session.getLevelId();
|
||||||
|
|
||||||
ServerLevel world = ServerLevel.class.cast(this);
|
|
||||||
File dir = session.getDimensionPath(world.dimension());
|
|
||||||
if (!new File(dir, "level.dat").exists()) {
|
|
||||||
dir = dir.getParentFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
WorldDataAPI.load(new File(dir, "data"));
|
|
||||||
DataFixerAPI.fixData(dir);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue