diff --git a/src/main/java/org/dimdev/dimdoors/DimensionalDoorsInitializer.java b/src/main/java/org/dimdev/dimdoors/DimensionalDoorsInitializer.java index 33f9b3f7..a3706449 100644 --- a/src/main/java/org/dimdev/dimdoors/DimensionalDoorsInitializer.java +++ b/src/main/java/org/dimdev/dimdoors/DimensionalDoorsInitializer.java @@ -11,6 +11,7 @@ import org.dimdev.dimdoors.sound.ModSoundEvents; import org.dimdev.dimdoors.world.ModBiomes; import org.dimdev.dimdoors.world.ModDimensions; import org.dimdev.dimdoors.world.feature.ModFeatures; +import org.jetbrains.annotations.NotNull; import net.minecraft.server.MinecraftServer; import net.minecraft.server.world.ServerWorld; @@ -22,13 +23,16 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; public class DimensionalDoorsInitializer implements ModInitializer { - public static final Identifier MONOLITH_PARTICLE_PACKET = new Identifier("dimdoors", "monolith_particle_packet"); private static MinecraftServer server; + @NotNull public static MinecraftServer getServer() { - return server; + if (server != null) { + return server; + } + throw new IllegalStateException("Accessed server too early!"); } public static ServerWorld getWorld(RegistryKey key) { @@ -37,7 +41,7 @@ public class DimensionalDoorsInitializer implements ModInitializer { @Override public void onInitialize() { - ServerLifecycleEvents.SERVER_STARTED.register(DimensionalDoorsInitializer::setServer); + ServerLifecycleEvents.SERVER_STARTING.register((minecraftServer) -> server = minecraftServer); ModBlocks.init(); ModItems.init(); @@ -53,8 +57,4 @@ public class DimensionalDoorsInitializer implements ModInitializer { SchematicHandler.INSTANCE.loadSchematics(); } - - private static void setServer(MinecraftServer server) { - DimensionalDoorsInitializer.server = server; - } } diff --git a/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java new file mode 100644 index 00000000..503948c1 --- /dev/null +++ b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java @@ -0,0 +1,27 @@ +package org.dimdev.dimdoors.client; + +import net.minecraft.client.render.SkyProperties; +import net.minecraft.util.math.Vec3d; + +public class LimboSkyProperties extends SkyProperties { + public static final LimboSkyProperties INSTANCE = new LimboSkyProperties(); + + private LimboSkyProperties() { + super(Float.NaN, false, SkyProperties.SkyType.NORMAL, true, true); + } + + @Override + public Vec3d adjustSkyColor(Vec3d color, float sunHeight) { + return color.multiply(0.15000000596046448D); + } + + @Override + public boolean useThickFog(int camX, int camY) { + return true; + } + + @Override + public float[] getSkyColor(float skyAngle, float tickDelta) { + return new float[]{0, 0, 0, 0}; + } +} diff --git a/src/main/java/org/dimdev/dimdoors/client/ModRendering.java b/src/main/java/org/dimdev/dimdoors/client/ModRendering.java index 8029e3f9..595fab53 100644 --- a/src/main/java/org/dimdev/dimdoors/client/ModRendering.java +++ b/src/main/java/org/dimdev/dimdoors/client/ModRendering.java @@ -35,6 +35,7 @@ public class ModRendering { OpenWorlds.registerSkyRenderer(ModDimensions.LIMBO_TYPE, new LimboSkyProvider()); OpenWorlds.registerCloudRenderer(ModDimensions.LIMBO_TYPE, (minecraftClient, matrixStack, v, v1, v2, v3) -> { }); + OpenWorlds.registerSkyProperty(ModDimensions.LIMBO_TYPE, LimboSkyProperties.INSTANCE); setupFluidRendering(ModFluids.ETERNAL_FLUID, ModFluids.FLOWING_ETERNAL_FLUID, new Identifier("dimdoors:eternal_fluid")); } diff --git a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java index e33a21c3..0fd0e3dd 100644 --- a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java +++ b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java @@ -2,7 +2,6 @@ package org.dimdev.dimdoors.world; import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.entity.ModEntityTypes; -import org.dimdev.dimdoors.mixin.BuiltinBiomesAccessor; import org.dimdev.dimdoors.sound.ModSoundEvents; import net.minecraft.block.Blocks; @@ -34,10 +33,6 @@ public final class ModBiomes { Registry.register(BuiltinRegistries.BIOME, PERSONAL_WHITE_VOID_KEY.getValue(), WHITE_VOID_BIOME); Registry.register(BuiltinRegistries.BIOME, PUBLIC_BLACK_VOID_KEY.getValue(), BLACK_VOID_BIOME); Registry.register(BuiltinRegistries.BIOME, DUNGEON_DANGEROUS_BLACK_VOID_KEY.getValue(), DANGEROUS_BLACK_VOID_BIOME); - BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(LIMBO_BIOME), LIMBO_KEY); - BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(DANGEROUS_BLACK_VOID_BIOME), DUNGEON_DANGEROUS_BLACK_VOID_KEY); - BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(BLACK_VOID_BIOME), PUBLIC_BLACK_VOID_KEY); - BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(WHITE_VOID_BIOME), PERSONAL_WHITE_VOID_KEY); } private static BiomeEffects createEffect(boolean white) { @@ -67,12 +62,12 @@ public final class ModBiomes { .depth(0.1f) .downfall(0.0f) .effects(new BiomeEffects.Builder() - .fogColor(0x111111) + .fogColor(0x000000) .waterColor(0) .foliageColor(0) .waterFogColor(0) .moodSound(new BiomeMoodSound(ModSoundEvents.CREEPY, 6000, 8, 2.0)) - .skyColor(0x111111) + .skyColor(0x000000) .grassColor(0) .build()) .generationSettings(new GenerationSettings.Builder() diff --git a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java index 5686cd7e..6dfa5bf1 100644 --- a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java +++ b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java @@ -107,7 +107,7 @@ public final class ModDimensions { limboShapeConfig, ModBlocks.UNRAVELLED_FABRIC.getDefaultState(), ModBlocks.ETERNAL_FLUID.getDefaultState(), - -1, + -10, 5, 8, false diff --git a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java index b2617540..75bc81d0 100644 --- a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java +++ b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java @@ -1,23 +1,21 @@ package org.dimdev.dimdoors.world.limbo; -import java.util.Collections; import java.util.Set; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.mojang.serialization.Codec; -import com.mojang.serialization.Decoder; -import com.mojang.serialization.Encoder; -import com.mojang.serialization.MapCodec; import org.dimdev.dimdoors.world.ModBiomes; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeSource; public class LimboBiomeSource extends BiomeSource { - public static final Codec CODEC = MapCodec.of(Encoder.empty(), Decoder.unit(LimboBiomeSource::new)).stable().codec(); + public static final LimboBiomeSource INSTANCE = new LimboBiomeSource(); + public static final Codec CODEC = Codec.unit(INSTANCE); - public LimboBiomeSource() { - super(Collections.singletonList(ModBiomes.LIMBO_BIOME)); + private LimboBiomeSource() { + super(ImmutableList.of(ModBiomes.LIMBO_BIOME)); } @Override diff --git a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java index c45069b0..f160997f 100644 --- a/src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java +++ b/src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java @@ -10,7 +10,6 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectList; import it.unimi.dsi.fastutil.objects.ObjectListIterator; import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.mixin.ChunkGeneratorAccessor; import org.dimdev.dimdoors.world.ModDimensions; @@ -56,11 +55,8 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; public class LimboChunkGenerator extends ChunkGenerator { - public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(BiomeSource.CODEC.fieldOf("biome_source").forGetter((chunkGenerator) -> { - return chunkGenerator.biomeSource; - })).apply(instance, instance.stable(LimboChunkGenerator::new)); - }); + public static final LimboChunkGenerator INSTANCE = new LimboChunkGenerator(LimboBiomeSource.INSTANCE, LimboBiomeSource.INSTANCE); + public static final Codec CODEC = Codec.unit(INSTANCE); private static final float[] NOISE_WEIGHT_TABLE = Util.make(new float[13824], (array) -> { for (int i = 0; i < 24; ++i) { for (int j = 0; j < 24; ++j) { @@ -98,10 +94,6 @@ public class LimboChunkGenerator extends ChunkGenerator { private final long worldSeed; private final int worldHeight; - public LimboChunkGenerator(BiomeSource biomeSource) { - this(biomeSource, biomeSource); - } - private LimboChunkGenerator(BiomeSource biomeSource, BiomeSource biomeSource2) { super(biomeSource, biomeSource2, ModDimensions.LIMBO_CHUNK_GENERATOR_SETTINGS.getStructuresConfig(), new Random().nextLong()); this.worldSeed = ((ChunkGeneratorAccessor) this).getWorldSeed(); @@ -163,7 +155,8 @@ public class LimboChunkGenerator extends ChunkGenerator { @Environment(EnvType.CLIENT) public ChunkGenerator withSeed(long seed) { - return new LimboChunkGenerator(this.biomeSource.withSeed(seed)); + BiomeSource source = this.biomeSource.withSeed(seed); + return new LimboChunkGenerator(source, source); } private double sampleNoise(int x, int y, int z, double horizontalScale, double verticalScale, double horizontalStretch, double verticalStretch) { diff --git a/src/main/resources/data/dimdoors/dimension/limbo.json b/src/main/resources/data/dimdoors/dimension/limbo.json index bb214252..350a80b5 100644 --- a/src/main/resources/data/dimdoors/dimension/limbo.json +++ b/src/main/resources/data/dimdoors/dimension/limbo.json @@ -1,9 +1,6 @@ { "type": "dimdoors:limbo", "generator": { - "type": "dimdoors:limbo_chunk_generator", - "biome_source": { - "type": "dimdoors:limbo_biome_source" - } + "type": "dimdoors:limbo_chunk_generator" } } \ No newline at end of file