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.ModBiomes;
import org.dimdev.dimdoors.world.ModDimensions; import org.dimdev.dimdoors.world.ModDimensions;
import org.dimdev.dimdoors.world.feature.ModFeatures; import org.dimdev.dimdoors.world.feature.ModFeatures;
import org.jetbrains.annotations.NotNull;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
@ -22,14 +23,17 @@ import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
public class DimensionalDoorsInitializer implements ModInitializer { public class DimensionalDoorsInitializer implements ModInitializer {
public static final Identifier MONOLITH_PARTICLE_PACKET = new Identifier("dimdoors", "monolith_particle_packet"); public static final Identifier MONOLITH_PARTICLE_PACKET = new Identifier("dimdoors", "monolith_particle_packet");
private static MinecraftServer server; private static MinecraftServer server;
@NotNull
public static MinecraftServer getServer() { public static MinecraftServer getServer() {
if (server != null) {
return server; return server;
} }
throw new IllegalStateException("Accessed server too early!");
}
public static ServerWorld getWorld(RegistryKey<World> key) { public static ServerWorld getWorld(RegistryKey<World> key) {
return getServer().getWorld(key); return getServer().getWorld(key);
@ -37,7 +41,7 @@ public class DimensionalDoorsInitializer implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
ServerLifecycleEvents.SERVER_STARTED.register(DimensionalDoorsInitializer::setServer); ServerLifecycleEvents.SERVER_STARTING.register((minecraftServer) -> server = minecraftServer);
ModBlocks.init(); ModBlocks.init();
ModItems.init(); ModItems.init();
@ -53,8 +57,4 @@ public class DimensionalDoorsInitializer implements ModInitializer {
SchematicHandler.INSTANCE.loadSchematics(); 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.registerSkyRenderer(ModDimensions.LIMBO_TYPE, new LimboSkyProvider());
OpenWorlds.registerCloudRenderer(ModDimensions.LIMBO_TYPE, (minecraftClient, matrixStack, v, v1, v2, v3) -> { 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")); 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.block.ModBlocks;
import org.dimdev.dimdoors.entity.ModEntityTypes; import org.dimdev.dimdoors.entity.ModEntityTypes;
import org.dimdev.dimdoors.mixin.BuiltinBiomesAccessor;
import org.dimdev.dimdoors.sound.ModSoundEvents; import org.dimdev.dimdoors.sound.ModSoundEvents;
import net.minecraft.block.Blocks; 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, PERSONAL_WHITE_VOID_KEY.getValue(), WHITE_VOID_BIOME);
Registry.register(BuiltinRegistries.BIOME, PUBLIC_BLACK_VOID_KEY.getValue(), BLACK_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); 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) { private static BiomeEffects createEffect(boolean white) {
@ -67,12 +62,12 @@ public final class ModBiomes {
.depth(0.1f) .depth(0.1f)
.downfall(0.0f) .downfall(0.0f)
.effects(new BiomeEffects.Builder() .effects(new BiomeEffects.Builder()
.fogColor(0x111111) .fogColor(0x000000)
.waterColor(0) .waterColor(0)
.foliageColor(0) .foliageColor(0)
.waterFogColor(0) .waterFogColor(0)
.moodSound(new BiomeMoodSound(ModSoundEvents.CREEPY, 6000, 8, 2.0)) .moodSound(new BiomeMoodSound(ModSoundEvents.CREEPY, 6000, 8, 2.0))
.skyColor(0x111111) .skyColor(0x000000)
.grassColor(0) .grassColor(0)
.build()) .build())
.generationSettings(new GenerationSettings.Builder() .generationSettings(new GenerationSettings.Builder()

View file

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

View file

@ -1,23 +1,21 @@
package org.dimdev.dimdoors.world.limbo; package org.dimdev.dimdoors.world.limbo;
import java.util.Collections;
import java.util.Set; import java.util.Set;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.mojang.serialization.Codec; 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 org.dimdev.dimdoors.world.ModBiomes;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.source.BiomeSource; import net.minecraft.world.biome.source.BiomeSource;
public class LimboBiomeSource extends 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() { private LimboBiomeSource() {
super(Collections.singletonList(ModBiomes.LIMBO_BIOME)); super(ImmutableList.of(ModBiomes.LIMBO_BIOME));
} }
@Override @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.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectListIterator; import it.unimi.dsi.fastutil.objects.ObjectListIterator;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.mixin.ChunkGeneratorAccessor; import org.dimdev.dimdoors.mixin.ChunkGeneratorAccessor;
import org.dimdev.dimdoors.world.ModDimensions; import org.dimdev.dimdoors.world.ModDimensions;
@ -56,11 +55,8 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
public class LimboChunkGenerator extends ChunkGenerator { public class LimboChunkGenerator extends ChunkGenerator {
public static final Codec<LimboChunkGenerator> CODEC = RecordCodecBuilder.create((instance) -> { public static final LimboChunkGenerator INSTANCE = new LimboChunkGenerator(LimboBiomeSource.INSTANCE, LimboBiomeSource.INSTANCE);
return instance.group(BiomeSource.CODEC.fieldOf("biome_source").forGetter((chunkGenerator) -> { public static final Codec<LimboChunkGenerator> CODEC = Codec.unit(INSTANCE);
return chunkGenerator.biomeSource;
})).apply(instance, instance.stable(LimboChunkGenerator::new));
});
private static final float[] NOISE_WEIGHT_TABLE = Util.make(new float[13824], (array) -> { private static final float[] NOISE_WEIGHT_TABLE = Util.make(new float[13824], (array) -> {
for (int i = 0; i < 24; ++i) { for (int i = 0; i < 24; ++i) {
for (int j = 0; j < 24; ++j) { for (int j = 0; j < 24; ++j) {
@ -98,10 +94,6 @@ public class LimboChunkGenerator extends ChunkGenerator {
private final long worldSeed; private final long worldSeed;
private final int worldHeight; private final int worldHeight;
public LimboChunkGenerator(BiomeSource biomeSource) {
this(biomeSource, biomeSource);
}
private LimboChunkGenerator(BiomeSource biomeSource, BiomeSource biomeSource2) { private LimboChunkGenerator(BiomeSource biomeSource, BiomeSource biomeSource2) {
super(biomeSource, biomeSource2, ModDimensions.LIMBO_CHUNK_GENERATOR_SETTINGS.getStructuresConfig(), new Random().nextLong()); super(biomeSource, biomeSource2, ModDimensions.LIMBO_CHUNK_GENERATOR_SETTINGS.getStructuresConfig(), new Random().nextLong());
this.worldSeed = ((ChunkGeneratorAccessor) this).getWorldSeed(); this.worldSeed = ((ChunkGeneratorAccessor) this).getWorldSeed();
@ -163,7 +155,8 @@ public class LimboChunkGenerator extends ChunkGenerator {
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public ChunkGenerator withSeed(long seed) { 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) { 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", "type": "dimdoors:limbo",
"generator": { "generator": {
"type": "dimdoors:limbo_chunk_generator", "type": "dimdoors:limbo_chunk_generator"
"biome_source": {
"type": "dimdoors:limbo_biome_source"
}
} }
} }