Change world-to-folder implementation for latest forge and fabric versions

to get the correct save-folder even if the actual world-name is different
This commit is contained in:
Blue (Lukas Rieger) 2020-09-14 19:04:22 +02:00
parent 9075dc6a76
commit c677c28075
3 changed files with 6 additions and 6 deletions

View File

@ -57,6 +57,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.WorldSavePath;
import net.minecraft.world.dimension.DimensionType;
public class FabricMod implements ModInitializer, ServerInterface {
@ -161,8 +162,7 @@ public class FabricMod implements ModInitializer, ServerInterface {
private UUID loadUUIDForWorld(ServerWorld world) throws IOException {
MinecraftServer server = world.getServer();
String worldName = server.getSaveProperties().getLevelName();
File worldFolder = new File(world.getServer().getRunDirectory(), worldName);
File worldFolder = world.getServer().getRunDirectory().toPath().resolve(server.getSavePath(WorldSavePath.ROOT)).toFile();
File dimensionFolder = DimensionType.getSaveDirectory(world.getRegistryKey(), worldFolder);
File dimensionDir = dimensionFolder.getCanonicalFile();
return getUUIDForWorld(dimensionDir);

View File

@ -57,6 +57,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.WorldSavePath;
import net.minecraft.world.dimension.DimensionType;
public class FabricMod implements ModInitializer, ServerInterface {
@ -161,8 +162,7 @@ public class FabricMod implements ModInitializer, ServerInterface {
private UUID loadUUIDForWorld(ServerWorld world) throws IOException {
MinecraftServer server = world.getServer();
String worldName = server.getSaveProperties().getLevelName();
File worldFolder = new File(world.getServer().getRunDirectory(), worldName);
File worldFolder = world.getServer().getRunDirectory().toPath().resolve(server.getSavePath(WorldSavePath.ROOT)).toFile();
File dimensionFolder = DimensionType.getSaveDirectory(world.getRegistryKey(), worldFolder);
File dimensionDir = dimensionFolder.getCanonicalFile();
return getUUIDForWorld(dimensionDir);

View File

@ -53,6 +53,7 @@ import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.DimensionType;
import net.minecraft.world.server.ServerWorld;
import net.minecraft.world.storage.FolderName;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent.ServerTickEvent;
import net.minecraftforge.event.entity.player.PlayerEvent.PlayerLoggedInEvent;
@ -174,8 +175,7 @@ public class ForgeMod implements ServerInterface {
private File getFolderForWorld(ServerWorld world) throws IOException {
MinecraftServer server = world.getServer();
String worldName = server.func_240793_aU_().getWorldName();
File worldFolder = new File(world.getServer().getDataDirectory(), worldName);
File worldFolder = world.getServer().getDataDirectory().toPath().resolve(server.func_240776_a_(FolderName.field_237253_i_)).toFile();
File dimensionFolder = DimensionType.func_236031_a_(world.func_234923_W_(), worldFolder);
return dimensionFolder.getCanonicalFile();
}