ModBiomeProvider.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. {
  11. private final Layer genBiomes;
  12. private final Biome[] biomeArray;
  13. public ModBiomeProvider(Set<Biome> biomes, OverworldBiomeProviderSettings settingsProvider)
  14. {
  15. super(biomes);
  16. biomeArray = biomes.toArray(new Biome[biomes.size()]);
  17. this.genBiomes = LayerUtil.func_227474_a_(settingsProvider.func_226850_a_(), settingsProvider.func_226851_b_(), settingsProvider.getGeneratorSettings());
  18. }
  19. @Override
  20. public Biome getNoiseBiome(int x, int y, int z)
  21. {
  22. Biome vanillaBiome = genBiomes.func_215738_a(x, z);
  23. float min = Float.MAX_VALUE;
  24. float min2 = Float.MAX_VALUE;
  25. Biome minBiome = null;
  26. Biome minBiome2 = null;
  27. for(Biome b : biomeArray)
  28. {
  29. float distance = Math.abs(b.getDepth() - vanillaBiome.getDepth());
  30. if(distance < min)
  31. {
  32. min2 = min;
  33. minBiome2 = minBiome;
  34. min = distance;
  35. minBiome = b;
  36. }
  37. else if(distance < min2)
  38. {
  39. min2 = distance;
  40. minBiome2 = b;
  41. }
  42. }
  43. if((Registry.BIOME.getId(vanillaBiome) % 2) == 1)
  44. {
  45. return minBiome;
  46. }
  47. return minBiome2;
  48. }
  49. }