diff --git a/src/main/java/org/betterx/bclib/config/Configs.java b/src/main/java/org/betterx/bclib/config/Configs.java index 913a7437..15987d44 100644 --- a/src/main/java/org/betterx/bclib/config/Configs.java +++ b/src/main/java/org/betterx/bclib/config/Configs.java @@ -1,12 +1,9 @@ package org.betterx.bclib.config; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - public class Configs { // Client and Server-Config must be the first entries. They are not part of the Auto-Sync process // But will be needed by other Auto-Sync Config-Files - @Environment(EnvType.CLIENT) + //@Environment(EnvType.CLIENT) public static final ClientConfig CLIENT_CONFIG = new ClientConfig(); public static final ServerConfig SERVER_CONFIG = new ServerConfig(); diff --git a/src/main/java/org/betterx/worlds/together/mixin/common/MainMixin.java b/src/main/java/org/betterx/worlds/together/mixin/common/MainMixin.java index 7572af23..d8b99fba 100644 --- a/src/main/java/org/betterx/worlds/together/mixin/common/MainMixin.java +++ b/src/main/java/org/betterx/worlds/together/mixin/common/MainMixin.java @@ -7,21 +7,23 @@ import net.minecraft.server.Main; import net.minecraft.world.level.storage.LevelStorageSource; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(value = Main.class, priority = 200) abstract public class MainMixin { + @Unique private static LevelStorageSource.LevelStorageAccess bcl_levelStorageAccess = null; - @ModifyVariable(method = "main", ordinal = 0, at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;getSummary()Lnet/minecraft/world/level/storage/LevelSummary;")) + @ModifyVariable(method = "main", ordinal = 0, at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;getDataTag()Lcom/mojang/serialization/Dynamic;")) private static LevelStorageSource.LevelStorageAccess bc_createAccess(LevelStorageSource.LevelStorageAccess levelStorageAccess) { bcl_levelStorageAccess = levelStorageAccess; WorldBootstrap.DedicatedServer.applyWorldPatches(levelStorageAccess); return levelStorageAccess; } - + @ModifyArg(method = "main", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;saveDataTag(Lnet/minecraft/core/RegistryAccess;Lnet/minecraft/world/level/storage/WorldData;)V")) private static RegistryAccess bcl_onCreate(RegistryAccess registryAccess) { WorldBootstrap.DedicatedServer.registryReady(registryAccess); diff --git a/src/main/java/org/betterx/worlds/together/world/event/WorldBootstrap.java b/src/main/java/org/betterx/worlds/together/world/event/WorldBootstrap.java index 8d0b3e44..c052c75c 100644 --- a/src/main/java/org/betterx/worlds/together/world/event/WorldBootstrap.java +++ b/src/main/java/org/betterx/worlds/together/world/event/WorldBootstrap.java @@ -114,25 +114,27 @@ public class WorldBootstrap { } public static void setupWorld(LevelStorageSource.LevelStorageAccess levelStorageAccess) { - File levelDat = levelStorageAccess.getLevelPath(LevelResource.LEVEL_DATA_FILE).toFile(); - if (!levelDat.exists()) { - WorldsTogether.LOGGER.info("Creating a new World, no fixes needed"); - final WorldDimensions dimensions = Helpers.defaultServerDimensions(); + if (levelStorageAccess != null && levelStorageAccess.hasWorldData()) { + File levelDat = levelStorageAccess.getLevelPath(LevelResource.LEVEL_DATA_FILE).toFile(); + if (!levelDat.exists()) { + WorldsTogether.LOGGER.info("Creating a new World, no fixes needed"); + final WorldDimensions dimensions = Helpers.defaultServerDimensions(); - WorldBootstrap.setupWorld( - levelStorageAccess, TogetherWorldPreset.getDimensionMap(dimensions), - true, true - ); + WorldBootstrap.setupWorld( + levelStorageAccess, TogetherWorldPreset.getDimensionMap(dimensions), + true, true + ); - Holder currentPreset = Helpers.defaultServerPreset(); - writeWorldPresets(dimensions, currentPreset); - finishedWorldLoad(); - } else { - WorldBootstrap.setupWorld( - levelStorageAccess, TogetherWorldPreset.loadWorldDimensions(), - false, true - ); - finishedWorldLoad(); + Holder currentPreset = Helpers.defaultServerPreset(); + writeWorldPresets(dimensions, currentPreset); + finishedWorldLoad(); + } else { + WorldBootstrap.setupWorld( + levelStorageAccess, TogetherWorldPreset.loadWorldDimensions(), + false, true + ); + finishedWorldLoad(); + } } }