From 2183fe5829d12b56dacbedce93b8f082996c67dd Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 10 Dec 2020 13:04:11 +0300 Subject: [PATCH] Lanceleaf, more moss variation, translations --- .../ru/betterend/blocks/BlockLanceleaf.java | 53 ++++++++++++++++++ .../betterend/blocks/BlockLanceleafSeed.java | 40 +++++++++++++ .../ru/betterend/blocks/BlockProperties.java | 27 +++++++++ .../blocks/basis/BlockDoublePlant.java | 3 +- .../java/ru/betterend/registry/EndBlocks.java | 5 ++ .../ru/betterend/registry/EndFeatures.java | 2 + .../ru/betterend/util/TranslationHelper.java | 16 +++--- .../betterend/world/biome/BiomeAmberLand.java | 1 + .../world/features/LanceleafFeature.java | 25 +++++++++ .../features/trees/HelixTreeFeature.java | 4 +- .../betterend/blockstates/amber_moss.json | 16 ++++-- .../blockstates/amber_moss_path.json | 16 ++++-- .../betterend/blockstates/lanceleaf.json | 27 +++++++++ .../assets/betterend/lang/en_us.json | 29 +++++++++- .../assets/betterend/lang/ru_ru.json | 29 +++++++++- .../betterend/models/block/amber_moss.json | 12 ---- .../betterend/models/block/amber_moss_1.json | 12 ++++ .../betterend/models/block/amber_moss_2.json | 12 ++++ .../betterend/models/block/amber_moss_3.json | 12 ++++ ..._moss_path.json => amber_moss_path_1.json} | 2 +- .../models/block/amber_moss_path_2.json | 7 +++ .../models/block/amber_moss_path_3.json | 7 +++ .../models/block/lanceleaf_leaf_bottom.json | 31 ++++++++++ .../models/block/lanceleaf_leaf_middle.json | 20 +++++++ .../block/lanceleaf_leaf_pre_bottom.json | 32 +++++++++++ .../models/block/lanceleaf_leaf_pre_top.json | 20 +++++++ .../models/block/lanceleaf_leaf_top.json | 20 +++++++ .../models/block/lanceleaf_stem.json | 31 ++++++++++ .../betterend/models/item/amber_moss.json | 2 +- .../models/item/amber_moss_path.json | 2 +- .../textures/block/amber_grass_path_top.png | Bin 701 -> 0 bytes .../textures/block/amber_moss_path_top.png | Bin 0 -> 2102 bytes .../textures/block/amber_moss_side.png | Bin 312 -> 0 bytes .../textures/block/amber_moss_side_1.png | Bin 0 -> 1788 bytes .../textures/block/amber_moss_side_2.png | Bin 0 -> 1818 bytes .../textures/block/amber_moss_side_3.png | Bin 0 -> 1792 bytes .../textures/block/helix_tree_leaves.png | Bin 270 -> 1811 bytes .../textures/block/lanceleaf_leaf_bottom.png | Bin 0 -> 1742 bytes .../textures/block/lanceleaf_leaf_middle.png | Bin 0 -> 1735 bytes .../textures/block/lanceleaf_leaf_pre_top.png | Bin 0 -> 1948 bytes .../textures/block/lanceleaf_leaf_top.png | Bin 0 -> 2030 bytes .../textures/block/lanceleaf_stem.png | Bin 0 -> 1771 bytes .../textures/block/lanceleaf_stem_top.png | Bin 0 -> 1888 bytes 43 files changed, 480 insertions(+), 35 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockLanceleaf.java create mode 100644 src/main/java/ru/betterend/blocks/BlockLanceleafSeed.java create mode 100644 src/main/java/ru/betterend/world/features/LanceleafFeature.java create mode 100644 src/main/resources/assets/betterend/blockstates/lanceleaf.json delete mode 100644 src/main/resources/assets/betterend/models/block/amber_moss.json create mode 100644 src/main/resources/assets/betterend/models/block/amber_moss_1.json create mode 100644 src/main/resources/assets/betterend/models/block/amber_moss_2.json create mode 100644 src/main/resources/assets/betterend/models/block/amber_moss_3.json rename src/main/resources/assets/betterend/models/block/{amber_moss_path.json => amber_moss_path_1.json} (71%) create mode 100644 src/main/resources/assets/betterend/models/block/amber_moss_path_2.json create mode 100644 src/main/resources/assets/betterend/models/block/amber_moss_path_3.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_leaf_bottom.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_leaf_middle.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_bottom.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_top.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_leaf_top.json create mode 100644 src/main/resources/assets/betterend/models/block/lanceleaf_stem.json delete mode 100644 src/main/resources/assets/betterend/textures/block/amber_grass_path_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/amber_moss_path_top.png delete mode 100644 src/main/resources/assets/betterend/textures/block/amber_moss_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/amber_moss_side_1.png create mode 100644 src/main/resources/assets/betterend/textures/block/amber_moss_side_2.png create mode 100644 src/main/resources/assets/betterend/textures/block/amber_moss_side_3.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_middle.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_pre_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_stem.png create mode 100644 src/main/resources/assets/betterend/textures/block/lanceleaf_stem_top.png diff --git a/src/main/java/ru/betterend/blocks/BlockLanceleaf.java b/src/main/java/ru/betterend/blocks/BlockLanceleaf.java new file mode 100644 index 00000000..50005609 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockLanceleaf.java @@ -0,0 +1,53 @@ +package ru.betterend.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.state.property.IntProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.BlockProperties.PentaShape; +import ru.betterend.blocks.basis.BlockPlant; +import ru.betterend.registry.EndBlocks; + +public class BlockLanceleaf extends BlockPlant { + public static final EnumProperty SHAPE = BlockProperties.PENTA_SHAPE; + public static final IntProperty ROTATION = BlockProperties.ROTATION; + + public BlockLanceleaf() { + super(); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(SHAPE, ROTATION); + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + PentaShape shape = state.get(SHAPE); + if (shape == PentaShape.TOP) { + return world.getBlockState(pos.down()).isOf(this); + } + else if (shape == PentaShape.BOTTOM) { + return world.getBlockState(pos.down()).isOf(EndBlocks.AMBER_MOSS) && world.getBlockState(pos.up()).isOf(this); + } + else { + return world.getBlockState(pos.down()).isOf(this) && world.getBlockState(pos.up()).isOf(this); + } + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (!canPlaceAt(state, world, pos)) { + return Blocks.AIR.getDefaultState(); + } + else { + return state; + } + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockLanceleafSeed.java b/src/main/java/ru/betterend/blocks/BlockLanceleafSeed.java new file mode 100644 index 00000000..07eacedf --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockLanceleafSeed.java @@ -0,0 +1,40 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.BlockPos.Mutable; +import net.minecraft.world.StructureWorldAccess; +import ru.betterend.blocks.BlockProperties.PentaShape; +import ru.betterend.blocks.basis.BlockPlantWithAge; +import ru.betterend.registry.EndBlocks; +import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; + +public class BlockLanceleafSeed extends BlockPlantWithAge { + @Override + public void growAdult(StructureWorldAccess world, Random random, BlockPos pos) { + int height = MHelper.randRange(4, 6, random); + int h = BlocksHelper.upRay(world, pos, height + 2); + if (h < height + 1) { + return; + } + int rotation = random.nextInt(4); + Mutable mut = new Mutable().set(pos); + BlockState plant = EndBlocks.LANCELEAF.getDefaultState().with(BlockProperties.ROTATION, rotation); + BlocksHelper.setWithoutUpdate(world, mut, plant.with(BlockProperties.PENTA_SHAPE, PentaShape.BOTTOM)); + BlocksHelper.setWithoutUpdate(world, mut.move(Direction.UP), plant.with(BlockProperties.PENTA_SHAPE, PentaShape.PRE_BOTTOM)); + for (int i = 2; i < height - 2; i++) { + BlocksHelper.setWithoutUpdate(world, mut.move(Direction.UP), plant.with(BlockProperties.PENTA_SHAPE, PentaShape.MIDDLE)); + } + BlocksHelper.setWithoutUpdate(world, mut.move(Direction.UP), plant.with(BlockProperties.PENTA_SHAPE, PentaShape.PRE_TOP)); + BlocksHelper.setWithoutUpdate(world, mut.move(Direction.UP), plant.with(BlockProperties.PENTA_SHAPE, PentaShape.TOP)); + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.isOf(EndBlocks.AMBER_MOSS); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockProperties.java b/src/main/java/ru/betterend/blocks/BlockProperties.java index 29b92634..ef458715 100644 --- a/src/main/java/ru/betterend/blocks/BlockProperties.java +++ b/src/main/java/ru/betterend/blocks/BlockProperties.java @@ -2,15 +2,18 @@ package ru.betterend.blocks; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.EnumProperty; +import net.minecraft.state.property.IntProperty; import net.minecraft.util.StringIdentifiable; public class BlockProperties { public static final EnumProperty TRIPLE_SHAPE = EnumProperty.of("shape", TripleShape.class); public final static EnumProperty PEDESTAL_STATE = EnumProperty.of("state", PedestalState.class); public static final EnumProperty HYDRALUX_SHAPE = EnumProperty.of("shape", HydraluxShape.class); + public static final EnumProperty PENTA_SHAPE = EnumProperty.of("shape", PentaShape.class); public static final BooleanProperty HAS_ITEM = BooleanProperty.of("has_item"); public static final BooleanProperty HAS_LIGHT = BooleanProperty.of("has_light"); public static final BooleanProperty ACTIVATED = BooleanProperty.of("active"); + public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 3); public static enum TripleShape implements StringIdentifiable { TOP("top"), @@ -89,4 +92,28 @@ public class BlockProperties { return glow; } } + + public static enum PentaShape implements StringIdentifiable { + BOTTOM("bottom"), + PRE_BOTTOM("pre_bottom"), + MIDDLE("middle"), + PRE_TOP("pre_top"), + TOP("top"); + + private final String name; + + PentaShape(String name) { + this.name = name; + } + + @Override + public String asString() { + return name; + } + + @Override + public String toString() { + return name; + } + } } diff --git a/src/main/java/ru/betterend/blocks/basis/BlockDoublePlant.java b/src/main/java/ru/betterend/blocks/basis/BlockDoublePlant.java index f3dc0809..c1290b9e 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockDoublePlant.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockDoublePlant.java @@ -34,6 +34,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import ru.betterend.blocks.BlockProperties; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndTags; @@ -41,7 +42,7 @@ import ru.betterend.util.BlocksHelper; public class BlockDoublePlant extends BlockBaseNotFull implements IRenderTypeable, Fertilizable { private static final VoxelShape SHAPE = Block.createCuboidShape(4, 2, 4, 12, 16, 12); - public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 3); + public static final IntProperty ROTATION = BlockProperties.ROTATION; public static final BooleanProperty TOP = BooleanProperty.of("top"); public BlockDoublePlant() { diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 0bff39e5..340c0eb6 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -36,6 +36,8 @@ import ru.betterend.blocks.BlockHydraluxPetalColored; import ru.betterend.blocks.BlockHydraluxSapling; import ru.betterend.blocks.BlockHydrothermalVent; import ru.betterend.blocks.BlockLacugroveSapling; +import ru.betterend.blocks.BlockLanceleaf; +import ru.betterend.blocks.BlockLanceleafSeed; import ru.betterend.blocks.BlockMengerSponge; import ru.betterend.blocks.BlockMengerSpongeWet; import ru.betterend.blocks.BlockMossyGlowshroomCap; @@ -173,6 +175,9 @@ public class EndBlocks { public static final Block BLUE_VINE_LANTERN = registerBlock("blue_vine_lantern", new BlockBlueVineLantern()); public static final Block BLUE_VINE_FUR = registerBlock("blue_vine_fur", new BlockFur(BLUE_VINE_SEED, 15, 3)); + public static final Block LANCELEAF_SEED = registerBlock("lanceleaf_seed", new BlockLanceleafSeed()); + public static final Block LANCELEAF = registerBlockNI("lanceleaf", new BlockLanceleaf()); + public static final Block BUBBLE_CORAL = registerBlock("bubble_coral", new BlockBubbleCoral()); public static final Block MENGER_SPONGE = registerBlock("menger_sponge", new BlockMengerSponge()); public static final Block MENGER_SPONGE_WET = registerBlock("menger_sponge_wet", new BlockMengerSpongeWet()); diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index e9630a76..deb59dc8 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -20,6 +20,7 @@ import ru.betterend.world.features.EndLilyFeature; import ru.betterend.world.features.EndLotusFeature; import ru.betterend.world.features.EndLotusLeafFeature; import ru.betterend.world.features.HydraluxFeature; +import ru.betterend.world.features.LanceleafFeature; import ru.betterend.world.features.MengerSpongeFeature; import ru.betterend.world.features.SinglePlantFeature; import ru.betterend.world.features.UnderwaterPlantFeature; @@ -70,6 +71,7 @@ public class EndFeatures { public static final EndFeature BUSHY_GRASS = new EndFeature("bushy_grass", new SinglePlantFeature(EndBlocks.BUSHY_GRASS, 8, false), 20); public static final EndFeature BUSHY_GRASS_WG = new EndFeature("bushy_grass_wg", new SinglePlantFeature(EndBlocks.BUSHY_GRASS, 5), 10); public static final EndFeature AMBER_GRASS = new EndFeature("amber_grass", new SinglePlantFeature(EndBlocks.AMBER_GRASS, 6), 9); + public static final EndFeature LANCELEAF = new EndFeature("lanceleaf", new LanceleafFeature(), 1); // Vines // public static final EndFeature DENSE_VINE = new EndFeature("dense_vine", new VineFeature(EndBlocks.DENSE_VINE, 24), 3); diff --git a/src/main/java/ru/betterend/util/TranslationHelper.java b/src/main/java/ru/betterend/util/TranslationHelper.java index 8c4b13ae..bc13490f 100644 --- a/src/main/java/ru/betterend/util/TranslationHelper.java +++ b/src/main/java/ru/betterend/util/TranslationHelper.java @@ -26,13 +26,15 @@ public class TranslationHelper { JsonObject translationEn = gson.fromJson(new InputStreamReader(streamEn), JsonObject.class); JsonObject translationRu = gson.fromJson(new InputStreamReader(streamRu), JsonObject.class); - EndItems.getModBlocks().forEach((block) -> { - String name = block.getName().getString(); - if (!translationEn.has(name)) { - missingNamesEn.add(name); - } - if (!translationRu.has(name)) { - missingNamesRu.add(name); + Registry.BLOCK.forEach((block) -> { + if (Registry.BLOCK.getId(block).getNamespace().equals(BetterEnd.MOD_ID)) { + String name = block.getName().getString(); + if (!translationEn.has(name)) { + missingNamesEn.add(name); + } + if (!translationRu.has(name)) { + missingNamesRu.add(name); + } } }); diff --git a/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java b/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java index df8238e9..a68d6c51 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java +++ b/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java @@ -15,6 +15,7 @@ public class BiomeAmberLand extends EndBiome { .addFeature(EndFeatures.AMBER_ORE) .addFeature(EndFeatures.END_LAKE_RARE) .addFeature(EndFeatures.HELIX_TREE) + .addFeature(EndFeatures.LANCELEAF) .addFeature(EndFeatures.AMBER_GRASS) .addFeature(EndFeatures.CHARNIA_ORANGE) .addFeature(EndFeatures.CHARNIA_RED) diff --git a/src/main/java/ru/betterend/world/features/LanceleafFeature.java b/src/main/java/ru/betterend/world/features/LanceleafFeature.java new file mode 100644 index 00000000..5a2ab860 --- /dev/null +++ b/src/main/java/ru/betterend/world/features/LanceleafFeature.java @@ -0,0 +1,25 @@ +package ru.betterend.world.features; + +import java.util.Random; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; +import ru.betterend.blocks.basis.BlockPlantWithAge; +import ru.betterend.registry.EndBlocks; + +public class LanceleafFeature extends ScatterFeature { + public LanceleafFeature() { + super(5); + } + + @Override + public boolean canGenerate(StructureWorldAccess world, Random random, BlockPos center, BlockPos blockPos, float radius) { + return EndBlocks.LANCELEAF_SEED.canPlaceAt(AIR, world, blockPos); + } + + @Override + public void generate(StructureWorldAccess world, Random random, BlockPos blockPos) { + BlockPlantWithAge seed = ((BlockPlantWithAge) EndBlocks.LANCELEAF_SEED); + seed.growAdult(world, random, blockPos); + } +} diff --git a/src/main/java/ru/betterend/world/features/trees/HelixTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/HelixTreeFeature.java index 2c03f536..defcb8f1 100644 --- a/src/main/java/ru/betterend/world/features/trees/HelixTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/HelixTreeFeature.java @@ -74,10 +74,10 @@ public class HelixTreeFeature extends DefaultFeature { for (int i = 0; i <= 20; i++) { float radius = i * 0.1F - 1; radius *= radius; - radius = (1 - radius) * 4F * scale; + radius = (1 - radius) * 8F * scale; dx = (float) Math.sin(i * 0.25F + angle) * radius; dz = (float) Math.cos(i * 0.25F + angle) * radius; - spline.add(new Vector3f(dx, i * scale, dz)); + spline.add(new Vector3f(dx, i * scale * 1.2F, dz)); } Vector3f start = new Vector3f(); diff --git a/src/main/resources/assets/betterend/blockstates/amber_moss.json b/src/main/resources/assets/betterend/blockstates/amber_moss.json index 7ac1176a..7b9b1ae7 100644 --- a/src/main/resources/assets/betterend/blockstates/amber_moss.json +++ b/src/main/resources/assets/betterend/blockstates/amber_moss.json @@ -1,10 +1,18 @@ { "variants": { "": [ - { "model": "betterend:block/amber_moss" }, - { "model": "betterend:block/amber_moss", "y": 90 }, - { "model": "betterend:block/amber_moss", "y": 180 }, - { "model": "betterend:block/amber_moss", "y": 270 } + { "model": "betterend:block/amber_moss_1" }, + { "model": "betterend:block/amber_moss_1", "y": 90 }, + { "model": "betterend:block/amber_moss_1", "y": 180 }, + { "model": "betterend:block/amber_moss_1", "y": 270 }, + { "model": "betterend:block/amber_moss_2" }, + { "model": "betterend:block/amber_moss_2", "y": 90 }, + { "model": "betterend:block/amber_moss_2", "y": 180 }, + { "model": "betterend:block/amber_moss_2", "y": 270 }, + { "model": "betterend:block/amber_moss_3" }, + { "model": "betterend:block/amber_moss_3", "y": 90 }, + { "model": "betterend:block/amber_moss_3", "y": 180 }, + { "model": "betterend:block/amber_moss_3", "y": 270 } ] } } diff --git a/src/main/resources/assets/betterend/blockstates/amber_moss_path.json b/src/main/resources/assets/betterend/blockstates/amber_moss_path.json index 05c91bc5..6f1ff8c6 100644 --- a/src/main/resources/assets/betterend/blockstates/amber_moss_path.json +++ b/src/main/resources/assets/betterend/blockstates/amber_moss_path.json @@ -1,10 +1,18 @@ { "variants": { "": [ - { "model": "betterend:block/amber_moss_path" }, - { "model": "betterend:block/amber_moss_path", "y": 90 }, - { "model": "betterend:block/amber_moss_path", "y": 180 }, - { "model": "betterend:block/amber_moss_path", "y": 270 } + { "model": "betterend:block/amber_moss_path_1" }, + { "model": "betterend:block/amber_moss_path_1", "y": 90 }, + { "model": "betterend:block/amber_moss_path_1", "y": 180 }, + { "model": "betterend:block/amber_moss_path_1", "y": 270 }, + { "model": "betterend:block/amber_moss_path_2" }, + { "model": "betterend:block/amber_moss_path_2", "y": 90 }, + { "model": "betterend:block/amber_moss_path_2", "y": 180 }, + { "model": "betterend:block/amber_moss_path_2", "y": 270 }, + { "model": "betterend:block/amber_moss_path_3" }, + { "model": "betterend:block/amber_moss_path_3", "y": 90 }, + { "model": "betterend:block/amber_moss_path_3", "y": 180 }, + { "model": "betterend:block/amber_moss_path_3", "y": 270 } ] } } diff --git a/src/main/resources/assets/betterend/blockstates/lanceleaf.json b/src/main/resources/assets/betterend/blockstates/lanceleaf.json new file mode 100644 index 00000000..077a1f42 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/lanceleaf.json @@ -0,0 +1,27 @@ +{ + "variants": { + "rotation=0,shape=top": { "model": "betterend:block/lanceleaf_leaf_top" }, + "rotation=0,shape=pre_top": { "model": "betterend:block/lanceleaf_leaf_pre_top" }, + "rotation=0,shape=middle": { "model": "betterend:block/lanceleaf_leaf_middle" }, + "rotation=0,shape=pre_bottom": { "model": "betterend:block/lanceleaf_leaf_pre_bottom" }, + "rotation=0,shape=bottom": { "model": "betterend:block/lanceleaf_leaf_bottom" }, + + "rotation=1,shape=top": { "model": "betterend:block/lanceleaf_leaf_top", "y": 90 }, + "rotation=1,shape=pre_top": { "model": "betterend:block/lanceleaf_leaf_pre_top", "y": 90 }, + "rotation=1,shape=middle": { "model": "betterend:block/lanceleaf_leaf_middle", "y": 90 }, + "rotation=1,shape=pre_bottom": { "model": "betterend:block/lanceleaf_leaf_pre_bottom", "y": 90 }, + "rotation=1,shape=bottom": { "model": "betterend:block/lanceleaf_leaf_bottom", "y": 90 }, + + "rotation=2,shape=top": { "model": "betterend:block/lanceleaf_leaf_top", "y": 180 }, + "rotation=2,shape=pre_top": { "model": "betterend:block/lanceleaf_leaf_pre_top", "y": 180 }, + "rotation=2,shape=middle": { "model": "betterend:block/lanceleaf_leaf_middle", "y": 180 }, + "rotation=2,shape=pre_bottom": { "model": "betterend:block/lanceleaf_leaf_pre_bottom", "y": 180 }, + "rotation=2,shape=bottom": { "model": "betterend:block/lanceleaf_leaf_bottom", "y": 180 }, + + "rotation=3,shape=top": { "model": "betterend:block/lanceleaf_leaf_top", "y": 270 }, + "rotation=3,shape=pre_top": { "model": "betterend:block/lanceleaf_leaf_pre_top", "y": 270 }, + "rotation=3,shape=middle": { "model": "betterend:block/lanceleaf_leaf_middle", "y": 270 }, + "rotation=3,shape=pre_bottom": { "model": "betterend:block/lanceleaf_leaf_pre_bottom", "y": 270 }, + "rotation=3,shape=bottom": { "model": "betterend:block/lanceleaf_leaf_bottom", "y": 270 } + } +} diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 6312ed4a..9ac83d8a 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -428,5 +428,32 @@ "item.betterend.gelatine": "Gelatine", "item.betterend.sweet_berry_jelly": "Sweet Berry Jelly", - "item.betterend.shadow_berry_jelly": "Shadow Berry Jelly" + "item.betterend.shadow_berry_jelly": "Shadow Berry Jelly", + + "block.betterend.amber_moss": "Amber Moss", + "block.betterend.amber_moss_path": "Amber Moss Path", + "block.betterend.helix_tree_bark": "Helix Tree Bark", + "block.betterend.helix_tree_barrel": "Helix Tree Barrel", + "block.betterend.helix_tree_bookshelf": "Helix Tree Bookshelf", + "block.betterend.helix_tree_button": "Helix Tree Button", + "block.betterend.helix_tree_chest": "Helix Tree Chest", + "block.betterend.helix_tree_crafting_table": "Helix Tree Crafting Table", + "block.betterend.helix_tree_door": "Helix Tree Door", + "block.betterend.helix_tree_fence": "Helix Tree Fence", + "block.betterend.helix_tree_gate": "Helix Tree Gate", + "block.betterend.helix_tree_ladder": "Helix Tree Ladder", + "block.betterend.helix_tree_leaves": "Helix Tree Leaves", + "block.betterend.helix_tree_log": "Helix Tree Log", + "block.betterend.helix_tree_planks": "Helix Tree Planks", + "block.betterend.helix_tree_plate": "Helix Tree Plate", + "block.betterend.helix_tree_sapling": "Helix Tree Sapling", + "block.betterend.helix_tree_sign": "Helix Tree Sign", + "block.betterend.helix_tree_slab": "Helix Tree Slab", + "block.betterend.helix_tree_stairs": "Helix Tree Stairs", + "block.betterend.helix_tree_stripped_bark": "Helix Tree Stripped Bark", + "block.betterend.helix_tree_stripped_log": "Helix Tree Stripped Log", + "block.betterend.helix_tree_trapdoor": "Helix Tree Trapdoor", + "block.betterend.lanceleaf": "Lanceleaf", + "block.betterend.lanceleaf_seed": "Lanceleaf Seed", + "block.betterend.hydralux": "Hydralux" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 35f48b84..0193b0e8 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -430,5 +430,32 @@ "item.betterend.gelatine": "Желатин", "item.betterend.sweet_berry_jelly": "Желе из сладких ягод", - "item.betterend.shadow_berry_jelly": "Желе из теневой ягоды" + "item.betterend.shadow_berry_jelly": "Желе из теневой ягоды", + + "block.betterend.amber_moss": "Янтарный мох", + "block.betterend.amber_moss_path": "Тропа из янтарного мха", + "block.betterend.helix_tree_bark": "Кора закрученного дерева", + "block.betterend.helix_tree_barrel": "Бочка из закрученного дерева", + "block.betterend.helix_tree_bookshelf": "Книжные полки из закрученного дерева", + "block.betterend.helix_tree_button": "Кнопка из закрученного дерева", + "block.betterend.helix_tree_chest": "Сундук из закрученного дерева", + "block.betterend.helix_tree_crafting_table": "Верстак из закрученного дерева", + "block.betterend.helix_tree_door": "Дверь из закрученного дерева", + "block.betterend.helix_tree_fence": "Забор из закрученного дерева", + "block.betterend.helix_tree_gate": "Калитка из закрученного дерева", + "block.betterend.helix_tree_ladder": "Лестница из закрученного дерева", + "block.betterend.helix_tree_leaves": "Листья из закрученного дерева", + "block.betterend.helix_tree_log": "Бревно закрученного дерева", + "block.betterend.helix_tree_planks": "Доски закрученного дерева", + "block.betterend.helix_tree_plate": "Нажимная плита из закрученного дерева", + "block.betterend.helix_tree_sapling": "Саженец закрученного дерева", + "block.betterend.helix_tree_sign": "Табличка из закрученного дерева", + "block.betterend.helix_tree_slab": "Плита из закрученного дерева", + "block.betterend.helix_tree_stairs": "Ступени из закрученного дерева", + "block.betterend.helix_tree_stripped_bark": "Обтёсанная кора закрученного дерева", + "block.betterend.helix_tree_stripped_log": "Обтёсанное бревно закрученного дерева", + "block.betterend.helix_tree_trapdoor": "Люк из закрученного дерева", + "block.betterend.lanceleaf": "Ланцелист", + "block.betterend.lanceleaf_seed": "Семечко ланцелиста", + "block.betterend.hydralux": "Гидралюкс" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/amber_moss.json b/src/main/resources/assets/betterend/models/block/amber_moss.json deleted file mode 100644 index b1f69f5a..00000000 --- a/src/main/resources/assets/betterend/models/block/amber_moss.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "block/cube", - "textures": { - "down": "block/end_stone", - "east": "betterend:block/amber_moss_side", - "north": "betterend:block/amber_moss_side", - "particle": "betterend:block/amber_moss_side", - "south": "betterend:block/amber_moss_side", - "up": "betterend:block/amber_moss_top", - "west": "betterend:block/amber_moss_side" - } -} diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_1.json b/src/main/resources/assets/betterend/models/block/amber_moss_1.json new file mode 100644 index 00000000..81a60dbf --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/amber_moss_1.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "block/end_stone", + "east": "betterend:block/amber_moss_side_1", + "north": "betterend:block/amber_moss_side_1", + "particle": "betterend:block/amber_moss_side_1", + "south": "betterend:block/amber_moss_side_1", + "up": "betterend:block/amber_moss_top", + "west": "betterend:block/amber_moss_side_1" + } +} diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_2.json b/src/main/resources/assets/betterend/models/block/amber_moss_2.json new file mode 100644 index 00000000..ae43d21b --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/amber_moss_2.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "block/end_stone", + "east": "betterend:block/amber_moss_side_2", + "north": "betterend:block/amber_moss_side_2", + "particle": "betterend:block/amber_moss_side_2", + "south": "betterend:block/amber_moss_side_2", + "up": "betterend:block/amber_moss_top", + "west": "betterend:block/amber_moss_side_2" + } +} diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_3.json b/src/main/resources/assets/betterend/models/block/amber_moss_3.json new file mode 100644 index 00000000..d11d3356 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/amber_moss_3.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "block/end_stone", + "east": "betterend:block/amber_moss_side_3", + "north": "betterend:block/amber_moss_side_3", + "particle": "betterend:block/amber_moss_side_3", + "south": "betterend:block/amber_moss_side_3", + "up": "betterend:block/amber_moss_top", + "west": "betterend:block/amber_moss_side_3" + } +} diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_path.json b/src/main/resources/assets/betterend/models/block/amber_moss_path_1.json similarity index 71% rename from src/main/resources/assets/betterend/models/block/amber_moss_path.json rename to src/main/resources/assets/betterend/models/block/amber_moss_path_1.json index 386d0b10..f4222fe8 100644 --- a/src/main/resources/assets/betterend/models/block/amber_moss_path.json +++ b/src/main/resources/assets/betterend/models/block/amber_moss_path_1.json @@ -1,7 +1,7 @@ { "parent": "betterend:block/path", "textures": { "top": "betterend:block/amber_moss_path_top", - "side": "betterend:block/amber_moss_side", + "side": "betterend:block/amber_moss_side_1", "bottom": "block/end_stone" } } diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_path_2.json b/src/main/resources/assets/betterend/models/block/amber_moss_path_2.json new file mode 100644 index 00000000..a4ec7e23 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/amber_moss_path_2.json @@ -0,0 +1,7 @@ +{ "parent": "betterend:block/path", + "textures": { + "top": "betterend:block/amber_moss_path_top", + "side": "betterend:block/amber_moss_side_2", + "bottom": "block/end_stone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/amber_moss_path_3.json b/src/main/resources/assets/betterend/models/block/amber_moss_path_3.json new file mode 100644 index 00000000..99b347ed --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/amber_moss_path_3.json @@ -0,0 +1,7 @@ +{ "parent": "betterend:block/path", + "textures": { + "top": "betterend:block/amber_moss_path_top", + "side": "betterend:block/amber_moss_side_3", + "bottom": "block/end_stone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_bottom.json b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_bottom.json new file mode 100644 index 00000000..70a5dea2 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_bottom.json @@ -0,0 +1,31 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_stem", + "texture": "betterend:block/lanceleaf_stem" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX10", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_middle.json b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_middle.json new file mode 100644 index 00000000..60b78214 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_middle.json @@ -0,0 +1,20 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_leaf_middle", + "texture": "betterend:block/lanceleaf_leaf_middle" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_bottom.json b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_bottom.json new file mode 100644 index 00000000..fd164a20 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_bottom.json @@ -0,0 +1,32 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_leaf_bottom", + "texture": "betterend:block/lanceleaf_stem_top", + "leaf": "betterend:block/lanceleaf_leaf_bottom" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + }, + { + "__comment": "PlaneX10", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_top.json b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_top.json new file mode 100644 index 00000000..017de9c1 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_pre_top.json @@ -0,0 +1,20 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_leaf_pre_top", + "texture": "betterend:block/lanceleaf_leaf_pre_top" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_top.json b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_top.json new file mode 100644 index 00000000..6f09003b --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_leaf_top.json @@ -0,0 +1,20 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_leaf_top", + "texture": "betterend:block/lanceleaf_leaf_top" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lanceleaf_stem.json b/src/main/resources/assets/betterend/models/block/lanceleaf_stem.json new file mode 100644 index 00000000..70a5dea2 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lanceleaf_stem.json @@ -0,0 +1,31 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/lanceleaf_stem", + "texture": "betterend:block/lanceleaf_stem" + }, + "elements": [ + { + "__comment": "PlaneX10", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX10", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/amber_moss.json b/src/main/resources/assets/betterend/models/item/amber_moss.json index 66b13b8b..4124c24c 100644 --- a/src/main/resources/assets/betterend/models/item/amber_moss.json +++ b/src/main/resources/assets/betterend/models/item/amber_moss.json @@ -1,3 +1,3 @@ { - "parent": "betterend:block/amber_moss" + "parent": "betterend:block/amber_moss_1" } diff --git a/src/main/resources/assets/betterend/models/item/amber_moss_path.json b/src/main/resources/assets/betterend/models/item/amber_moss_path.json index 2d67d753..8db622d6 100644 --- a/src/main/resources/assets/betterend/models/item/amber_moss_path.json +++ b/src/main/resources/assets/betterend/models/item/amber_moss_path.json @@ -1,3 +1,3 @@ { - "parent": "betterend:block/amber_moss_path" + "parent": "betterend:block/amber_moss_path_1" } diff --git a/src/main/resources/assets/betterend/textures/block/amber_grass_path_top.png b/src/main/resources/assets/betterend/textures/block/amber_grass_path_top.png deleted file mode 100644 index d306a97dab2a787e2e2bd488bb363282457ffbd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&#bdpsV` za<-rEi+=ri+7D5hDCbS~bWW|Yl$HOj=P$kv?pS{+Idg4?$Id?c{<*Cy`s1a@QtkXe zDc6$)g8%&Y{cI-N^=f^;3jvcn&!1g}X1~7Q9;=2u`R--;<}C%1PH1_3)Apvw1tJlt zIA6>ZL6oZAt#lG;E#>SSB5VMn`M2MMahm61ejXnVmL*zg#l33-VwCRhN;fz*9b?zh zAMzoMRa|i9EMX9(*=D)#>mwk_$;sy3a&uo&pwp)lVmdDrOvbWqy1Rew006xKGhDs? z$^>3jw!Hb=bY5^;6uPS$40w0FWQfsX7S{)hQW0Y~C1mI`MH%ODPG@n}_kE<}?fd0m zFqRb3gc45T7?wAWk&fG@t+$);STGTQK-=ts}CQC z!OXtQndO>u{`QX#iDFp}R7vy(yEaXvQp%cMY3f}>eaJ_N6DO>?-5%RMizOm4T`1;- zYYuj3kFDXHXD11vf+#&K*N4XEY6YV+nI?c}M;QgzxtJy+X*@x1uxsV~ zv^Y@&5Ex)_xj>}5I&cPgF8})N4NX!NpROMEZ5^11tlVmIiIyY#^QQ?+>5Im201ryJ7mWxm`y^j?Qz}RwYBYW2a~Bw zbfAK`h>?seCW}+ZL>b$haSkC2wn>7T%;)BqdywJO4MoP5;r>02o9~%j((AwN_y4}{ z_vo(`IoZ!oik%({LC~bEOq&CoCu_&}81P@c!(#%c2~y^21%l$+wPQ@pqWBpQH0~7d z%vba6FH(%?*U_x#;&dUu1kezax+EmgjF(ek7gxj!R^7^YEFa zGM8JL?PN;5jD;aQl(2{VS9F+z{x1cjR@y##o z#tsZ5f@i z;37JwIRQ}1U^hh2$l8B-;moQV{bP5Z zYaUowG5A~W_U;qD>ZgU9smmuGdZm6`?15clb53)nm9r|}ZoPmzGvE23Ha)rGWXzmR zM|ODosxDnAbZleg3lexNUom1t+=oCH%ton-V+Y9C<4&jkm5B9y!}J*B*cJ z#F!_WhH7j>!^WhUxovwIk`m9f6*erleYEPTJhk|(vg&IW3s+ydoZ5YDc2X>}O+J2p zU{}vz^Qr(e`Q~3~1!Pr6{?=KGktw=$z7AVU_TQg=K0i>qQyRKZwRvc|_Yhq^&_4OS zW4ETk&VlunI@i*D`%?3(`)1bG4yM1%TYBr1r*6HE!_x2Ldx(zK+1`ZaAKL4hcivE| zlUJ5)E0{a*`lZTg2~7tAJ@fT@K6I3~6)c9J9tdA*xz+J7otb2|y# zf9Yty%Z-&lJy+0Aym2qcahA=Y*3fI;pX&Xh;m_pZtMgjAdn+#lmLD7J?0d6B_Ac1} zDz5+b@W82x^4bbdo_Aya#Ll(wW&X73wjx4@&JNGPFG`E*hc^h?mpyA)wykk#;T!(| D4<_vk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/amber_moss_side.png b/src/main/resources/assets/betterend/textures/block/amber_moss_side.png deleted file mode 100644 index 62809096eca48342eb51e2d027e4a2be1acb578e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFiUf*|3=Wu8a(b)P-fef8Fqd(W0Uygv2aw=Lg( z?FA}_fGIcj>H=Au1s;*b3=DjSK$uZf!>a)(IMLI^F+}1r?}>xFO$HKd7uGMj=Y65r z&?mu)vA4P+E0Hnh(B5r{4BopMgeS~D5PQ?>{zu1Yu4h+Qu^%7Y( zy&_H#^JDxza}V^FFEh1v-f!*exIN-b@{JP$`_3KP_L=jvw$HSjhS$nJKic=kZ%c7& yn!j>>j*Q`QfAK>b7RAR3UwZSw$Ifl?8UDNfOa#pI(}BKbVDNPHb6Mw<&;$TN^mU>D diff --git a/src/main/resources/assets/betterend/textures/block/amber_moss_side_1.png b/src/main/resources/assets/betterend/textures/block/amber_moss_side_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c455cb33d3cb13046bda2bc26a1db1ba2a42f94 GIT binary patch literal 1788 zcmbVN3v3f*96yG}ZS0jzhQgTV4G0Xb_vmBo*}}HAu&SM7s{s}syWM?VkF~wq-F5AT zi*rVhEy|XOAuvH4A;1_@K?#z8k%?de4&)&iBM*ZnBn(+VVZOfWx&{SAV^xjHpZ--nKlVQ9vTun z3)O}0XBkcm=vZE?2D(T&WT7YR|{0M8q^3u8#cKAAchLO4O?JzlWxfld_qa1 z3@RE+JzQfgXW_9qvr%h=fdm1dvS=jW4=PN=hDCW9xYj-s7#fABwKl9s6NoN!m!Wo1 z2B=YI!a2%7qXiZnWg;!KVHQf0Q~^O25R@J#DTXvLdJ7tRFepvty-c}dZcG;3*)X4~ zN(@1S!(m-muM_1Og0fgF1W6M#jY9;kGz3*Pf(MnnQ3eN4I9ZTXK@6fABU>$oR2v30 z9Wfyw#c6{|%uUc?M1++HN=IrYMS(mQ$4MdC9~I7X1n`3Z2&xLiQgN*06ID_1iGM>K zKfXr*bgkPRmvLWR0)e;)MRnFgGhz<8FIw?5NPs8@iWrhP;H-yg=4sYQj9mt-D#{*F z^p6IrY*b~`Zr1{1MyD?jg1i`3X54iLI9L_fFq))EoT71x^iVKxMn+H1B=rnQjzHZa zFL)dN3Z)r?i7{I4fx@ieS(W`)FwZewQ4X-sW+A}V0744ZU})Tvj9v7LG87E8(?_*% zyBSwdQQ05|Tn-xs&DIG5&zM;=MOPb0+^eT}yZ~k-ZZ;ZBxYuhonasfGWhrX(zC+|f zT5w12^Z)bybFu)7i}gP+k5+P8Rxl-k0^`*XD~bwG7hCxSG@1wu%V`O2!#FLnfX8B= zg$MS)2yNI0An8AZdjzJ4UNy|hpr{6V>%U|a0re-eY8)|z__LMKv%4yH6b{>gwv6{7 zxQTZ%5QObZhJEVG$<9v^WK5sSQRJE4;hs-DbEqog*n(bHYwwKSQzftDr{OIOv%RP1 z=dn4Cu7@XV?(9^hIw|wT=C%tL-sx<8`J=VX*_H2p^>o{7&d$Tje{7mPX*l)bwQu%^ z2X&XE5H|3_P|oT4gX5j9{sY%)N>2h>HR&|)svalkEj0H{{6V2+?^*crk{C! Vd=6>bu~Pd#xtyhrUBy)`e*iUQX&nFn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/amber_moss_side_2.png b/src/main/resources/assets/betterend/textures/block/amber_moss_side_2.png new file mode 100644 index 0000000000000000000000000000000000000000..edaa6accd13fd9200919973143d37fd84994466a GIT binary patch literal 1818 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 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFsW z8=R{~sc~+h7$KmeS-}l-;eZIy2$EkA7HP%@6x0no9B;!GP7Pov$J(&!JSX84?ZC^G z?vcQ@J>@QDkB_mkSi!Ssewcy;0ie)mIN;}HDs00dycArkpK%P0Kop-1D^dlbHO>mu zE=T~))0wmkY1E@;tBy1gR=x2VR8Np*oG|00K}(PnVWJFHH2Pprn#9&pRgRLVEV#2_ zUPTcp91n#;x{yI9NFJQDTCF&t$Mt$GL}=xDUZKNUUe1XzIDpJZoTzXDkE)EcTc}fP z7}Rvxgn$^Q<>jcGpu_MmE#jn(P)&*eStgDX>m+|fILqL`4+4N!WQZl>Sm-6EGY-Ei zZ6FXw%Sv$&Y818Yu4vg+F9N&@$U>dOfZ`yOm=jY>^a_d~dxd|nBYqsWMx^W#pcO%K z34%WssEQa1YPYL_v7k>@b37}AkqqqR=0l3I}BGQ~rs*INvnrA?n!-hdsbsWc1 z7L&!mum)OdFUq83J&hf8KmJE@n3geT{t;%@>$~vX zR%3I={<$w_uPxeN`sVGbV>!WVokQZR5{SIaJZNJ zz&CX)zx=Dc4HNBy!*d6Eax1)v>&6cr@9b&0uF3eg&6s+5>gG?|3)ZurK9Rfxy65<& zvnO8A8Q-4@9NqBl52nHPX})W6pc^S|HaF~Z6>dL0Q+u(Gc_6LvRC>qRwwtRKt25u2 zZ`u*Gll{{VO}5yav#WNaZ}p`&e%N{_ZSZ0VoB73xD`zt1?ccsr8%#Q%ay|FK-)`SQ zT3#8h$;wYC9J+LCaPuckGiwQC<|Ohvf`*5$9epi9vt;rY2D^7|4EhET-P)3_hOw(d Q>K~`9xZLsCbGw`W1QNkq0{{R3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_middle.png b/src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa8522a9e425586aacc90a8c2b50817c960df87 GIT binary patch literal 1735 zcmbVNe@q)y9KQ+~2$HCfh0FwwBRF)l_oH2D4>~9<45Z~(Yham)JMLcTNqcwR9kfMJ zhLCNMZEP~Pp<8s>KSUu;@E@DGkvM+@*#^lLG0UPE(~xDN!NqOr=DX51#!Q{N#PHYE;a8QD11SziwOAOlyRJ0v*@PZ9nj-J9$p0i=C8{LFkasWSH z+am){PlK23>13@ORZtP4Q4${nkcl?Y9P&ol`@r}6hW5aL@7=h^#n;1X4+^);|~U<$()aFan{6T!JQ5B ztExofcqkMygp3AJ?!ZZ_)ru1oPEmS@&?^x^Wx{$vDNHapfx^nXr1GMGYK%;~*rnPq zsOhQ+K`BWqC~-GIhv8vH!bt<6nG^$ZY!WAR$$^+~j>SO$1c9I`5KAVp&`WN25`ItG zU@(bR)aq`iQQWqBq7`pM0(c8h#4ecy)!k5HVL~yL7mfvK~)Vr&(WmC zY@y7ANe?vvdZW(-R~FW%r+h4EHxca?pM^=>cZzJ67R1DT?tk8IlzCW0OyI$Jl0l*! zVnCGLA_u)})KWN>N^~u+z<5RCMd1N2##aFzjb#tbuv&uKFjk8!;IQ~-{((KSN*nS6 zNcu0~UWF;5PYp3Luy;T&-cLs1P=8#j##K}BzgrnQ`%C2};IJKN%VZydn`9>g0&HJ0 z>{HqAzc7p-x}G|x-D{aS;)y8#4w@1;8naAy>(F4ZtjhjtgrA?<(_MIvZN2Tn2};vo@1tfp7Y$S>1{Z8d5FJoIb!QAc(!zZF4CE~P3(Pc(!wv^ z_TZ})m8FCg>InzS#v8s`qB zuXW{@6l{3&q0uH+>t~i+?+qux5|3=scXPqp7qY`{4w&4>G7PeQZqnR*H05yWB_9&WTihpPo_3wx zRDa?(ba_bEx9euX-lv~Pzg@pDTGaTX=kCd~U;UEV-(IywH+#jW{c7r}8=MnW+xq_m Ds9aQo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_pre_top.png b/src/main/resources/assets/betterend/textures/block/lanceleaf_leaf_pre_top.png new file mode 100644 index 0000000000000000000000000000000000000000..38039e82057f7f9bb8c42822b519964d2a605f8b GIT binary patch literal 1948 zcmbVNeN5D57(Y}df+*2M=Ep`YjQK&YANR#o4um`OZt)m9FX42FSlajQDtB#d3wN+& z0^7{gm<1ylPNw1qx-7bpY)+$WBj{orPS{73nefLJGmYplTQZ`H+uP&rvN>?XCT-vL z{XM_u?L)ndyttbvj+9%jxjIdzN;lJp->fzx~C)+bqesLDA_l=4)q)?!As@ zb-L6(-s@9+?sYUPhV=|5)&PApEJ3tRS5y*}7`7IuNDT<^f(`xk+!rXqb2hZfDa2yclV-w784D1KAT2my!AS!~kThYY4OS$6pwOGl`Du@1P23lJ zvY|m$m1rD~L?Zf#K`+VyoU~f4I6>hQg+Tx!p02Y09#aFwg`s z4t2v;;24$pFPNfD6ipHT0*f5)Z}?v*$I^aL4l}S&e3%IUToM8?Z*Dj35)_pYSm1Kl zP#CJ7=Q)}%kc6K!QJBF3Oc*d34OpQWt|+q!PzK6q1ZHEx-XXGenurN|4%#!E*<@tR z1jYeBi*Z&XgIQ}V9A+gLmLvRTrl!!Guzy+R;YY-To}MQu5^WblqU;tqSY?CO!m(DO zoxB3|YKVUn>%rFeD#RnP?x7i0Yj7LNYRUo*jlbq6sLa$d8>fu~0VI8b+~Y7s^s5m@ z2BiU5#i?`@K3V(5&<(LdIIPZ@o@xNMLS0sziT9M$r{wdpc04gR=lvAusx zq68d{H*J}mtMDN?nSlVQWjJ@|wb>8rbSc|hj#6*o*L5EEOMRQO-hb2A>9O~spFH|> z*Ul3eo#*ZqHAhn-n^uozwPZ`bq+VEjMn2M#@yftkUH5jDrG=+&7I47ua}&Sj5ZdOp_TVv%wLYl`wnlt zFz0H{b6@pWtEKnvJoE{|+U=vc557eg%tbAR?xkNkom)=!JFgsUTNSyI_j5UUX>i8H zy+;=YX71nNZaMl*Ugf->whVaWiao7ObB@1uV^-aFZ=97kRA)60=)2}VzkB*>&;5(- zx35+m%l>HbJGXiVZ}wHs-{9!!nC8noxH~(vX6QiAjo)9TDi<;ayPV`o<#YA~)4iEF;-%)HJIZVi9fwQ|YD?muT<+jP*j===%GBKq}5Z@2Ga<)NYc h?&f=^^Byi}s(vtdH|z3&rq$a2(^X#KI90Z}#V2 zP3{uGN-8P(L&RSyC6fM7QD}(xLov`+Q6eHJ2pTL%D@uO|6;f0%G0xtXwI(4HT-e#! znP;B&c|T_6g`vSGn)bHrr6{VYzb`RNzIS@>o(9sku5AMHX|(#r9E#d^(0hH<>t~uN zs$oG-jk=@B0Tp5+05qINfudm%G(~lG7cBrMkV~ggRyU)}wU5p-w5~;&kzkTfT5*)q z`(|u(bY?IGXC|PcG2LBsXHg{t266#iH1ejS7NbmwS0#OKm}BS?#GQyTG0z}9njE6z z*hX|P5MrSqi*#5C2q9h(_4al^>LlQu-XQ^<4= zSB+_~w$_@o^CeF;$e}zk2+SeEgqkTUhh6OC@HT$brfc3&um^VMsV?K~j;Fku)VOurQs`*oa2hBH^ISN}|RKP!5J5id5N- z*gDxfAb%sPr%EG?Kn#nr3^W#mfWoFTG9i-`nS~%CBRQmmKnOCl2GtC<4M0joH$WC~ zmYHSff7HZr9@|N*k(f(fK@)c3MW61F>`hm;$We5n(#z{~sqRz&y>gE-(91K@n98ue zMf7&3vrJpaAws%C^2;y>XWRm?Q7lU$y_@>tw$tx`sh!nB6jXo`QCJx&Y0}7u1td)@ z0wGz7kko?=s(Sx_sjmbV=75<+i6Tx#6SRalz4 z;hZJuEDe#v+w0bD4f0dFcaTX!Ws_TFVQE7pH_}>vB9@AL0sq+C?DltE`f+is^^MMh z{`>ik@juU>ZQ0lL&<9Odo4(q(%H^7<@L?xu9MIAEp|xjM_%#KP0W>i+uU=@ z@%MedydRyH+FFn24*kWD#8aEs}CrUp({7c=F&rZ#K+j?>~NT2q% zsj=}`;ek2dr}qY=M?PQr*r@+-&zr9uZ@w^adUe0uxU$NBNuRiWAt6u?Hon-CU%36s zsbhD4GdX|P*qQpLuD8Flbnz4an6&cD)$zv!>gSPHV>HKK>RGvX;Lv+u;JX9+?S{HT tv-kPwma+NzCD{%TWKNvOuoI~w6Z&C81aYw87ZnsL(mD|YL1#bs=Yt!9?1P9X!}HDk2~)aS7D)0Y z@9+6Ne|}G%yi}ZeYG`11fMJ-SLOwT5?|XxD_ign0&~Gh7Z+o2ltj92S>LI8TD~b%F;b_xxD4JnXV@(I?^VnxKTrur5ckRQEIo34N+|jrSR40q8 zW`4=VN0z2a`qI3v7~I&CY^n(7PftlV#N?ktE8$Sd`nu(3elcF zQKu1gbK4T_l@=W=OktNn3rk87*br*bS(Akb3|VVMC{oc)Sg-=<4RoTX)WS>T$W{COJI$cWEqHM zC6UBpqGx~DHR(r$YPZf4iUhNyMqHH`w92udh1;zJ^QK4jTI_xlNAR)ks%En7?tw@T z8a&PEfwI`(y06VGDzmf9I<$={rli}*-GO^G2$$1AjoJLxFlX7PKdzJ2sN({-EZ zZ|uKYjJ{i3y^8D#rZZFEf_#Kvx^$!w{;OJh?}ka#gVXUAEW^1bGqUti`~=7qjI z4@OQVnAzC+J?#6L*Ox2I$-n>l^?_%y&M@=x!R7K^c7vJup-^~w&ARgQPrJT4F~nRR zyf{>4zGYX-#gXeT_CG3HbHmToV);AI?)jyEa<%-fcwA$?u1~I>VmC9R4{r`kukU`X fb=L)E<)g?u=fC@L{oJ30;CED*n999(aPIg&{xdf6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/lanceleaf_stem_top.png b/src/main/resources/assets/betterend/textures/block/lanceleaf_stem_top.png new file mode 100644 index 0000000000000000000000000000000000000000..392b954e27e55f39489f08e8f8d9952c2386cbec GIT binary patch literal 1888 zcmb_dO>f*p7c~6#=BN_J;rvj zn+VYsF3<}CaYCp9sb}c12&o8hpokN{013gFLpg9_dA%Pdpfp4kD|tP(pLyQrecpFw z-dkOH>BP~KM>S15vAon;gZo@@-F*c9AG4{6$w&!YBv zzV5$Fx$0M#P=Txr`w5^m?acfzVSGd8dLTPd+%SIo>T5%fM8i1e_}EXHvKuY!r1I>} zN}KO&a8DTX&*^7|6bSksy9_Cb*JJY zPHaoBc@^Sf&$6G8YFrnC`RZpM(42YJBkgl~}oW_EuhSAOQgqr4HFsKZw z6_s{O;(4BlEz`0PAW*g)=WK}L?9_~*B{QBzNgkOso)}|F;MUlmu#lJad5#+*^_-4=NVv0i3OK@zl85e+wYg?EMMFLMbq5&L}%^o zM4D?dQ=2K5i(3%!)J#~?Rk_N#>Na_lpUZ3#+Ds+ORoYgnH!IZYj74uYi^A0PC(lK( zP=oBLBG7b>Y_VK63=3Nr5epIACWJbe+T=8@Qj8~1A6h}Mob3trDE9sVRw4?w{}U=W z4OQA_U{us+9cd2jRqEaq~#)i6M6C5i-f1I{?J>nI>LK~`vU6nJh8SyhJ- zMl2@~&TM{5@y()$#r#P>3&nw>w2nG;PCS=6C=6YRJZ!s&F#&9WC8X<05(qJ4dnJuv zNwMB;)Z#OM0z9u44Lxow zx)fzlz3u4|IV<0oj(U+k?j_22(e4d{7j>4PZ1OtV!>5BOn#><`C6Mk@{0S^mVLo7~ zTa>Jwgmw-4!E>t+3%^|q1c&q;~lD> zn#;Q^?nu}{P2wnG1EcVVxtC|1q!tu9V`z(}m{0cVjVpyIU@KByR zG6t(sI8{Ed+!35euy_~R^&j{jqtX0b^veCGzrE-`@^Bb@I(JRa!tcKSu&2HD;QG_I z=G5WG=O6g>>gb7Qk6+HJe_nWVbR{?ScfR=P#;c)r{?fb0uYY;{W=;F$!dna99Qyt6 n&8^G)($CLdt)Gk@J*M6JV|wlViyxWA8MwT-()#>`*WdmNeHBpT literal 0 HcmV?d00001