diff --git a/src/main/java/ru/betterend/BetterEnd.java b/src/main/java/ru/betterend/BetterEnd.java index ae5b8d5e..344090f8 100644 --- a/src/main/java/ru/betterend/BetterEnd.java +++ b/src/main/java/ru/betterend/BetterEnd.java @@ -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(); diff --git a/src/main/java/ru/betterend/blocks/BlockTerrain.java b/src/main/java/ru/betterend/blocks/BlockTerrain.java new file mode 100644 index 00000000..78b791c8 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockTerrain.java @@ -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)); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockWetMycelium.java b/src/main/java/ru/betterend/blocks/BlockWetMycelium.java deleted file mode 100644 index a56e5772..00000000 --- a/src/main/java/ru/betterend/blocks/BlockWetMycelium.java +++ /dev/null @@ -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)); - } -} diff --git a/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java b/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java index 19e0558d..86d64b91 100644 --- a/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java +++ b/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java @@ -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; diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index b51a8196..24afbe84 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -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)); diff --git a/src/main/java/ru/betterend/world/biome/BiomeDefinition.java b/src/main/java/ru/betterend/world/biome/BiomeDefinition.java index 92ec1ee4..003180ac 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeDefinition.java +++ b/src/main/java/ru/betterend/world/biome/BiomeDefinition.java @@ -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> 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; diff --git a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java b/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java index 728c4bf2..0e20d006 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java +++ b/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java @@ -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)); } diff --git a/src/main/java/ru/betterend/world/surface/DoubleBlockSurfaceBuilder.java b/src/main/java/ru/betterend/world/surface/DoubleBlockSurfaceBuilder.java new file mode 100644 index 00000000..3d7df0fe --- /dev/null +++ b/src/main/java/ru/betterend/world/surface/DoubleBlockSurfaceBuilder.java @@ -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 { + 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 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); + } +} diff --git a/src/main/resources/assets/betterend/blockstates/end_moss.json b/src/main/resources/assets/betterend/blockstates/end_moss.json new file mode 100644 index 00000000..4f74cf98 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/end_moss.json @@ -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 } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/end_mycelium.json b/src/main/resources/assets/betterend/blockstates/end_mycelium.json new file mode 100644 index 00000000..b77c0e43 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/end_mycelium.json @@ -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 } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/wet_mycelium.json b/src/main/resources/assets/betterend/blockstates/wet_mycelium.json deleted file mode 100644 index 8b63bc11..00000000 --- a/src/main/resources/assets/betterend/blockstates/wet_mycelium.json +++ /dev/null @@ -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 } - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 4af3a7f4..0fff745c 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -1,7 +1,8 @@ { "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.ender_ore": "Ender Ore", "block.betterend.terminite_block": "Terminite Block", diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 06e06ffd..7014b297 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -1,7 +1,8 @@ { "itemGroup.betterend.items": "Улучшенный Край", - "block.betterend.wet_mycelium": "Влажный мицелий", + "block.betterend.end_mycelium": "Мицелий края", + "block.betterend.end_moss": "Мох края", "block.betterend.endstone_dust": "Эндерняковая пыль", "block.betterend.ender_ore": "Руда Края", "block.betterend.terminite_block": "Блок Терминита", diff --git a/src/main/resources/assets/betterend/models/block/end_moss.json b/src/main/resources/assets/betterend/models/block/end_moss.json new file mode 100644 index 00000000..fac6a47a --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_moss.json @@ -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" + } +} diff --git a/src/main/resources/assets/betterend/models/block/end_mycelium.json b/src/main/resources/assets/betterend/models/block/end_mycelium.json new file mode 100644 index 00000000..b39ce5f8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_mycelium.json @@ -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" + } +} diff --git a/src/main/resources/assets/betterend/models/block/wet_mycelium.json b/src/main/resources/assets/betterend/models/block/wet_mycelium.json deleted file mode 100644 index 4a8444a7..00000000 --- a/src/main/resources/assets/betterend/models/block/wet_mycelium.json +++ /dev/null @@ -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" - } -} diff --git a/src/main/resources/assets/betterend/models/item/end_moss.json b/src/main/resources/assets/betterend/models/item/end_moss.json new file mode 100644 index 00000000..6ba7a8c4 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/end_moss.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/end_moss" +} diff --git a/src/main/resources/assets/betterend/models/item/end_mycelium.json b/src/main/resources/assets/betterend/models/item/end_mycelium.json new file mode 100644 index 00000000..86741517 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/end_mycelium.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/end_mycelium" +} diff --git a/src/main/resources/assets/betterend/models/item/wet_mycelium.json b/src/main/resources/assets/betterend/models/item/wet_mycelium.json deleted file mode 100644 index baa349e4..00000000 --- a/src/main/resources/assets/betterend/models/item/wet_mycelium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "betterend:block/wet_mycelium" -} diff --git a/src/main/resources/assets/betterend/textures/block/end_moss_side.png b/src/main/resources/assets/betterend/textures/block/end_moss_side.png new file mode 100644 index 00000000..041f436c Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/end_moss_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_moss_top.png b/src/main/resources/assets/betterend/textures/block/end_moss_top.png new file mode 100644 index 00000000..13c20b1c Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/end_moss_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_mycelium_side.png b/src/main/resources/assets/betterend/textures/block/end_mycelium_side.png new file mode 100644 index 00000000..1f7dde95 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/end_mycelium_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/end_mycelium_top.png b/src/main/resources/assets/betterend/textures/block/end_mycelium_top.png new file mode 100644 index 00000000..ab0f55e4 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/end_mycelium_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/wet_mycelium_side.png b/src/main/resources/assets/betterend/textures/block/wet_mycelium_side.png deleted file mode 100644 index 3da7c0b2..00000000 Binary files a/src/main/resources/assets/betterend/textures/block/wet_mycelium_side.png and /dev/null differ diff --git a/src/main/resources/assets/betterend/textures/block/wet_mycelium_top.png b/src/main/resources/assets/betterend/textures/block/wet_mycelium_top.png deleted file mode 100644 index c1f29ec9..00000000 Binary files a/src/main/resources/assets/betterend/textures/block/wet_mycelium_top.png and /dev/null differ