[Fix] WorldConfig is not initialized properly on servers
This commit is contained in:
parent
a660d8ff41
commit
154e652991
2 changed files with 13 additions and 4 deletions
|
@ -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(
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue