ModOverworldDimension.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package me.km.world;
  2. import me.km.utils.ReflectionUtils;
  3. import net.minecraft.world.World;
  4. import net.minecraft.world.biome.provider.BiomeProviderType;
  5. import net.minecraft.world.biome.provider.OverworldBiomeProviderSettings;
  6. import net.minecraft.world.dimension.DimensionType;
  7. import net.minecraft.world.dimension.OverworldDimension;
  8. import net.minecraft.world.gen.ChunkGenerator;
  9. import net.minecraft.world.gen.ChunkGeneratorType;
  10. import net.minecraft.world.gen.GenerationSettings;
  11. import net.minecraft.world.gen.OverworldChunkGenerator;
  12. import net.minecraft.world.gen.OverworldGenSettings;
  13. import org.apache.logging.log4j.LogManager;
  14. public class ModOverworldDimension extends OverworldDimension
  15. {
  16. public ModOverworldDimension(World worldIn, DimensionType typeIn)
  17. {
  18. super(worldIn, typeIn);
  19. }
  20. @Override
  21. public ChunkGenerator<? extends GenerationSettings> createChunkGenerator()
  22. {
  23. LogManager.getLogger().warn("Try swapping " + world + " " + world.getDimension().getType());
  24. if(world.getDimension().getType().isVanilla())
  25. {
  26. LogManager.getLogger().warn("no swap in vanilla world");
  27. return super.createChunkGenerator();
  28. }
  29. ModWorldInfo info = new ModWorldInfo(world.getWorldInfo(), WorldManager.getName(world), world.getServer());
  30. ReflectionUtils.setWorldInfo(world, info);
  31. ModWorldInfo.Type type = info.getType();
  32. if(type != ModWorldInfo.Type.VOID && type != ModWorldInfo.Type.VANILLA)
  33. {
  34. ChunkGeneratorType<OverworldGenSettings, OverworldChunkGenerator> chunkGenType = ChunkGeneratorType.SURFACE;
  35. BiomeProviderType<OverworldBiomeProviderSettings, ModBiomeProvider> provider = info.getType().getProvider();
  36. OverworldGenSettings genSettings = chunkGenType.createSettings();
  37. OverworldBiomeProviderSettings providerSettings = provider.func_226840_a_(this.world.getWorldInfo()).setGeneratorSettings(genSettings);
  38. return chunkGenType.create(this.world, provider.create(providerSettings), genSettings);
  39. }
  40. return super.createChunkGenerator();
  41. }
  42. }