ModOverworldDimension.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. public ModOverworldDimension(World worldIn, DimensionType typeIn) {
  16. super(worldIn, typeIn);
  17. }
  18. @Override
  19. public ChunkGenerator<? extends GenerationSettings> createChunkGenerator() {
  20. LogManager.getLogger().warn("Try swapping " + world + " " + world.getDimension().getType());
  21. if(world.getDimension().getType().isVanilla()) {
  22. LogManager.getLogger().warn("no swap in vanilla world");
  23. return super.createChunkGenerator();
  24. }
  25. ModWorldInfo info = new ModWorldInfo(world.getWorldInfo(), WorldManager.getName(world), world.getServer());
  26. ReflectionUtils.setWorldInfo(world, info);
  27. ModWorldInfo.Type type = info.getType();
  28. if(type != ModWorldInfo.Type.VOID && type != ModWorldInfo.Type.VANILLA) {
  29. ChunkGeneratorType<OverworldGenSettings, OverworldChunkGenerator> chunkGenType = ChunkGeneratorType.SURFACE;
  30. BiomeProviderType<OverworldBiomeProviderSettings, ModBiomeProvider> provider = info.getType().getProvider();
  31. OverworldGenSettings genSettings = chunkGenType.createSettings();
  32. OverworldBiomeProviderSettings providerSettings = provider.createSettings(this.world.getWorldInfo()).setGeneratorSettings(genSettings);
  33. return chunkGenType.create(this.world, provider.create(providerSettings), genSettings);
  34. }
  35. return super.createChunkGenerator();
  36. }
  37. @Override
  38. public boolean isDaytime() {
  39. return getWorld().getSkylightSubtracted() < 4;
  40. }
  41. }