diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 30ae9d96e..ac7444da2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -93,7 +93,7 @@ public class BukkitChunkGeneratorWrapper extends org.bukkit.generator.ChunkGener @Override public boolean shouldGenerateDecorations() { - return false; + return true; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSBiomeInjector.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSBiomeInjector.java index 0d240007e..357c262c8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSBiomeInjector.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSBiomeInjector.java @@ -45,8 +45,8 @@ public class NMSBiomeInjector { public static IRegistryWritable getBiomeRegistry() { CraftServer craftserver = (CraftServer) Bukkit.getServer(); DedicatedServer dedicatedserver = craftserver.getServer(); - - return (IRegistryWritable) dedicatedserver + + return (IRegistryWritable) dedicatedserver .aU() // getRegistryManager .b( // getRegistry IRegistry.aP // biome registry key @@ -62,7 +62,6 @@ public class NMSBiomeInjector { Field frozen = RegistryMaterials.class.getDeclaredField("bL"); // registry frozen field frozen.setAccessible(true); frozen.set(biomeRegistry, false); - configRegistry.forEach(pack -> pack.getRegistry(Biome.class).forEach((key, biome) -> { @@ -80,7 +79,7 @@ public class NMSBiomeInjector { RegistryGeneration.a(RegistryGeneration.i, delegateKey, platform); biomeRegistry.a(delegateKey, platform, Lifecycle.stable()); platformBiome.setResourceKey(delegateKey); - + terraBiomeMap.computeIfAbsent(vanillaMinecraftKey, i -> new ArrayList<>()).add(delegateKey.a()); LOGGER.debug("Registered biome: " + delegateKey); @@ -90,7 +89,6 @@ public class NMSBiomeInjector { })); frozen.set(biomeRegistry, true); // freeze registry again :) - } catch(NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException exception) { @@ -107,43 +105,36 @@ public class NMSBiomeInjector { (map, pair) -> map.put(pair.getFirst(), new ArrayList<>(pair.getSecond().a().toList())), HashMap::putAll); - + terraBiomeMap .forEach((vb, terraBiomes) -> getEntry(biomeRegistry, vb) - .ifPresentOrElse(vanilla -> terraBiomes - .forEach(tb -> - getEntry(biomeRegistry, tb) - .ifPresentOrElse( - terra -> { - LOGGER.debug( - vanilla.e() - .orElseThrow() - .a() + - " (vanilla for " + - terra.e() - .orElseThrow() - .a() + - ": " + - vanilla.c() - .toList()); - - vanilla.c() - .forEach( - tag -> collect - .computeIfAbsent( - tag, - t -> new ArrayList<>()) - .add(terra)); - }, - () -> LOGGER.error( - "No such biome: {}", - tb))), - () -> LOGGER.error("No vanilla biome: {}", vb))); - + .ifPresentOrElse( + vanilla -> terraBiomes + .forEach(tb -> getEntry(biomeRegistry, tb) + .ifPresentOrElse( + terra -> { + LOGGER.debug(vanilla.e().orElseThrow().a() + + " (vanilla for " + + terra.e().orElseThrow().a() + + ": " + + vanilla.c().toList()); + + vanilla.c() + .forEach( + tag -> collect + .computeIfAbsent(tag, + t -> new ArrayList<>()) + .add(terra)); + }, + () -> LOGGER.error( + "No such biome: {}", + tb))), + () -> LOGGER.error("No vanilla biome: {}", vb))); + biomeRegistry.k(); // clearTags biomeRegistry.a(ImmutableMap.copyOf(collect)); // populateTags - + } public static Optional> getEntry(IRegistry registry, MinecraftKey identifier) { @@ -170,9 +161,9 @@ public class NMSBiomeInjector { BiomeSettingsGeneration.a generationBuilder = new BiomeSettingsGeneration.a(); // builder builder.a(generationBuilder.a()) - .a(vanilla.c()) - .b(vanilla.h()) // precipitation - .a(vanilla.i()); // temp + .a(vanilla.c()) + .b(vanilla.h()) // precipitation + .a(vanilla.i()); // temp BiomeFog.a effects = new BiomeFog.a(); // Builder diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java index 3ba22039a..017c97045 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java @@ -1,23 +1,13 @@ package com.dfsek.terra.bukkit.nms; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.info.WorldProperties; -import com.dfsek.terra.bukkit.world.BukkitAdapter; - -import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; - import com.mojang.serialization.Codec; import net.minecraft.core.BlockPosition; import net.minecraft.core.IRegistry; -import net.minecraft.core.IRegistryWritable; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.server.level.RegionLimitedWorldAccess; import net.minecraft.world.level.BlockColumn; -import net.minecraft.world.level.GeneratorAccessSeed; import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.StructureManager; -import net.minecraft.world.level.biome.BiomeBase; import net.minecraft.world.level.biome.BiomeManager; import net.minecraft.world.level.biome.Climate; import net.minecraft.world.level.biome.Climate.Sampler; @@ -31,7 +21,6 @@ import net.minecraft.world.level.levelgen.blending.Blender; import net.minecraft.world.level.levelgen.structure.StructureSet; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_18_R2.CraftServer; -import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; import java.util.List; @@ -39,9 +28,12 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; +import com.dfsek.terra.api.world.info.WorldProperties; + public class NMSChunkGeneratorDelegate extends ChunkGenerator { - private final NMSBiomeProvider biomeSource; private final com.dfsek.terra.api.world.chunk.generation.ChunkGenerator delegate; @@ -54,7 +46,7 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { CraftServer craftserver = (CraftServer) Bukkit.getServer(); DedicatedServer dedicatedserver = craftserver.getServer(); - return dedicatedserver + return dedicatedserver .aU() // getRegistryManager .b( // getRegistry IRegistry.aM // biome registry key @@ -94,11 +86,6 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { } - @Override - public void a(GeneratorAccessSeed gas, StructureManager manager, IChunkAccess ica) { - vanilla.a(gas, manager, ica); - } - @Override protected Codec b() { return ChunkGeneratorAbstract.a; @@ -110,7 +97,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { WorldProperties properties = new NMSWorldProperties(seed, height); BiomeProvider biomeProvider = pack.getBiomeProvider().caching(properties); for(int y = properties.getMaxHeight() - 1; y >= properties.getMinHeight(); y--) { - array[y - properties.getMinHeight()] = ((CraftBlockData) delegate.getBlock(properties, x, y, z, biomeProvider).getHandle()).getState(); + array[y - properties.getMinHeight()] = ((CraftBlockData) delegate.getBlock(properties, x, y, z, biomeProvider) + .getHandle()).getState(); } return new BlockColumn(getMinimumY(), array); }