New terrain, render fixes
This commit is contained in:
parent
36ea4b8726
commit
2061a12aff
25 changed files with 147 additions and 41 deletions
|
@ -9,6 +9,7 @@ import ru.betterend.registry.FeatureRegistry;
|
|||
import ru.betterend.registry.ItemRegistry;
|
||||
import ru.betterend.util.Logger;
|
||||
import ru.betterend.world.generator.BetterEndBiomeSource;
|
||||
import ru.betterend.world.surface.DoubleBlockSurfaceBuilder;
|
||||
|
||||
public class BetterEnd implements ModInitializer {
|
||||
public static final String MOD_ID = "betterend";
|
||||
|
@ -17,6 +18,7 @@ public class BetterEnd implements ModInitializer {
|
|||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
DoubleBlockSurfaceBuilder.register();
|
||||
ItemRegistry.register();
|
||||
BlockRegistry.register();
|
||||
FeatureRegistry.register();
|
||||
|
|
20
src/main/java/ru/betterend/blocks/BlockTerrain.java
Normal file
20
src/main/java/ru/betterend/blocks/BlockTerrain.java
Normal file
|
@ -0,0 +1,20 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
|
||||
public class BlockTerrain extends BlockBase {
|
||||
public static final BlockSoundGroup TERRAIN_SOUND = new BlockSoundGroup(1.0F, 1.0F,
|
||||
SoundEvents.BLOCK_STONE_BREAK,
|
||||
SoundEvents.BLOCK_WART_BLOCK_STEP,
|
||||
SoundEvents.BLOCK_STONE_PLACE,
|
||||
SoundEvents.BLOCK_STONE_HIT,
|
||||
SoundEvents.BLOCK_STONE_FALL);
|
||||
|
||||
public BlockTerrain(MaterialColor color) {
|
||||
super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color).sounds(TERRAIN_SOUND));
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Blocks;
|
||||
|
||||
public class BlockWetMycelium extends BlockBase {
|
||||
public BlockWetMycelium() {
|
||||
super(FabricBlockSettings.copyOf(Blocks.END_STONE));
|
||||
}
|
||||
}
|
|
@ -13,6 +13,9 @@ import net.minecraft.client.network.ClientPlayerEntity;
|
|||
import net.minecraft.client.render.BackgroundRenderer;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.effect.StatusEffects;
|
||||
import net.minecraft.fluid.FluidState;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
|
@ -46,7 +49,9 @@ public class BackgroundRendererMixin {
|
|||
if (lerp > 1) lerp = 1;
|
||||
|
||||
FluidState fluidState = camera.getSubmergedFluidState();
|
||||
if (fluidState.isEmpty() && world.getDimension().hasEnderDragonFight()) {
|
||||
Entity entity = camera.getFocusedEntity();
|
||||
boolean skip = entity instanceof LivingEntity && ((LivingEntity) entity).getStatusEffect(StatusEffects.NIGHT_VISION).getDuration() > 0;
|
||||
if (!skip && fluidState.isEmpty() && world.getDimension().hasEnderDragonFight()) {
|
||||
//RenderSystem.clearColor(SKY_RED, SKY_GREEN, SKY_BLUE, 0);
|
||||
red *= NORMAL;
|
||||
green *= NORMAL;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package ru.betterend.registry;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
@ -9,7 +10,7 @@ import ru.betterend.BetterEnd;
|
|||
import ru.betterend.blocks.AeterniumBlock;
|
||||
import ru.betterend.blocks.BlockEndstoneDust;
|
||||
import ru.betterend.blocks.BlockOre;
|
||||
import ru.betterend.blocks.BlockWetMycelium;
|
||||
import ru.betterend.blocks.BlockTerrain;
|
||||
import ru.betterend.blocks.EnderBlock;
|
||||
import ru.betterend.blocks.TerminiteBlock;
|
||||
import ru.betterend.tab.CreativeTab;
|
||||
|
@ -17,7 +18,8 @@ import ru.betterend.tab.CreativeTab;
|
|||
public class BlockRegistry {
|
||||
// Terrain //
|
||||
public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new BlockEndstoneDust());
|
||||
public static final Block WET_MYCELIUM = registerBlock("wet_mycelium", new BlockWetMycelium());
|
||||
public static final Block END_MYCELIUM = registerBlock("end_mycelium", new BlockTerrain(MaterialColor.LIGHT_BLUE));
|
||||
public static final Block END_MOSS = registerBlock("end_moss", new BlockTerrain(MaterialColor.CYAN));
|
||||
|
||||
// Ores //
|
||||
public static final Block ENDER_ORE = registerBlock("ender_ore", new BlockOre(ItemRegistry.ENDER_DUST, 1, 3));
|
||||
|
|
|
@ -32,6 +32,7 @@ import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
|
|||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.util.MHelper;
|
||||
import ru.betterend.world.features.EndFeature;
|
||||
import ru.betterend.world.surface.DoubleBlockSurfaceBuilder;
|
||||
|
||||
public class BiomeDefinition {
|
||||
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
|
||||
|
@ -65,6 +66,21 @@ public class BiomeDefinition {
|
|||
));
|
||||
return this;
|
||||
}
|
||||
|
||||
public BiomeDefinition setSurface(Block surfaceBlock1, Block surfaceBlock2) {
|
||||
this.surface = DoubleBlockSurfaceBuilder.INSTANCE.setConfigUpper(new TernarySurfaceConfig(
|
||||
surfaceBlock1.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState()
|
||||
)).setConfigLower(new TernarySurfaceConfig(
|
||||
surfaceBlock2.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState()
|
||||
)).method_30478(new TernarySurfaceConfig(surfaceBlock1.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState(),
|
||||
Blocks.END_STONE.getDefaultState()));
|
||||
return this;
|
||||
}
|
||||
|
||||
public BiomeDefinition setParticleConfig(BiomeParticleConfig config) {
|
||||
this.particleConfig = config;
|
||||
|
|
|
@ -12,7 +12,7 @@ public class BiomeFoggyMushroomland extends EndBiome {
|
|||
.setFogDensity(3)
|
||||
.setWaterColor(119, 227, 250)
|
||||
.setWaterFogColor(119, 227, 250)
|
||||
.setSurface(BlockRegistry.WET_MYCELIUM)
|
||||
.setSurface(BlockRegistry.END_MOSS, BlockRegistry.END_MYCELIUM)
|
||||
.addFeature(FeatureRegistry.STONE_SPIRAL)
|
||||
.addFeature(Feature.LAKES, ConfiguredFeatures.LAKE_WATER));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package ru.betterend.world.surface;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder;
|
||||
import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
|
||||
import ru.betterend.noise.OpenSimplexNoise;
|
||||
|
||||
public class DoubleBlockSurfaceBuilder extends SurfaceBuilder<TernarySurfaceConfig> {
|
||||
public static final DoubleBlockSurfaceBuilder INSTANCE = new DoubleBlockSurfaceBuilder(TernarySurfaceConfig.CODEC);
|
||||
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(4141);
|
||||
private TernarySurfaceConfig config1;
|
||||
private TernarySurfaceConfig config2;
|
||||
|
||||
public DoubleBlockSurfaceBuilder(Codec<TernarySurfaceConfig> codec) {
|
||||
super(codec);
|
||||
}
|
||||
|
||||
public DoubleBlockSurfaceBuilder setConfigUpper(TernarySurfaceConfig config) {
|
||||
config1 = config;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DoubleBlockSurfaceBuilder setConfigLower(TernarySurfaceConfig config) {
|
||||
config2 = config;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Random random, Chunk chunk, Biome biome, int x, int z, int height, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, TernarySurfaceConfig surfaceBlocks) {
|
||||
noise = NOISE.eval(x * 0.1, z * 0.1);
|
||||
SurfaceBuilder.DEFAULT.generate(random, chunk, biome, x, z, height, noise, defaultBlock, defaultFluid, seaLevel, seed, noise > 0 ? config1 : config2);
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
Registry.register(Registry.SURFACE_BUILDER, "double_block_surface_builder", INSTANCE);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue