From 2061a12aff70dcff24c4e4b75344db0562ecaf87 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 24 Sep 2020 23:20:59 +0300 Subject: [PATCH] New terrain, render fixes --- src/main/java/ru/betterend/BetterEnd.java | 2 + .../ru/betterend/blocks/BlockTerrain.java | 20 ++++++++ .../ru/betterend/blocks/BlockWetMycelium.java | 10 ---- .../mixin/client/BackgroundRendererMixin.java | 7 ++- .../ru/betterend/registry/BlockRegistry.java | 6 ++- .../world/biome/BiomeDefinition.java | 16 +++++++ .../world/biome/BiomeFoggyMushroomland.java | 2 +- .../surface/DoubleBlockSurfaceBuilder.java | 44 ++++++++++++++++++ .../betterend/blockstates/end_moss.json | 10 ++++ .../betterend/blockstates/end_mycelium.json | 10 ++++ .../betterend/blockstates/wet_mycelium.json | 10 ---- .../assets/betterend/lang/en_us.json | 3 +- .../assets/betterend/lang/ru_ru.json | 3 +- .../betterend/models/block/end_moss.json | 12 +++++ .../betterend/models/block/end_mycelium.json | 12 +++++ .../betterend/models/block/wet_mycelium.json | 12 ----- .../betterend/models/item/end_moss.json | 3 ++ .../betterend/models/item/end_mycelium.json | 3 ++ .../betterend/models/item/wet_mycelium.json | 3 -- .../textures/block/end_moss_side.png | Bin 0 -> 2348 bytes .../betterend/textures/block/end_moss_top.png | Bin 0 -> 2102 bytes .../textures/block/end_mycelium_side.png | Bin 0 -> 2189 bytes .../textures/block/end_mycelium_top.png | Bin 0 -> 2182 bytes .../textures/block/wet_mycelium_side.png | Bin 2505 -> 0 bytes .../textures/block/wet_mycelium_top.png | Bin 2097 -> 0 bytes 25 files changed, 147 insertions(+), 41 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockTerrain.java delete mode 100644 src/main/java/ru/betterend/blocks/BlockWetMycelium.java create mode 100644 src/main/java/ru/betterend/world/surface/DoubleBlockSurfaceBuilder.java create mode 100644 src/main/resources/assets/betterend/blockstates/end_moss.json create mode 100644 src/main/resources/assets/betterend/blockstates/end_mycelium.json delete mode 100644 src/main/resources/assets/betterend/blockstates/wet_mycelium.json create mode 100644 src/main/resources/assets/betterend/models/block/end_moss.json create mode 100644 src/main/resources/assets/betterend/models/block/end_mycelium.json delete mode 100644 src/main/resources/assets/betterend/models/block/wet_mycelium.json create mode 100644 src/main/resources/assets/betterend/models/item/end_moss.json create mode 100644 src/main/resources/assets/betterend/models/item/end_mycelium.json delete mode 100644 src/main/resources/assets/betterend/models/item/wet_mycelium.json create mode 100644 src/main/resources/assets/betterend/textures/block/end_moss_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_moss_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_mycelium_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_mycelium_top.png delete mode 100644 src/main/resources/assets/betterend/textures/block/wet_mycelium_side.png delete mode 100644 src/main/resources/assets/betterend/textures/block/wet_mycelium_top.png 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 0000000000000000000000000000000000000000..041f436cce7f820fe0051f0c1eb4fe3dd2e21dfc GIT binary patch literal 2348 zcmcImdsGy46kZ`wF#)A=Pn~oe5!c7;%+3zW&gi1Ji@NF}APMCIW@l#EaUZkpjO;?{ z@l^_jB>^QS1!a<2rr|r3q=RobDQ1|KCi%#+hfj`L{RWn;(@Eo>_MF-I&CK`v?sva? z=bkA@NuJOr{ONFoLea-O(Ubrpg6S-VKf8|#gl4{4kK}5B!pv{cod6AHChDIP?(O=l2G6WgJ@pXMx~j?2V#LM z18kQh4~3#WpHJ=6ss(Qjsv$`d#c&kI5r9C%Jhw#q5w|$FlflG^jF}B)9f4^n z4C{beKr67cM0X7=u)Hm=D^QDtGP^~Ib~BvWWPpJvHP5q@j>c)dmctP}VYMP!j$puw zBoWfa>a-jdhv7tgyDqTbBrx-22j%@8oy!Ug;0T&Tks6$_>8%=s!L$Uz=m`$7S_vGn z*>GHAwPI{MsqbW)>gB=9Lp%S@Dyw2;RjiKF$J+=bjv#eN9MFd7S*sqg;u;1gwKk5R zfmHjHj)eoa`G0e-OFBDfeRd9zKBD*?Fj25cKHAGA<^ZR=(qHJq^ow-v zf2i+L?f+l(0dpBU?atxA1Vv#vA5@+-9i>74S+(|Of1694a4_uTWpK)Zi{PB*+<@8( zrf{zxiE|1?Xg9MdFUOJOJIb%;KUSR= zX6RkNX{ix@y&!jY#IgfK?Lt&}%r$yBq*`9}rfFO4uA0ciJz>ur;Nxx{nW`Spq*50) z9;;I}ygY8kgHU~(*B8&-t+Y*5 zm0r(3J+6W?TDD`_=+a5`x96%FV>FMa_FJ~?*zmHWCx5$f#y*2m6{2^m&eaNN?; zSGy$UcDM5Ib|RE-Ka6Fp4Cl^(ix6{Ncf=;Ph9^`!dvabN1$_lXKP-^~qi~`Ik(>X0M)bDC)h&v4ggUeOEc??JP6C%;S-0W>|T$)ukE@RS)!X2(f!N)W9G*+9$vHX zM2J-JO~SQvqnxj-TW~{HU)}AHGb6G(9Nk=_BRw1G_d{%F1*#<3Y!1klC`S;Y1i4z#s?%k6A(3Qv$u1FewUNuuUM4ppFJYNdpc@ z1u{M=l0bmJTp*Hxa!BF_K%mH92>J^}Vm>H>K^ZKT1A`Bbm1e+_;8^ACL0Rlh!P77d z1q+2nqfuZK3rItY@EnZ_u1 ztfm7d=qWobK@Yl#b(qkEP(qOaw3*Zo#85kqN;ByCg=44?*Wr4cU}zRAvSV2Z~&@iQvpL57{^AU{AN7W1VNNdP}UES2#kBFtZeN^wZ)pEz`1Nup`CAP(Kf{^$L9 z1}$4ei0_LJvLF`%C2x z!P$0TTiW{&yRmmNoM79Rf$dXeYlALxIKx_1%HVk4jc%J-=Uu0~8nSeY$JC^M*WNxs zcH6xk=RG{OJBH!j&Cg!h7t=lB{@1HCfQ9?{&Pgp)i*v!^$%h;|YBqQN+IuqNY2bw~ zA3rlc?5VX>-Ds-Mc3b=^Dx7Rdg~!(1y$PurEq9i`>~bkBS#@3YyW@;7scXwp)Wf04 z(?ZrhIcs%9k``Xuf~NpbC@{SApVeL-Ns zrW1bePtI>aS6TC+%N;l2J+0Crx1YH=ZOiW5rxKd#9)&fIUsw3SxC3>oEwDT%EAT}~ z&hxIqHB*oHASIRcA;vV%KH|4!C%x;R1nyYUE%<)h(x*MCldhJP4d>reM|oR%vb?=6 zmzM9^({RbntTVNjIy(j9xBM6coa!2R&^jkix!d8Js_BVG+qzCH^bPTM`dL zOSo67eS9Lr#p7MiA3nKh+Q*GQg?qF(sd!s&m!EkVT_`9o4KR(St4oiW<=4jCGj;cr z8&Pl93qJcz^BZ2g9NlgxzIAOwxv!I|*3B2}Su%6xFX7=|DT|51ajKH>F3p!CrQ0lP z!>pCt=XmEkZ*)2b)}24(JfbFV?Ai8PC$^hcSa;STDRbu{8Sk9~x%G3BlQ}bbyRBDa zAyxGvaD7TvPoZDYjY0(!kzc&oJZw!>(ZrzE-dC$1KX55(TGw27`#IcT-Dk_eWdtz($4d1sgs=}Rn d<(aYddA3J0UT|^L&1~DBT@@CkED!lC_fO&S7|{R# literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1f7dde95392f29d7555e9eccd9a370ae6838fd66 GIT binary patch literal 2189 zcmbVO3sBQ`7%z$n_!v|1P*2T*dLX1pTH2C8VL;KMrXrS!vY}~`mW;NEO{7IUov#fa zn=%za#oc^NMRY@Vpu$j*o4s2nb8g4o5a(+iI-PFnd`(?iN_9K8IeVAppY-?rzVG+F zuFJCw6Z(e@3zNxY{WJBtZ0R2Ey+V3O-)qVW)Y2`K*Uu1Svc7}7SCDMu=17^WR~c)} z6?2KnIK|oIB+Z!^xy!~&XqhZ2#l@3UAtM4N#=_dQ;EjeOAi&aEaJq^>2tJ)DVDv(!e}rh8Ax*B5`m2oNx)^Z+6COD1%14@boRc6LBIzQ3$HAJED3P6L&Q8j`o;^P1Xf@)wy1EWd^L2*QlD>1O7g^2@co|6(H&@hx zQlwoHYwg6fXGm0b`{)9XiEf|Y=2F_*#Zmxr3GKwURQC>AXp6*~s zk#iV1&e~n5tZsQgdb+nT2|)C8)=qOyA?6tyMn{T_7E~Y#1VS)K5pPr|@c0B=fy5$8 z96`FEgwzT&DUvS+=4jSj{GZT3e(`k9$~g#*mf}!?08Qa$&S4{^T(CCM!oa-U;){YH z@JzcPl6H#8)M-IUwwz^Y+^p7UNDWFsW(~qXDpkA*!bpmNObQfJ(rPn`lIm`I9Y@Xe z)~VZ`{-5?!9IP~4r1hnFq#<~!yPG9dQY1*#6Z|8RMq2zQE1TRkjx0nYVQY~Mk-{I~Y zbV-5#uF{vOXZA`rTv}G%V_-{44}m?)*rny_khbW6FG9^SS&yxmx>RFyE3t-{JScVW z35(g%-ci(U&x;-$TX%jE5(JJlVf@WY$JQ=KM@~*EDOP5WnNhz&!9mb1b2wcDnbe!qWZuZ^AQTbI5iH-voJ#@>i{*cm>9n26R@4>Q#j zi~5Mwj|xg99Jcn2~p{J=$D*WLZT>z}vBScz z%3f48WSPEx8d{nYSN4H{DxA@}AOh4rIElypG3FQ$dLlXH%B`ghyYj3NhBeV|w3S=; z#Dwf`{i$!s!`>;${o=~gMvV+U+xjG&Nx8H8qsOI4?*Y2ca@rQ|b8mPLiI_A0^4_NV z#E3(`xN>%$3Qx+v$516XHC+BNV)#>aL*f+aa**pCAqE_kI_ouk&$i@kwFze? z89(Whcc|qapD5EO+BdI+e^?yUp^gqyxU)M$HqK6}uHN_dH?_b literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ab0f55e478f02ec9a7b1ad7be50500663f78f8d4 GIT binary patch literal 2182 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 MbC$c>7q8v;ABZG?^#A|> 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 c1f29ec9e915002d3d6f28d6b3c56abd3a3c7eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2097 zcmbVN2~ZPP7+x5xfM^kIIYih7+lr9vCO|^AM1+KvfI&_HWs1x0LROM&NEQ;1h)^q1 zFI1|QLkF*-h=@>+0aU6oh=@H@EG-_D;!zIqq841ygfl4%oRYe0OESFVJ-sm5icP){;(Kn8ax?^lzccYi`j`-a++2n z5Tw)TI65y5rAdLfLZJ|Xc@U4sW)N&`riw=OY?an+f07FTFYR$CM@G6nal)# zC9P6vLTl-u3`V1I+g^#*MrW!CD3Z`p=^Bg(%3vhAO(>?8Q#7TOQ-5QJ>DXkA8WC#< zl%_P%6s4F5RQLo7C>9$7;|tD>B~>`3)4Cf4jo%?8C{2i1JeUWwVIiC670u-%K70h` zdB9!>439x&Oe)|gjs7<wJK#)noNdBRazQVVT4p7 zVlk?6ND@adZvy8g2?@5ZFG{evJa2+6CiLKUyiV+s-?rWBM$M&XQ?y^JY5no3A8sb%7oIbIY|MB4aDL4u>%gP@o(!9^_0 z7+C^mjejOz+cRUdIyu3R{zJIOU|K4f)}b0AAcgVbf5|9_(H}Baw7TKk{^_=Pr2J0p(2AVd;UQ1l4=3JyH^R3VVsZ~9tb7<#wKADrK7Y7>b3|f$r`r}USx4^r6D`j@V`lC<5@*wl z;SIHhzL)F;j+>4cu7})_tRIOTxCt+gRi{>@c3u-CZmagbx7)>KsK=?2mu|>Q^B%nK z`=qUW_rX%$@UFWzcIBThds;EDz<sr8%Q3=V zw9sm>%nB(xx85NowxJ!&&fc2_@PDm%*y*%_Ygapyy*;iY=xAx>+8UU^?`)y=KXF@ z8>N?>M8Z7J#3f720q|?7ZOsKwmyPb2V|h_w)1I5QezDE$&@B-e4@E8 zr-r*NYZs!R)b5HVbDPvI(0*usvCpNl7mW?kXV{^)Y;%t#s9K*Bck3$(~8L(>#wUTib8t YtSM>YmHn7pZ2YN9gTf?-1DECf0j;