From 819de9ae0a2a86857edf9e4cf853c778a0a77dcc Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Fri, 9 Oct 2020 18:59:06 +0300 Subject: [PATCH] End lily --- .../ru/betterend/blocks/BlockEndLily.java | 56 +++++++++++ .../ru/betterend/blocks/BlockEndLilySeed.java | 34 +++++++ .../blocks/basis/BlockUnderwaterPlant.java | 5 +- .../basis/BlockUnderwaterPlantWithAge.java | 33 +++++++ .../ru/betterend/registry/BlockRegistry.java | 4 + .../betterend/blockstates/aurora_crystal.json | 4 +- .../betterend/blockstates/end_lily.json | 11 +++ .../materialmaps/block/end_lily.json | 14 +++ .../models/block/aurora_crystal_2.json | 6 ++ .../models/block/end_lily_roots.json | 76 +++++++++++++++ .../betterend/models/block/end_lily_stem.json | 6 ++ .../betterend/models/block/end_lily_top.json | 92 ++++++++++++++++++ .../models/block/end_lily_top_small.json | 62 ++++++++++++ .../models/block/end_lily_top_small_2.json | 19 ++++ .../textures/block/aurora_crystal.png | Bin 2075 -> 460 bytes .../textures/block/end_lily_flower.png | Bin 0 -> 1961 bytes .../textures/block/end_lily_flower_small.png | Bin 0 -> 2226 bytes .../textures/block/end_lily_leaf.png | Bin 0 -> 2504 bytes .../textures/block/end_lily_leaf_small.png | Bin 0 -> 2234 bytes .../textures/block/end_lily_roots.png | Bin 0 -> 2129 bytes .../textures/block/end_lily_stem.png | Bin 0 -> 1970 bytes .../betterend/textures/item/end_lily_seed.png | Bin 0 -> 1806 bytes 22 files changed, 419 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockEndLily.java create mode 100644 src/main/java/ru/betterend/blocks/BlockEndLilySeed.java create mode 100644 src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlantWithAge.java create mode 100644 src/main/resources/assets/betterend/blockstates/end_lily.json create mode 100644 src/main/resources/assets/betterend/materialmaps/block/end_lily.json create mode 100644 src/main/resources/assets/betterend/models/block/aurora_crystal_2.json create mode 100644 src/main/resources/assets/betterend/models/block/end_lily_roots.json create mode 100644 src/main/resources/assets/betterend/models/block/end_lily_stem.json create mode 100644 src/main/resources/assets/betterend/models/block/end_lily_top.json create mode 100644 src/main/resources/assets/betterend/models/block/end_lily_top_small.json create mode 100644 src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_flower.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_flower_small.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_leaf.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_leaf_small.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_roots.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_lily_stem.png create mode 100644 src/main/resources/assets/betterend/textures/item/end_lily_seed.png diff --git a/src/main/java/ru/betterend/blocks/BlockEndLily.java b/src/main/java/ru/betterend/blocks/BlockEndLily.java new file mode 100644 index 00000000..5b896449 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockEndLily.java @@ -0,0 +1,56 @@ +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.block.ShapeContext; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockUnderwaterPlant; + +public class BlockEndLily extends BlockUnderwaterPlant { + public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; + private static final VoxelShape SHAPE_BOTTOM = Block.createCuboidShape(4, 0, 4, 12, 16, 12); + private static final VoxelShape SHAPE_TOP = Block.createCuboidShape(2, 0, 2, 14, 6, 14); + + public BlockEndLily() { + super(FabricBlockSettings.of(Material.UNDERWATER_PLANT) + .breakByTool(FabricToolTags.SHEARS) + .sounds(BlockSoundGroup.WET_GRASS) + .breakByHand(true) + .lightLevel((state) -> { return state.get(SHAPE) == TripleShape.TOP ? 13 : 0; }) + .noCollision()); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { + Vec3d vec3d = state.getModelOffset(view, pos); + VoxelShape shape = state.get(SHAPE) == TripleShape.TOP ? SHAPE_TOP : SHAPE_BOTTOM; + return shape.offset(vec3d.x, vec3d.y, vec3d.z); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(SHAPE); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.get(SHAPE) == TripleShape.TOP ? Fluids.EMPTY.getDefaultState() : Fluids.WATER.getStill(false); + } + + @Override + protected boolean isTerrain(BlockState state) { + return super.isTerrain(state) || state.getBlock() == this; + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockEndLilySeed.java b/src/main/java/ru/betterend/blocks/BlockEndLilySeed.java new file mode 100644 index 00000000..e163d71c --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockEndLilySeed.java @@ -0,0 +1,34 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.minecraft.fluid.Fluids; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockUnderwaterPlantWithAge; +import ru.betterend.registry.BlockRegistry; +import ru.betterend.util.BlocksHelper; + +public class BlockEndLilySeed extends BlockUnderwaterPlantWithAge { + @Override + public void grow(StructureWorldAccess world, Random random, BlockPos pos) { + if (canGrow(world, pos)) { + world.setBlockState(pos, BlockRegistry.END_LILY.getDefaultState().with(BlockEndLily.SHAPE, TripleShape.BOTTOM), 0); + BlockPos up = pos.up(); + while (world.getFluidState(up).isStill()) { + BlocksHelper.setWithoutUpdate(world, up, BlockRegistry.END_LILY.getDefaultState().with(BlockEndLily.SHAPE, TripleShape.MIDDLE)); + up = up.up(); + } + BlocksHelper.setWithoutUpdate(world, up, BlockRegistry.END_LILY.getDefaultState().with(BlockEndLily.SHAPE, TripleShape.TOP)); + } + } + + private boolean canGrow(StructureWorldAccess world, BlockPos pos) { + BlockPos up = pos.up(); + while (world.getBlockState(up).getFluidState().getFluid().equals(Fluids.WATER.getStill())) { + up = up.up(); + } + return world.isAir(up); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlant.java b/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlant.java index 3ccfba0c..6ffe99bb 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlant.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlant.java @@ -77,7 +77,8 @@ public class BlockUnderwaterPlant extends BlockBaseNotFull implements IRenderTyp @Override public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { BlockState down = world.getBlockState(pos.down()); - return isTerrain(down); + state = world.getBlockState(pos); + return isTerrain(down) && state.getFluidState().getFluid().equals(Fluids.WATER.getStill()); } protected boolean isTerrain(BlockState state) { @@ -87,7 +88,7 @@ public class BlockUnderwaterPlant extends BlockBaseNotFull implements IRenderTyp @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(); + return Blocks.WATER.getDefaultState(); } else { return state; diff --git a/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlantWithAge.java b/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlantWithAge.java new file mode 100644 index 00000000..e99a79a2 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/BlockUnderwaterPlantWithAge.java @@ -0,0 +1,33 @@ +package ru.betterend.blocks.basis; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.IntProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; + +public abstract class BlockUnderwaterPlantWithAge extends BlockUnderwaterPlant { + public static final IntProperty AGE = IntProperty.of("age", 0, 3); + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(AGE); + } + + public abstract void grow(StructureWorldAccess world, Random random, BlockPos pos); + + @Override + public void grow(ServerWorld world, Random random, BlockPos pos, BlockState state) { + int age = state.get(AGE); + if (age < 3) { + world.setBlockState(pos, state.with(AGE, age + 1)); + } + else { + grow(world, random, pos); + } + } +} diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index 37a5a0c3..bfc38ec6 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -12,6 +12,8 @@ import ru.betterend.blocks.BlockBlueVine; import ru.betterend.blocks.BlockBlueVineLantern; import ru.betterend.blocks.BlockBlueVineSeed; import ru.betterend.blocks.BlockBubbleCoral; +import ru.betterend.blocks.BlockEndLily; +import ru.betterend.blocks.BlockEndLilySeed; import ru.betterend.blocks.BlockEndstoneDust; import ru.betterend.blocks.BlockGlowingMoss; import ru.betterend.blocks.BlockMossyGlowshroomCap; @@ -62,6 +64,8 @@ public class BlockRegistry { public static final Block BLUE_VINE_FUR = registerBlock("blue_vine_fur", new BlockGlowingFur(BLUE_VINE_SEED, 3)); public static final Block BUBBLE_CORAL = registerBlock("bubble_coral", new BlockBubbleCoral()); + public static final Block END_LILY = registerBlockNI("end_lily", new BlockEndLily()); + public static final Block END_LILY_SEED = registerBlock("end_lily_seed", new BlockEndLilySeed()); // Vines // public static final Block DENSE_VINE = registerBlock("dense_vine", new BlockVine(15, true)); diff --git a/src/main/resources/assets/betterend/blockstates/aurora_crystal.json b/src/main/resources/assets/betterend/blockstates/aurora_crystal.json index 92b720e0..f40527ca 100644 --- a/src/main/resources/assets/betterend/blockstates/aurora_crystal.json +++ b/src/main/resources/assets/betterend/blockstates/aurora_crystal.json @@ -1,5 +1,7 @@ { "variants": { - "": { "model": "betterend:block/aurora_crystal" } + "": [ + { "model": "betterend:block/aurora_crystal" } + ] } } diff --git a/src/main/resources/assets/betterend/blockstates/end_lily.json b/src/main/resources/assets/betterend/blockstates/end_lily.json new file mode 100644 index 00000000..f235a11d --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/end_lily.json @@ -0,0 +1,11 @@ +{ + "variants": { + "shape=top": [ + { "model": "betterend:block/end_lily_top" }, + { "model": "betterend:block/end_lily_top_small" }, + { "model": "betterend:block/end_lily_top_small_2" } + ], + "shape=middle": { "model": "betterend:block/end_lily_stem" }, + "shape=bottom": { "model": "betterend:block/end_lily_roots" } + } +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/end_lily.json b/src/main/resources/assets/betterend/materialmaps/block/end_lily.json new file mode 100644 index 00000000..a4fb010b --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/end_lily.json @@ -0,0 +1,14 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/end_lily_flower", + "material": "betterend:glow_inc" + }, + { + "sprite": "betterend:block/end_lily_flower_small", + "material": "betterend:glow_inc" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json b/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json new file mode 100644 index 00000000..c7b29818 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/tint_cube_noshade", + "textures": { + "texture": "betterend:block/aurora_crystal_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_roots.json b/src/main/resources/assets/betterend/models/block/end_lily_roots.json new file mode 100644 index 00000000..a5ceb46e --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_lily_roots.json @@ -0,0 +1,76 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_stem", + "texture": "betterend:block/end_lily_stem", + "roots": "betterend:block/end_lily_roots" + }, + "elements": [ + { + "__comment": "PlaneX1", + "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": "PlaneX1", + "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" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 0.5 ], + "to": [ 5.001, 16, 16.5 ], + "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 11 ], + "to": [ 16.5, 16, 11.001 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 16, 16.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 5 ], + "to": [ 16.5, 16, 5.001 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_stem.json b/src/main/resources/assets/betterend/models/block/end_lily_stem.json new file mode 100644 index 00000000..2edb1931 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_lily_stem.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_stem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top.json b/src/main/resources/assets/betterend/models/block/end_lily_top.json new file mode 100644 index 00000000..322e7f54 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_lily_top.json @@ -0,0 +1,92 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf", + "flower": "betterend:block/end_lily_flower" + }, + "elements": [ + { + "__comment": "PlaneX2", + "from": [ 8, 0, 0 ], + "to": [ 8.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 0, 0, 8 ], + "to": [ 16, 16, 8.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 16, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 2.5, 0, 13.5 ], + "to": [ 18.5, 16, 13.501 ], + "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, + "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 0.018, 8 ], + "to": [ 24, 0.018, 24 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + }, + { + "__comment": "PlaneY6", + "from": [ -8, 0.014, 8 ], + "to": [ 8, 0.014, 24 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 } + } + }, + { + "__comment": "PlaneY6", + "from": [ -8, 0.012, -8 ], + "to": [ 8, 0.012, 8 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 0.01, -8 ], + "to": [ 24, 0.01, 8 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top_small.json b/src/main/resources/assets/betterend/models/block/end_lily_top_small.json new file mode 100644 index 00000000..50031fed --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_lily_top_small.json @@ -0,0 +1,62 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf_small", + "flower": "betterend:block/end_lily_flower_small" + }, + "elements": [ + { + "__comment": "PlaneX2", + "from": [ 8, 0, 0 ], + "to": [ 8.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 0, 0, 8 ], + "to": [ 16, 16, 8.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 16, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 2.5, 0, 13.5 ], + "to": [ 18.5, 16, 13.501 ], + "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, + "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 0, 0, 0 ], + "to": [ 16, 0.001, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json b/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json new file mode 100644 index 00000000..664fa264 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json @@ -0,0 +1,19 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf_small" + }, + "elements": [ + { + "__comment": "PlaneY6", + "from": [ 0, 0, 0 ], + "to": [ 16, 0.001, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/aurora_crystal.png b/src/main/resources/assets/betterend/textures/block/aurora_crystal.png index e304350fab49d1b647a8c679e06e4cb5c6273e6b..61aceaeb004450901b224f6aad4554e0aa81ce5e 100644 GIT binary patch delta 435 zcmV;k0Zjgz5X=LRBYy#tNkl~DvecY02001CP7gLlfIb+^=ku5>*6XzelioKN z9ZB~ae7RgKy`Z!Y6Cni$uh&cRJh#K)P-(&onu{iokfy2r_FOPJfDwW^|BZZmK`;V2 zpA&dI9u|}k$bT&s3v`t%%Pb2bPZnh2wQYMt2WrLyzy<~T{eHaNZY?Ijyem;9e2O8~_ykikE-WTVqF~pbUo3SK0p_RxW>L3b d7fWM|`~mCfv>p${4PpQQ002ovPDHLkV1h30$4LMH literal 2075 zcmbVN4N%io950HxF_{A57b2lDMWIbv3T*>bO95e{g@Ym}w`oYylG!#j2~tod;>0SP zAi@yF`~n5Phn^cB6E+1I!;f>g(+xN07!JhA9D2$SSqi1M+qun|yO;M~-tYbX-~Vij zRxNXMnC-yfa2zATLt@x@s%5+~k$rpg48&EdS}Vi|Uv(z2Nxj(tC&PGAz0 zkuXZ?`3OcP;e3?Z}R50{ljVH!9lB+M#{-O0Gg z3}b{rFf}!mpX$daDJ>|FN~Itq1cgE#i{Q~|1_m+l4D`G)h7g=aDZ(j%;+2tA_3L8C!CB2B4;BMdZy7*ISS zM8;)Rn=u`%C4H z!P$0TS=#y#yRmgL+`zUkitSUkBg#BEoN<>ULgZ>mTgKOI2Ddm)=IxD_%Sxo5w9wV= z3sj}=7m7j`xw-;zuFgqYnqq&S?t9}jH!d+b*yX^@If2z^o_0ftDM&oM=mziy=hpr9 z_XY;8pP$l~x6olzZ(3Dd>sR?T^^0qLOCpzfA8tRD@laj4kqR~XFGZjo8gu#eK4?+g zcO7~x4#i6(^@|VMwKq>axxAbhG#6d?rlYZE@5AIXiIKnfy}swyd4*`Z>Ds=0ABVPz z+V*`hXLj3Xlx@!w9`U+8{%kpYK;Crviev zE-N27Mj|m6dZS!{CbgN2mU*(;X<*gcSesoEB%zsP1v^lA@DlqJB-RGZr zh3%IwdXQ0k6&Uwq$_btN3*WSvdD|x0bp^>+D%~=6mOG4B%*xGfk6LXm_WU3pa4mA2 z(sS>aXO`>0P{D)l;p&e?hjP~6E6q7LYj>U-wsJ>8V&VcNu>H=o=E`cces_%1t^z`u zBUyT}PjhpXmT{{W0w&z;WIk7IQ-}9Vv0W^8wY3tnc z_jxM{JROp2`7K-f7Sf?R!V2C9clM1te>{EimA;xKy`EXExs_l;#l}Fdh!|ZSoR9yeN+lRNY6_kH{QzTf}- z-%Ux0alSr5J}Q;UHzD4TBF}!x@b;45GY1}#@-#t+Um>bg6aAGjMpd>uK&2Yr%bJ!; z%Z*D2inpmrnm03Qmran-Dph2ZOCTvLBLQZ{!g4zB&WSn@U}+tg7G^|@LJX71#^>3Y zWqFAvD$h#cG#K>;5a}Xh0vjWdfXkM}iG)iB4)GH5TKNovzz{^T>Oj3B5Lj+Z0%CYO z18CI2#`{8Z~dXz$lL6FoMAt2FVCW%;hA~1##l+Q3eAeQg&95Se^qEM$*hXBpoPg zI&6YX@X&JNh?``G!7fsOQ8l8NGz6q64^D8{vxbDz6wG8XHinZ#8H;+bLMAWqVkZAD z)Slxf1jw#68a*9_{#?Fuu zZ#VIL)@Y!TMpXtdRE+`i(pZk>o#JbcU0@8P#OOdJY7mM*2yQ}ALK99PSO}sa5M&r? z$gJn)QR+=e2_l{q0Fih*rWMtC+2=_2d#ET!7xcKglRw0C{sVY9=(XQ%qMdF6?p(|_x% zo4jq4^-m}{wS4Y?>3%*cG#-uXSs4iUmN0wD=gw;no~MWQQ~_6)6^!eDkn^^! zWO1GDtJ)1jb>X?yDRYW9HUv(puG`;w`mH-rFCUo@dmSxxw@osR)niNILyGnrH0Rgt z+R^6qo_1{opWdFobpG9%zIrD=KVbLa!Txj8io9DbEr!juDF*`D>erb19`;`TmR|I| zZ%=vlwc3ne{9~VvF9+N=1`4OdySx=Q8?2A23=JB*(aspnTaM)&smcujf=ZnWcIBSgQ8(jOU+enMgO{X4{9$dl_n`XL zkHrPq`NjL7oSTsqtEPP#=paMk3&v|#f{%6R%I?ysH9ggMEA;*$YF0yba(`oYV8y!~ zh5pwstZ9t*X*xa=zddJ7|AW}Gmk-?cJzu%FXzJ^`&-tFOny&NPSo!GC;t+8A#mNfg?v}q4_Yrc^?SsF_HMf;*_M5)$ w@Yx2h0~@|LL{(bTt6Js<^|&kHJ;S_)4Tb+X*ZKr_8?Jih>K4n$O!G>!G;e;` zVj0>ZSNjZ~_eowO{NWJBA{%# z(K^FWc^q$OXs|Zetcn)INsi-ig2E{ZgBF;sJu%9 zf}v>DiW2T`R7F2!gd(jJ@_4Nrm6QfOZ-4`E3kGna6hRRfNniw5O_IEg;R$LgVdDuR zVd_;RIna2!Db15CPZBqoLdi&iA>7wk68V6lMFg0z91(&5SEE4`NtKazDPcu}z>u9S z&cf^EOQX6WL`6{QcA_w6t1L@=fFv2tPcj$~0gDAln#I@vRF2(Yr|hiVCb4273+V4w z#Co%{rhh`@k|M$w|Dv)0_)RB_rdSx#Mw1xJ3JzEsPLKc#Scwq(+052txXy&|z^EoG z2}a}?in03{NQ0srm;=xP#&R|ivx^Rv0+a+88)vFHE)d=$>#%i=$@NhM7A8kw8HsCx z7erI*PE<6T3?wu;E#ILY4}_fbZ>R$>=slXBK-ZOk(I9A`CNSd5b#c8mrzgRyqNU^GKX4hQE4k|UM+?bL4(;{#E5xy%iV9k?_Seqx;v4Fb4# z;^=?R=fR|z0Q`UR!OdMWp)>qe3C7FPq zv7{X>br)5$Cq90uy*yJGzp_;c@TY2uGi$?kdRt^z(Is^L!l_R!>l&R|du|znSkG?S zn6V}|YvSpgQ5$xSef#x&J*!r3y3n%pe0HsW&kMA0;molwxX*gCC!?D|_UCM0PS=gg zkIbL<{@ScTvp)1qoa^vSnY_4Q`hvcSw)VXBo`Y4*IU_6nIupz!2_F%MmWQZeHS?z*sLA_QbXLr)nz#7*mO0;_?j5}GOk+tn z{W*Nd?iD@Rhii9DuJ5}1%Yku>Yj1iv;u-Yv#p87&%PRAk%j&*WqcEj){C8KjPT4M6?$j2bgawU zoj#-U_t37vzv3l7c0^mcmw1(n%beT};Ci?0jke}>`wM+@v-XV5EKze`D@^NX8gr#= zOV2xLrJX_T%k7otOL{k4-@lsw;nnW5ORzt$anzZDw%Eo=6W5N3#kxB`?Fn^wm!=Kb Xe{TGv-t}GPS4C-Yx%EIWg{fd4;T z#WaGv$J9$EmPTdylSG&#idyEyt7&;WYDcn^o2b}5^n=wm%d%NncIxgqv-8b2&-cF1 z`@YZneX}wneL~Ne2V)Qf>6w;l&4l+j^@@&y|ATM-$iZ88Z)%Q=AhEsGD*{=+u^)m& ztrfGfm2BH2mY3XGPLS+C8*qCe8bL-U2D}`f4;0i6@dH8EPssMj0Gktj{lBtaSoipD7;OX^w5gob_?^yU*BY^HU5$QOLF zU`|ExvIODx`?Y?ZR`TT$6vHqCNfR`ULj*1tc@!>yd*p;J3sxZWKGCa)k_S~Sa(1au zv0#vCX9#X@*sMnmr3ogC2ykA4(voUOL7>2gao$3oE9hL{3E%>5;8A3VrNUURQ&J?^ zDgBP=@atbVfT^|F!anZE#qAEekd>6VFpN+_?ueGNioAfx1hQ1<<3Y+?NHal=#>*!A z0H;X4EJ<>86)K~PGD=fg8XZ1E^azq)e)P5lz{)AWf~i%*DH11{EQ(@vCYGc}kUEwm zJE1m75FJIog+c_w()wROp=1P3;qD3+c-A5L+#C#8baQ!t@OttvG@M2@S#n7}=oqro z1zFf^Y??<_I1dlftQHK$tQAFp1tc#3v%!qp4Gf2yfS$t{gPz2VcAnAO8J+_Md)Ioa z#22cSRo8clT#$HZ<7cmW#waib%7hze9W+Gi^*BS3I^5`>3_8xvn>Z?LZL&{`-0c;N3%-A{H;4pKHL!eE9-K45HC=fPPlws+LLj5rn6of`D z5e;gB<#<)=7K~Sm3AL!YFB)=M zPL_W7d{SheEqy=!a^}4El$2#B-3`Oir&wm~-{{;l_|>Y_-G}(B^{)up_nY!YjxMQu zvA))}ZuMKURt>Qi{BQl7x_Q%(k@LTMi73z$$D;prw%kiUeEz}Q)%zct&^~FuuF2B) zMq9~=V}q`okNftxzWv*dwKey=pMR!Md99Dnf3xi2_>UXrkKdV+`Pc$c^0qcKcWnEF z`tSW!gXh*>PHcPmAE#zqh)15dbVQR%PaZV0JaOVztwZ*ej6E~?$~%L0$?lf>YT}y9 zTWi`^_>1={d}Ft5o2`d$t@vz*vG^vE(Cy;C<2FVSX|H43%~?~AX9tj@W#eL>8n4NS zUOMJKm7Bhqzx1u?Nliv_W=u&gm7}TMyspQ}XP?%L#rqMnj}$R>{O8Qp7bMB@FMW0z*OUeF>hWFEPC ztXIy~+<>y|+{B^bF)}O1gFXxZEW_0a{XwkpKVy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/end_lily_leaf_small.png b/src/main/resources/assets/betterend/textures/block/end_lily_leaf_small.png new file mode 100644 index 0000000000000000000000000000000000000000..62ff67147ccf711ace440d13b924ab577902c3a5 GIT binary patch literal 2234 zcmbVO2~ZPf6pjUNs2n5W(Xy^mLEP+aF3f76ki-Jh0Adu>dMvw}kdkD>?jiw3t;ZlJ z1&^o{p&)2SMICP{j-xO_t5&R48ILN8)#6o0v0`=I!JKqZ;P7Fi$nu`omVeWaf!c3)O(dlpClyd zJ|!sDA|`1znGxG9Hh>n1CWhN>B$dhtP%>jQSyk|ZLq}l9M62LLxen9W)J%#gDvM*L zWX0;KtW-)#!{K4jL^}ZpEQ~-xc8l4{6LuBc$xDE<^EC=Xoe&{a1xGj?LP@%KNX>E# zBo`|X3YSTsP^B1GU`mN>93;W;P!tPAaVdh~1g0RQN~rq-18*E{AQCi_x_yBs6`Udn zHUdR6GBU&&QZdUJQCz81qL>7gNDzQP_)M!n+7T;1s)s?t@DyjV2`1JGIT^`hHeFD` zAkr=g7MqLK%6F#;Bn-8aHWU|QPD!0WTM8?%d*Bl2sOu$ z0?X-H*4$I5_#SzXTJ0>%cqk~*WTn{*KKL~oMnejW3YK6J48bu3Q|fUUfrk>(@gbO$ zz_2c;4zvPI3gp{?S=waC{7kXDL`)~H}0TWm7X1WqT*4N}l?Ql%V66jGTCNtQA+f=fsxW}pl-DL3@kYgj7X zS*IR*`hVKTaV9War1_nBz!1FB-NOTFYjq@3fYf+=U;F*Mx$+Vsx#>7va@VF2mBG-DTxXAMFI$uSW|P|LUJceE!5 zT~g4$tL)6wYkQ>!4wjYk=-QIt!L?@@D_E`^*rLHNYRW~T_fAJ^BJ|_Ed)HpH4rlzo zxZd7uNNb2~X$rKgInaOVXumvPzpaUNv$(z^*86(3K%0=w@P^tvUsU>G$K~(Zwgg-* zE9$_P{87BG(VxN^%1;DUEGufgU4y_Cj^p$iFYoR9eL6p{EE=}_I zL0-LZ_U@Ne_0Nu#2d6dWCB&5Qn;bvRs4V3j2kWxqygjp;*6i#3HdzCf7ccB z)EDNUhuo>dbM`(z#jm?lT(7OT5bXbf-d?*Nqtl&+w*D?er88iK6KYjr*ix(ZeQh|?j;gEPz48Smimv{UlkRRgt~q1 z7C1B{t#;Q|tZXeEaJ#W-L`lIebkdd;gXcF-Da{W)xo%mz>eTJ9hB3)U>Yp!dno*^% z+?Qw$6Fg=QJ@;^>u)F2Sjbdx@sw%(CgX(nm4H;6$+17}S-$zg1oKr-sC_A7>`{pmS z$8=nF9BM0=G1Tw=>U5do`l4Hh)cS`XXCFMOs?vt+c&re69bTl`m>Jgc#t~vi*L~CO;J0s^V{u7=+JOls$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/end_lily_roots.png b/src/main/resources/assets/betterend/textures/block/end_lily_roots.png new file mode 100644 index 0000000000000000000000000000000000000000..0bff2b90489fb714b11ced6259e481821a065cdf GIT binary patch literal 2129 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