--- a/net/minecraft/world/level/storage/Convertable.java +++ b/net/minecraft/world/level/storage/Convertable.java @@ -61,6 +61,10 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +// CraftBukkit start +import net.minecraft.world.level.dimension.WorldDimension; +// CraftBukkit end + public class Convertable { static final Logger LOGGER = LogManager.getLogger(); @@ -106,26 +110,26 @@ Logger logger = Convertable.LOGGER; Objects.requireNonNull(logger); - return Pair.of((GeneratorSettings) dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", logger::error)).orElseGet(() -> { + return Pair.of(dataresult.resultOrPartial(SystemUtils.a("WorldGenSettings: ", (java.util.function.Consumer) logger::error)).orElseGet(() -> { // CraftBukkit - decompile error DataResult dataresult1 = RegistryLookupCodec.a(IRegistry.DIMENSION_TYPE_REGISTRY).codec().parse(dynamic2); Logger logger1 = Convertable.LOGGER; Objects.requireNonNull(logger1); - IRegistry iregistry = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Dimension type registry: ", logger1::error)).orElseThrow(() -> { + IRegistry iregistry = (IRegistry) ((DataResult>) dataresult1).resultOrPartial(SystemUtils.a("Dimension type registry: ", (java.util.function.Consumer) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error return new IllegalStateException("Failed to get dimension registry"); }); dataresult1 = RegistryLookupCodec.a(IRegistry.BIOME_REGISTRY).codec().parse(dynamic2); logger1 = Convertable.LOGGER; Objects.requireNonNull(logger1); - IRegistry iregistry1 = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Biome registry: ", logger1::error)).orElseThrow(() -> { + IRegistry iregistry1 = (IRegistry) ((DataResult>) dataresult1).resultOrPartial(SystemUtils.a("Biome registry: ", (java.util.function.Consumer) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error return new IllegalStateException("Failed to get biome registry"); }); dataresult1 = RegistryLookupCodec.a(IRegistry.NOISE_GENERATOR_SETTINGS_REGISTRY).codec().parse(dynamic2); logger1 = Convertable.LOGGER; Objects.requireNonNull(logger1); - IRegistry iregistry2 = (IRegistry) dataresult1.resultOrPartial(SystemUtils.a("Noise settings registry: ", logger1::error)).orElseThrow(() -> { + IRegistry iregistry2 = (IRegistry) ((DataResult>) dataresult1).resultOrPartial(SystemUtils.a("Noise settings registry: ", (java.util.function.Consumer) logger1::error)).orElseThrow(() -> { // CraftBukkit - decompile error return new IllegalStateException("Failed to get noise settings registry"); }); @@ -302,9 +306,23 @@ return this.backupDir; } - public Convertable.ConversionSession c(String s) throws IOException { - return new Convertable.ConversionSession(s); + // CraftBukkit start + public Convertable.ConversionSession c(String s, ResourceKey dimensionType) throws IOException { + return new Convertable.ConversionSession(s, dimensionType); + } + + public static File getFolder(File file, ResourceKey dimensionType) { + if (dimensionType == WorldDimension.OVERWORLD) { + return file; + } else if (dimensionType == WorldDimension.NETHER) { + return new File(file, "DIM-1"); + } else if (dimensionType == WorldDimension.END) { + return new File(file, "DIM1"); + } else { + return new File(file, "dimensions/" + dimensionType.a().getNamespace() + "/" + dimensionType.a().getKey()); + } } + // CraftBukkit end public class ConversionSession implements AutoCloseable { @@ -312,8 +330,12 @@ public final Path levelPath; private final String levelId; private final Map resources = Maps.newHashMap(); + // CraftBukkit start + private final ResourceKey dimensionType; - public ConversionSession(String s) throws IOException { + public ConversionSession(String s, ResourceKey dimensionType) throws IOException { + this.dimensionType = dimensionType; + // CraftBukkit end this.levelId = s; this.levelPath = Convertable.this.baseDir.resolve(s); this.lock = SessionLock.a(this.levelPath); @@ -330,7 +352,7 @@ } public File a(ResourceKey resourcekey) { - return DimensionManager.a(resourcekey, this.levelPath.toFile()); + return getFolder(this.levelPath.toFile(), this.dimensionType); // CraftBukkit } private void checkSession() {