[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.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldDimensions; import net.minecraft.world.level.levelgen.WorldDimensions;
import net.minecraft.world.level.levelgen.presets.WorldPreset; import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.storage.LevelResource;
import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelStorageSource;
import java.nio.file.Path;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ -66,7 +68,9 @@ public class LevelGenEvents {
LevelStorageSource.LevelStorageAccess storageAccess, LevelStorageSource.LevelStorageAccess storageAccess,
Consumer<Boolean> allDone 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( private static Optional<Holder<WorldPreset>> adaptWorldPreset(

View file

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