ModBiomeProvider.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package me.km.world;
  2. import java.util.Set;
  3. import net.minecraft.util.registry.Registry;
  4. import net.minecraft.world.biome.Biome;
  5. import net.minecraft.world.biome.provider.BiomeProvider;
  6. import net.minecraft.world.biome.provider.OverworldBiomeProviderSettings;
  7. import net.minecraft.world.gen.layer.Layer;
  8. import net.minecraft.world.gen.layer.LayerUtil;
  9. public class ModBiomeProvider extends BiomeProvider {
  10. private final Layer genBiomes;
  11. private final Biome[] biomeArray;
  12. public ModBiomeProvider(Set<Biome> biomes, OverworldBiomeProviderSettings settingsProvider) {
  13. super(biomes);
  14. biomeArray = biomes.toArray(new Biome[biomes.size()]);
  15. this.genBiomes = LayerUtil.func_227474_a_(settingsProvider.getSeed(), settingsProvider.getWorldType(), settingsProvider.getGeneratorSettings());
  16. }
  17. @Override
  18. public Biome getNoiseBiome(int x, int y, int z) {
  19. Biome vanillaBiome = genBiomes.func_215738_a(x, z);
  20. float min = Float.MAX_VALUE;
  21. float min2 = Float.MAX_VALUE;
  22. Biome minBiome = null;
  23. Biome minBiome2 = null;
  24. for(Biome b : biomeArray) {
  25. float distance = Math.abs(b.getDepth() - vanillaBiome.getDepth());
  26. if(distance < min) {
  27. min2 = min;
  28. minBiome2 = minBiome;
  29. min = distance;
  30. minBiome = b;
  31. } else if(distance < min2) {
  32. min2 = distance;
  33. minBiome2 = b;
  34. }
  35. }
  36. if((Registry.BIOME.getId(vanillaBiome) % 2) == 1) {
  37. return minBiome;
  38. }
  39. return minBiome2;
  40. }
  41. }