New terrain, render fixes

This commit is contained in:
paulevsGitch 2020-09-24 23:20:59 +03:00
parent 36ea4b8726
commit 2061a12aff
25 changed files with 147 additions and 41 deletions

View file

@ -9,6 +9,7 @@ import ru.betterend.registry.FeatureRegistry;
import ru.betterend.registry.ItemRegistry; import ru.betterend.registry.ItemRegistry;
import ru.betterend.util.Logger; import ru.betterend.util.Logger;
import ru.betterend.world.generator.BetterEndBiomeSource; import ru.betterend.world.generator.BetterEndBiomeSource;
import ru.betterend.world.surface.DoubleBlockSurfaceBuilder;
public class BetterEnd implements ModInitializer { public class BetterEnd implements ModInitializer {
public static final String MOD_ID = "betterend"; public static final String MOD_ID = "betterend";
@ -17,6 +18,7 @@ public class BetterEnd implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
DoubleBlockSurfaceBuilder.register();
ItemRegistry.register(); ItemRegistry.register();
BlockRegistry.register(); BlockRegistry.register();
FeatureRegistry.register(); FeatureRegistry.register();

View 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));
}
}

View file

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

View file

@ -13,6 +13,9 @@ import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.render.BackgroundRenderer; import net.minecraft.client.render.BackgroundRenderer;
import net.minecraft.client.render.Camera; import net.minecraft.client.render.Camera;
import net.minecraft.client.world.ClientWorld; 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.fluid.FluidState;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
@ -46,7 +49,9 @@ public class BackgroundRendererMixin {
if (lerp > 1) lerp = 1; if (lerp > 1) lerp = 1;
FluidState fluidState = camera.getSubmergedFluidState(); 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); //RenderSystem.clearColor(SKY_RED, SKY_GREEN, SKY_BLUE, 0);
red *= NORMAL; red *= NORMAL;
green *= NORMAL; green *= NORMAL;

View file

@ -1,6 +1,7 @@
package ru.betterend.registry; package ru.betterend.registry;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.MaterialColor;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@ -9,7 +10,7 @@ import ru.betterend.BetterEnd;
import ru.betterend.blocks.AeterniumBlock; import ru.betterend.blocks.AeterniumBlock;
import ru.betterend.blocks.BlockEndstoneDust; import ru.betterend.blocks.BlockEndstoneDust;
import ru.betterend.blocks.BlockOre; import ru.betterend.blocks.BlockOre;
import ru.betterend.blocks.BlockWetMycelium; import ru.betterend.blocks.BlockTerrain;
import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.EnderBlock;
import ru.betterend.blocks.TerminiteBlock; import ru.betterend.blocks.TerminiteBlock;
import ru.betterend.tab.CreativeTab; import ru.betterend.tab.CreativeTab;
@ -17,7 +18,8 @@ import ru.betterend.tab.CreativeTab;
public class BlockRegistry { public class BlockRegistry {
// Terrain // // Terrain //
public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new BlockEndstoneDust()); 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 // // Ores //
public static final Block ENDER_ORE = registerBlock("ender_ore", new BlockOre(ItemRegistry.ENDER_DUST, 1, 3)); public static final Block ENDER_ORE = registerBlock("ender_ore", new BlockOre(ItemRegistry.ENDER_DUST, 1, 3));

View file

@ -32,6 +32,7 @@ import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.util.MHelper; import ru.betterend.util.MHelper;
import ru.betterend.world.features.EndFeature; import ru.betterend.world.features.EndFeature;
import ru.betterend.world.surface.DoubleBlockSurfaceBuilder;
public class BiomeDefinition { public class BiomeDefinition {
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList(); private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
@ -65,6 +66,21 @@ public class BiomeDefinition {
)); ));
return this; 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) { public BiomeDefinition setParticleConfig(BiomeParticleConfig config) {
this.particleConfig = config; this.particleConfig = config;

View file

@ -12,7 +12,7 @@ public class BiomeFoggyMushroomland extends EndBiome {
.setFogDensity(3) .setFogDensity(3)
.setWaterColor(119, 227, 250) .setWaterColor(119, 227, 250)
.setWaterFogColor(119, 227, 250) .setWaterFogColor(119, 227, 250)
.setSurface(BlockRegistry.WET_MYCELIUM) .setSurface(BlockRegistry.END_MOSS, BlockRegistry.END_MYCELIUM)
.addFeature(FeatureRegistry.STONE_SPIRAL) .addFeature(FeatureRegistry.STONE_SPIRAL)
.addFeature(Feature.LAKES, ConfiguredFeatures.LAKE_WATER)); .addFeature(Feature.LAKES, ConfiguredFeatures.LAKE_WATER));
} }

View file

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

View file

@ -0,0 +1,10 @@
{
"variants": {
"": [
{ "model": "betterend:block/end_moss" },
{ "model": "betterend:block/end_moss", "y": 90 },
{ "model": "betterend:block/end_moss", "y": 180 },
{ "model": "betterend:block/end_moss", "y": 270 }
]
}
}

View file

@ -0,0 +1,10 @@
{
"variants": {
"": [
{ "model": "betterend:block/end_mycelium" },
{ "model": "betterend:block/end_mycelium", "y": 90 },
{ "model": "betterend:block/end_mycelium", "y": 180 },
{ "model": "betterend:block/end_mycelium", "y": 270 }
]
}
}

View file

@ -1,10 +0,0 @@
{
"variants": {
"": [
{ "model": "betterend:block/wet_mycelium" },
{ "model": "betterend:block/wet_mycelium", "y": 90 },
{ "model": "betterend:block/wet_mycelium", "y": 180 },
{ "model": "betterend:block/wet_mycelium", "y": 270 }
]
}
}

View file

@ -1,7 +1,8 @@
{ {
"itemGroup.betterend.items": "Better End", "itemGroup.betterend.items": "Better End",
"block.betterend.wet_mycelium": "Wet Mycelium", "block.betterend.end_mycelium": "End Mycelium",
"block.betterend.end_moss": "End Moss",
"block.betterend.endstone_dust": "End Stone Dust", "block.betterend.endstone_dust": "End Stone Dust",
"block.betterend.ender_ore": "Ender Ore", "block.betterend.ender_ore": "Ender Ore",
"block.betterend.terminite_block": "Terminite Block", "block.betterend.terminite_block": "Terminite Block",

View file

@ -1,7 +1,8 @@
{ {
"itemGroup.betterend.items": "Улучшенный Край", "itemGroup.betterend.items": "Улучшенный Край",
"block.betterend.wet_mycelium": "Влажный мицелий", "block.betterend.end_mycelium": "Мицелий края",
"block.betterend.end_moss": "Мох края",
"block.betterend.endstone_dust": "Эндерняковая пыль", "block.betterend.endstone_dust": "Эндерняковая пыль",
"block.betterend.ender_ore": "Руда Края", "block.betterend.ender_ore": "Руда Края",
"block.betterend.terminite_block": "Блок Терминита", "block.betterend.terminite_block": "Блок Терминита",

View file

@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "betterend:block/end_moss_side",
"down": "block/end_stone",
"up": "betterend:block/end_moss_top",
"north": "betterend:block/end_moss_side",
"east": "betterend:block/end_moss_side",
"south": "betterend:block/end_moss_side",
"west": "betterend:block/end_moss_side"
}
}

View file

@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "betterend:block/end_mycelium_side",
"down": "block/end_stone",
"up": "betterend:block/end_mycelium_top",
"north": "betterend:block/end_mycelium_side",
"east": "betterend:block/end_mycelium_side",
"south": "betterend:block/end_mycelium_side",
"west": "betterend:block/end_mycelium_side"
}
}

View file

@ -1,12 +0,0 @@
{
"parent": "block/cube",
"textures": {
"particle": "betterend:block/wet_mycelium_side",
"down": "block/end_stone",
"up": "betterend:block/wet_mycelium_top",
"north": "betterend:block/wet_mycelium_side",
"east": "betterend:block/wet_mycelium_side",
"south": "betterend:block/wet_mycelium_side",
"west": "betterend:block/wet_mycelium_side"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "betterend:block/end_moss"
}

View file

@ -0,0 +1,3 @@
{
"parent": "betterend:block/end_mycelium"
}

View file

@ -1,3 +0,0 @@
{
"parent": "betterend:block/wet_mycelium"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB