[Fix] WorldConfig is not initialized properly on servers

This commit is contained in:
Frank 2023-01-05 12:23:40 +01:00
parent a660d8ff41
commit 154e652991
2 changed files with 13 additions and 4 deletions

View file

@ -24,8 +24,10 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldDimensions;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.storage.LevelResource;
import net.minecraft.world.level.storage.LevelStorageSource;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@ -66,7 +68,9 @@ public class LevelGenEvents {
LevelStorageSource.LevelStorageAccess storageAccess,
Consumer<Boolean> allDone
) {
return DataFixerAPI.fixData(storageAccess, allDone != null, allDone);
final Path dataPath = storageAccess.getLevelPath(LevelResource.ROOT).resolve("data");
WorldConfig.setDataDir(dataPath.toFile());
return DataFixerAPI.fixData(storageAccess, allDone != null && BCLib.isClient(), allDone);
}
private static Optional<Holder<WorldPreset>> adaptWorldPreset(

View file

@ -19,6 +19,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.jetbrains.annotations.ApiStatus;
/**
* Mod-specifix data-storage for a world.
@ -35,8 +36,13 @@ public class WorldConfig {
private static final String TAG_MODIFIED = "modify_version";
private static File dataDir;
public static void load(File dataDir) {
@ApiStatus.Internal
public static void setDataDir(File dataDir) {
WorldConfig.dataDir = dataDir;
}
public static void load(File dataDir) {
WorldConfig.setDataDir(dataDir);
MODS.stream()
.parallel()
.forEach(modID -> {
@ -125,9 +131,8 @@ public class WorldConfig {
* @param modID {@link String} mod ID.
*/
public static void saveFile(String modID) {
try {
if (!dataDir.exists()) {
if (dataDir != null && !dataDir.exists()) {
dataDir.mkdirs();
}
CompoundTag tag = getRootTag(modID);