Singletons and sky properties

Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/DimensionalDoorsInitializer.java
	new file:   src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java
	modified:   src/main/java/org/dimdev/dimdoors/client/ModRendering.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
	modified:   src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java
	modified:   src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java
	modified:   src/main/resources/data/dimdoors/dimension/limbo.json
This commit is contained in:
SD 2020-09-09 18:43:34 +05:30
parent 08209a4965
commit 5b4faf8edf
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
8 changed files with 48 additions and 37 deletions

View file

@ -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,14 +23,17 @@ 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() {
if (server != null) {
return server;
}
throw new IllegalStateException("Accessed server too early!");
}
public static ServerWorld getWorld(RegistryKey<World> key) {
return getServer().getWorld(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;
}
}

View file

@ -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};
}
}

View file

@ -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"));
}

View file

@ -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()

View file

@ -107,7 +107,7 @@ public final class ModDimensions {
limboShapeConfig,
ModBlocks.UNRAVELLED_FABRIC.getDefaultState(),
ModBlocks.ETERNAL_FLUID.getDefaultState(),
-1,
-10,
5,
8,
false

View file

@ -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<LimboBiomeSource> CODEC = MapCodec.of(Encoder.empty(), Decoder.unit(LimboBiomeSource::new)).stable().codec();
public static final LimboBiomeSource INSTANCE = new LimboBiomeSource();
public static final Codec<LimboBiomeSource> CODEC = Codec.unit(INSTANCE);
public LimboBiomeSource() {
super(Collections.singletonList(ModBiomes.LIMBO_BIOME));
private LimboBiomeSource() {
super(ImmutableList.of(ModBiomes.LIMBO_BIOME));
}
@Override

View file

@ -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<LimboChunkGenerator> 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<LimboChunkGenerator> 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) {

View file

@ -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"
}
}