Skip to content
This repository has been archived by the owner on Jul 9, 2023. It is now read-only.

Commit

Permalink
Fix #22
Browse files Browse the repository at this point in the history
  • Loading branch information
dordsor21 committed Sep 22, 2021
1 parent d2c115a commit 32c896d
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,41 @@ protected boolean initNewWorld() throws Exception {
server.dataConverterManager
);

//init world
freshNMSWorld = Fawe.get().getQueueHandler().sync((Supplier<WorldServer>) () -> new WorldServer(
server,
server.executorService,
saveHandler,
newWorldData,
originalNMSWorld.worldProvider.getDimensionManager(),
originalNMSWorld.getMethodProfiler(),
new RegenNoOpWorldLoadListener(),
env,
gen
) {
private final BiomeBase singleBiome = options.hasBiomeType() ? IRegistry.BIOME.get(MinecraftKey.a(options
.getBiomeType()
.getId())) : null;

@Override
public void doTick(BooleanSupplier booleansupplier) { //no ticking
}

@Override
public BiomeBase a(int i, int k, int j) {
if (options.hasBiomeType()) {
return singleBiome;
}
return this.getChunkProvider().getChunkGenerator().getWorldChunkManager().getBiome(i, j, k);
}
}).get();
freshNMSWorld.savingDisabled = true;
removeWorldFromWorldsMap();
newWorldData.checkName(originalNMSWorld.getWorldData().getName()); //rename to original world name
if (worldPaperConfigField != null) {
worldPaperConfigField.set(freshNMSWorld, originalNMSWorld.paperConfig);
}

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) originalChunkProvider
Expand Down Expand Up @@ -237,43 +272,9 @@ protected boolean initNewWorld() throws Exception {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (originalNMSWorld.generator != null) {
generateConcurrent = originalNMSWorld.generator.isParallelCapable();
}

//init world
freshNMSWorld = Fawe.get().getQueueHandler().sync((Supplier<WorldServer>) () -> new WorldServer(
server,
server.executorService,
saveHandler,
newWorldData,
originalNMSWorld.worldProvider.getDimensionManager(),
originalNMSWorld.getMethodProfiler(),
new RegenNoOpWorldLoadListener(),
env,
gen
) {
private final BiomeBase singleBiome = options.hasBiomeType() ? IRegistry.BIOME.get(MinecraftKey.a(options
.getBiomeType()
.getId())) : null;

@Override
public void doTick(BooleanSupplier booleansupplier) { //no ticking
}

@Override
public BiomeBase a(int i, int k, int j) {
if (options.hasBiomeType()) {
return singleBiome;
}
return this.getChunkProvider().getChunkGenerator().getWorldChunkManager().getBiome(i, j, k);
}
}).get();
freshNMSWorld.savingDisabled = true;
removeWorldFromWorldsMap();
newWorldData.checkName(originalNMSWorld.getWorldData().getName()); //rename to original world name
if (worldPaperConfigField != null) {
worldPaperConfigField.set(freshNMSWorld, originalNMSWorld.paperConfig);
if (gen != null) {
generateConcurrent = gen.isParallelCapable();
generator = new CustomChunkGenerator(freshNMSWorld, gen);
}

DefinedStructureManager tmpStructureManager = saveHandler.f();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,29 +232,6 @@ protected boolean initNewWorld() throws Exception {
);
WorldDataServer newWorldData = new WorldDataServer(newWorldSettings, newOpts, Lifecycle.stable());

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (originalNMSWorld.generator != null) {
generateConcurrent = originalNMSWorld.generator.isParallelCapable();
}

//init world
freshNMSWorld = Fawe.get().getQueueHandler().sync((Supplier<WorldServer>) () -> new WorldServer(
server,
Expand All @@ -264,7 +241,8 @@ protected boolean initNewWorld() throws Exception {
originalNMSWorld.getDimensionKey(),
originalNMSWorld.getDimensionManager(),
new RegenNoOpWorldLoadListener(),
generator,
// placeholder. Required for new ChunkProviderServer, but we create and then set it later
newOpts.d().a(worldDimKey).c(),
originalNMSWorld.isDebugWorld(),
seed,
ImmutableList.of(),
Expand Down Expand Up @@ -294,6 +272,30 @@ public BiomeBase a(int i, int j, int k) {
worldPaperConfigField.set(freshNMSWorld, originalNMSWorld.paperConfig);
}

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (gen != null) {
generator = new CustomChunkGenerator(freshNMSWorld, generator, gen);
generateConcurrent = gen.isParallelCapable();
}

freshChunkProvider = new ChunkProviderServer(
freshNMSWorld,
session,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,29 +223,6 @@ protected boolean initNewWorld() throws Exception {
);
WorldDataServer newWorldData = new WorldDataServer(newWorldSettings, newOpts, Lifecycle.stable());

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (originalNMSWorld.generator != null) {
generateConcurrent = originalNMSWorld.generator.isParallelCapable();
}

//init world
freshNMSWorld = Fawe.get().getQueueHandler().sync((Supplier<WorldServer>) () -> new WorldServer(
server,
Expand All @@ -255,7 +232,8 @@ protected boolean initNewWorld() throws Exception {
originalNMSWorld.getDimensionKey(),
originalNMSWorld.getDimensionManager(),
new RegenNoOpWorldLoadListener(),
generator,
// placeholder. Required for new ChunkProviderServer, but we create and then set it later
newOpts.d().a(worldDimKey).c(),
originalNMSWorld.isDebugWorld(),
seed,
ImmutableList.of(),
Expand Down Expand Up @@ -286,6 +264,30 @@ public BiomeBase a(int i, int j, int k) {
worldPaperConfigField.set(freshNMSWorld, originalNMSWorld.paperConfig);
}

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (gen != null) {
generator = new CustomChunkGenerator(freshNMSWorld, generator, gen);
generateConcurrent = gen.isParallelCapable();
}

freshChunkProvider = new ChunkProviderServer(
freshNMSWorld,
session,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,29 +225,6 @@ protected boolean initNewWorld() throws Exception {
);
WorldDataServer newWorldData = new WorldDataServer(newWorldSettings, newOpts, Lifecycle.stable());

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (originalNMSWorld.generator != null) {
generateConcurrent = originalNMSWorld.generator.isParallelCapable();
}

//init world
freshNMSWorld = Fawe.get().getQueueHandler().sync((Supplier<WorldServer>) () -> new WorldServer(
server,
Expand All @@ -257,7 +234,8 @@ protected boolean initNewWorld() throws Exception {
originalNMSWorld.getDimensionKey(),
originalNMSWorld.getDimensionManager(),
new RegenNoOpWorldLoadListener(),
generator,
// placeholder. Required for new ChunkProviderServer, but we create and then set it later
newOpts.d().a(worldDimKey).c(),
originalNMSWorld.isDebugWorld(),
seed,
ImmutableList.of(),
Expand Down Expand Up @@ -289,6 +267,30 @@ public BiomeBase a(int i, int j, int k) {
worldPaperConfigField.set(freshNMSWorld, originalNMSWorld.paperConfig);
}

//generator
if (originalChunkProvider.getChunkGenerator() instanceof ChunkProviderFlat) {
GeneratorSettingsFlat generatorSettingFlat = (GeneratorSettingsFlat) generatorSettingFlatField.get(
originalChunkProvider.getChunkGenerator());
generator = new ChunkProviderFlat(generatorSettingFlat);
} else if (originalChunkProvider.getChunkGenerator() instanceof ChunkGeneratorAbstract) {
Supplier<GeneratorSettingBase> generatorSettingBaseSupplier = (Supplier<GeneratorSettingBase>) generatorSettingBaseSupplierField
.get(originalChunkProvider.getChunkGenerator());
WorldChunkManager chunkManager = originalChunkProvider.getChunkGenerator().getWorldChunkManager();
if (chunkManager instanceof WorldChunkManagerOverworld) {
chunkManager = fastOverWorldChunkManager(chunkManager);
}
generator = new ChunkGeneratorAbstract(chunkManager, seed, generatorSettingBaseSupplier);
} else if (originalChunkProvider.getChunkGenerator() instanceof CustomChunkGenerator) {
generator = (ChunkGenerator) delegateField.get(originalChunkProvider.getChunkGenerator());
} else {
System.out.println("Unsupported generator type " + originalChunkProvider.getChunkGenerator().getClass().getName());
return false;
}
if (gen != null) {
generator = new CustomChunkGenerator(freshNMSWorld, generator, gen);
generateConcurrent = gen.isParallelCapable();
}

freshChunkProvider = new ChunkProviderServer(
freshNMSWorld,
session,
Expand Down

0 comments on commit 32c896d

Please sign in to comment.