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:
parent
08209a4965
commit
5b4faf8edf
8 changed files with 48 additions and 37 deletions
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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};
|
||||||
|
}
|
||||||
|
}
|
|
@ -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"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue