Structures
This commit is contained in:
parent
2fdad6aee8
commit
35d8c14d20
9 changed files with 134 additions and 48 deletions
|
@ -2,6 +2,7 @@ package ru.betterend;
|
||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import ru.betterend.registry.BiomeRegistry;
|
import ru.betterend.registry.BiomeRegistry;
|
||||||
|
import ru.betterend.registry.FeatureRegistry;
|
||||||
import ru.betterend.util.Logger;
|
import ru.betterend.util.Logger;
|
||||||
import ru.betterend.world.generator.BetterEndBiomeSource;
|
import ru.betterend.world.generator.BetterEndBiomeSource;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ public class BetterEnd implements ModInitializer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
|
FeatureRegistry.register();
|
||||||
BiomeRegistry.register();
|
BiomeRegistry.register();
|
||||||
BetterEndBiomeSource.register();
|
BetterEndBiomeSource.register();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
@ -30,6 +31,14 @@ public class BackgroundRendererMixin {
|
||||||
private static final float SKY_RED = 21F / 255F;
|
private static final float SKY_RED = 21F / 255F;
|
||||||
private static final float SKY_GREEN = 16F / 255F;
|
private static final float SKY_GREEN = 16F / 255F;
|
||||||
private static final float SKY_BLUE = 20F / 255F;
|
private static final float SKY_BLUE = 20F / 255F;
|
||||||
|
//private static final float NORMAL = 0.12757292F;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
private static float red;
|
||||||
|
@Shadow
|
||||||
|
private static float green;
|
||||||
|
@Shadow
|
||||||
|
private static float blue;
|
||||||
|
|
||||||
@Inject(method = "render", at = @At("RETURN"))
|
@Inject(method = "render", at = @At("RETURN"))
|
||||||
private static void onRender(Camera camera, float tickDelta, ClientWorld world, int i, float f, CallbackInfo info) {
|
private static void onRender(Camera camera, float tickDelta, ClientWorld world, int i, float f, CallbackInfo info) {
|
||||||
|
@ -39,6 +48,9 @@ public class BackgroundRendererMixin {
|
||||||
FluidState fluidState = camera.getSubmergedFluidState();
|
FluidState fluidState = camera.getSubmergedFluidState();
|
||||||
if (fluidState.isEmpty() && world.getDimension().hasEnderDragonFight()) {
|
if (fluidState.isEmpty() && world.getDimension().hasEnderDragonFight()) {
|
||||||
RenderSystem.clearColor(SKY_RED, SKY_GREEN, SKY_BLUE, 0);
|
RenderSystem.clearColor(SKY_RED, SKY_GREEN, SKY_BLUE, 0);
|
||||||
|
//red /= NORMAL;
|
||||||
|
//green /= NORMAL;
|
||||||
|
//blue /= NORMAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.registry.RegistryKey;
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.BiomeKeys;
|
import net.minecraft.world.biome.BiomeKeys;
|
||||||
import ru.betterend.world.biome.BiomeDefinition;
|
import ru.betterend.world.biome.BiomeFoggyMushroomland;
|
||||||
import ru.betterend.world.biome.EndBiome;
|
import ru.betterend.world.biome.EndBiome;
|
||||||
import ru.betterend.world.generator.BiomePicker;
|
import ru.betterend.world.generator.BiomePicker;
|
||||||
import ru.betterend.world.generator.BiomeType;
|
import ru.betterend.world.generator.BiomeType;
|
||||||
|
@ -22,12 +22,12 @@ public class BiomeRegistry {
|
||||||
public static final BiomePicker LAND_BIOMES = new BiomePicker();
|
public static final BiomePicker LAND_BIOMES = new BiomePicker();
|
||||||
public static final BiomePicker VOID_BIOMES = new BiomePicker();
|
public static final BiomePicker VOID_BIOMES = new BiomePicker();
|
||||||
|
|
||||||
public static final EndBiome END = registerBiome(BiomeKeys.THE_END, BiomeType.LAND);
|
public static final EndBiome END = registerBiome(BiomeKeys.THE_END, BiomeType.LAND, true);
|
||||||
public static final EndBiome END_BARRENS = registerBiome(BiomeKeys.END_BARRENS, BiomeType.VOID);
|
public static final EndBiome END_BARRENS = registerBiome(BiomeKeys.END_BARRENS, BiomeType.VOID, true);
|
||||||
public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND);
|
public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND, false);
|
||||||
public static final EndBiome END_MIDLANDS = registerBiome(BiomeKeys.END_MIDLANDS, BiomeType.LAND);
|
public static final EndBiome END_MIDLANDS = registerBiome(BiomeKeys.END_MIDLANDS, BiomeType.LAND, false);
|
||||||
public static final EndBiome SMALL_END_ISLANDS = registerBiome(BiomeKeys.SMALL_END_ISLANDS, BiomeType.VOID);
|
public static final EndBiome SMALL_END_ISLANDS = registerBiome(BiomeKeys.SMALL_END_ISLANDS, BiomeType.VOID, true);
|
||||||
public static final EndBiome TEST = registerBiome(new EndBiome(new BiomeDefinition("test").setFogColor(255, 0, 0).setFogDensity(10)), BiomeType.VOID);
|
public static final EndBiome FOGGY_MUSHROOMLAND = registerBiome(new BiomeFoggyMushroomland(), BiomeType.LAND);
|
||||||
|
|
||||||
public static void register() {}
|
public static void register() {}
|
||||||
|
|
||||||
|
@ -39,9 +39,9 @@ public class BiomeRegistry {
|
||||||
BiomeRegistry.MUTABLE.put(biomeRegistry.getOrThrow(BiomeRegistry.getBiomeKey(biome)), biome);
|
BiomeRegistry.MUTABLE.put(biomeRegistry.getOrThrow(BiomeRegistry.getBiomeKey(biome)), biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EndBiome registerBiome(RegistryKey<Biome> key, BiomeType type) {
|
public static EndBiome registerBiome(RegistryKey<Biome> key, BiomeType type, boolean addToGen) {
|
||||||
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.get(key));
|
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.get(key));
|
||||||
addToPicker(endBiome, type);
|
if (addToGen) addToPicker(endBiome, type);
|
||||||
makeLink(endBiome);
|
makeLink(endBiome);
|
||||||
return endBiome;
|
return endBiome;
|
||||||
}
|
}
|
||||||
|
|
10
src/main/java/ru/betterend/registry/FeatureRegistry.java
Normal file
10
src/main/java/ru/betterend/registry/FeatureRegistry.java
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package ru.betterend.registry;
|
||||||
|
|
||||||
|
import ru.betterend.world.features.EndFeature;
|
||||||
|
import ru.betterend.world.features.StoneSpiralFeature;
|
||||||
|
|
||||||
|
public class FeatureRegistry {
|
||||||
|
public static final EndFeature STONE_SPIRAL = new EndFeature("stone_spiral", new StoneSpiralFeature());
|
||||||
|
|
||||||
|
public static void register() {}
|
||||||
|
}
|
|
@ -26,6 +26,7 @@ import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
|
||||||
import net.minecraft.world.gen.surfacebuilder.ConfiguredSurfaceBuilders;
|
import net.minecraft.world.gen.surfacebuilder.ConfiguredSurfaceBuilders;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
|
import ru.betterend.world.features.EndFeature;
|
||||||
|
|
||||||
public class BiomeDefinition {
|
public class BiomeDefinition {
|
||||||
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
|
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
|
||||||
|
@ -43,41 +44,12 @@ public class BiomeDefinition {
|
||||||
private int fogColor = 3344392;
|
private int fogColor = 3344392;
|
||||||
private float fogDensity = 1F;
|
private float fogDensity = 1F;
|
||||||
|
|
||||||
private boolean stalactites = true;
|
|
||||||
private boolean bnStructures = true;
|
|
||||||
|
|
||||||
private final Identifier id;
|
private final Identifier id;
|
||||||
|
|
||||||
public BiomeDefinition(String name) {
|
public BiomeDefinition(String name) {
|
||||||
this.id = new Identifier(BetterEnd.MOD_ID, name);
|
this.id = new Identifier(BetterEnd.MOD_ID, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeDefinition setStalactites(boolean value) {
|
|
||||||
stalactites = value;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setBNStructures(boolean value) {
|
|
||||||
bnStructures = value;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setDefaultOres(boolean value) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setDefaultStructureFeatures(boolean value) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setDefaultFeatures(boolean value) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setDefaultMobs(boolean value) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeDefinition setParticleConfig(BiomeParticleConfig config) {
|
public BiomeDefinition setParticleConfig(BiomeParticleConfig config) {
|
||||||
this.particleConfig = config;
|
this.particleConfig = config;
|
||||||
return this;
|
return this;
|
||||||
|
@ -97,11 +69,18 @@ public class BiomeDefinition {
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeDefinition addStructureFeature(ConfiguredStructureFeature<?, ?> feature) {
|
public BiomeDefinition addStructureFeature(ConfiguredStructureFeature<?, ?> feature) {
|
||||||
System.out.println("Structure " + feature);
|
|
||||||
structures.add(feature);
|
structures.add(feature);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BiomeDefinition addFeature(EndFeature feature) {
|
||||||
|
FeatureInfo info = new FeatureInfo();
|
||||||
|
info.featureStep = feature.getFeatureStep();
|
||||||
|
info.feature = feature.getFeatureConfigured();
|
||||||
|
features.add(info);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public BiomeDefinition addFeature(Feature featureStep, ConfiguredFeature<?, ?> feature) {
|
public BiomeDefinition addFeature(Feature featureStep, ConfiguredFeature<?, ?> feature) {
|
||||||
FeatureInfo info = new FeatureInfo();
|
FeatureInfo info = new FeatureInfo();
|
||||||
info.featureStep = featureStep;
|
info.featureStep = featureStep;
|
||||||
|
@ -208,12 +187,4 @@ public class BiomeDefinition {
|
||||||
public float getFodDensity() {
|
public float getFodDensity() {
|
||||||
return fogDensity;
|
return fogDensity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasStalactites() {
|
|
||||||
return stalactites;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasBNStructures() {
|
|
||||||
return bnStructures;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package ru.betterend.world.biome;
|
||||||
|
|
||||||
|
import ru.betterend.registry.FeatureRegistry;
|
||||||
|
|
||||||
|
public class BiomeFoggyMushroomland extends EndBiome {
|
||||||
|
public BiomeFoggyMushroomland() {
|
||||||
|
super(new BiomeDefinition("foggy_mushroomland")
|
||||||
|
.setFogColor(41, 122, 173)
|
||||||
|
.setFogDensity(5)
|
||||||
|
.addFeature(FeatureRegistry.STONE_SPIRAL));
|
||||||
|
}
|
||||||
|
}
|
46
src/main/java/ru/betterend/world/features/EndFeature.java
Normal file
46
src/main/java/ru/betterend/world/features/EndFeature.java
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package ru.betterend.world.features;
|
||||||
|
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.registry.BuiltinRegistries;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
|
import net.minecraft.world.gen.GenerationStep;
|
||||||
|
import net.minecraft.world.gen.decorator.ChanceDecoratorConfig;
|
||||||
|
import net.minecraft.world.gen.decorator.ConfiguredDecorator;
|
||||||
|
import net.minecraft.world.gen.decorator.Decorator;
|
||||||
|
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||||
|
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.FeatureConfig;
|
||||||
|
import ru.betterend.BetterEnd;
|
||||||
|
|
||||||
|
public class EndFeature {
|
||||||
|
private final Feature<DefaultFeatureConfig> feature;
|
||||||
|
private final ConfiguredFeature<?, ?> featureConfigured;
|
||||||
|
private final GenerationStep.Feature featureStep;
|
||||||
|
|
||||||
|
public EndFeature(String name, Feature<DefaultFeatureConfig> feature, GenerationStep.Feature featureStep, ConfiguredDecorator<?> configuredDecorator) {
|
||||||
|
Identifier id = new Identifier(BetterEnd.MOD_ID, name);
|
||||||
|
this.featureStep = featureStep;
|
||||||
|
this.feature = Registry.register(Registry.FEATURE, id, feature);
|
||||||
|
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(configuredDecorator));
|
||||||
|
}
|
||||||
|
|
||||||
|
public EndFeature(String name, Feature<DefaultFeatureConfig> feature) {
|
||||||
|
Identifier id = new Identifier(BetterEnd.MOD_ID, name);
|
||||||
|
this.featureStep = GenerationStep.Feature.VEGETAL_DECORATION;
|
||||||
|
this.feature = Registry.register(Registry.FEATURE, id, feature);
|
||||||
|
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(Decorator.CHANCE.configure(new ChanceDecoratorConfig(100))));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Feature<DefaultFeatureConfig> getFeature() {
|
||||||
|
return feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfiguredFeature<?, ?> getFeatureConfigured() {
|
||||||
|
return featureConfigured;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenerationStep.Feature getFeatureStep() {
|
||||||
|
return featureStep;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package ru.betterend.world.features;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.world.Heightmap.Type;
|
||||||
|
import net.minecraft.world.StructureWorldAccess;
|
||||||
|
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||||
|
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
|
||||||
|
public class StoneSpiralFeature extends Feature<DefaultFeatureConfig> {
|
||||||
|
public StoneSpiralFeature() {
|
||||||
|
super(DefaultFeatureConfig.CODEC);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean generate(StructureWorldAccess world, ChunkGenerator generator, Random random, BlockPos pos, DefaultFeatureConfig config) {
|
||||||
|
BlockPos topPos = world.getTopPosition(Type.WORLD_SURFACE, pos);
|
||||||
|
Direction offset = Direction.NORTH;
|
||||||
|
|
||||||
|
System.out.println(topPos);
|
||||||
|
|
||||||
|
for (int y = 1; y <= 15; y++) {
|
||||||
|
offset = offset.rotateYClockwise();
|
||||||
|
world.setBlockState(topPos.up(y).offset(offset), Blocks.STONE.getDefaultState(), 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -57,7 +57,7 @@ public class BetterEndBiomeSource extends BiomeSource {
|
||||||
|
|
||||||
float height = TheEndBiomeSource.getNoiseAt(noise, (int) i * 2 + 1, (int) j * 2 + 1);
|
float height = TheEndBiomeSource.getNoiseAt(noise, (int) i * 2 + 1, (int) j * 2 + 1);
|
||||||
|
|
||||||
EndBiome netherBiome = height < 20.0F ? mapVoid.getBiome(biomeX << 2, biomeZ << 2) : mapLand.getBiome(biomeX << 2, biomeZ << 2);
|
EndBiome netherBiome = height < -20.0F ? mapVoid.getBiome(biomeX << 2, biomeZ << 2) : mapLand.getBiome(biomeX << 2, biomeZ << 2);
|
||||||
if (biomeX == 0 && biomeZ == 0) {
|
if (biomeX == 0 && biomeZ == 0) {
|
||||||
mapLand.clearCache();
|
mapLand.clearCache();
|
||||||
mapVoid.clearCache();
|
mapVoid.clearCache();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue