From a968b9bb233f72bb34026ef385229175400c661c Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sat, 3 Oct 2020 20:18:42 +0300 Subject: [PATCH] Blue vine --- .../ru/betterend/blocks/BlockBlueVine.java | 17 +++ .../blocks/BlockBlueVineLantern.java | 39 ++++++ .../betterend/blocks/BlockBlueVineSeed.java | 42 ++++++ ...lowshroomFur.java => BlockGlowingFur.java} | 8 +- .../ru/betterend/blocks/BlockProperties.java | 30 +++++ .../ru/betterend/blocks/basis/BlockPlant.java | 2 +- .../blocks/basis/BlockPlantWithStages.java | 32 +++++ .../blocks/basis/BlockUpDownPlant.java | 88 +++++++++++++ .../ru/betterend/registry/BlockRegistry.java | 19 ++- .../features/MossyGlowshroomFeature.java | 12 +- .../betterend/blockstates/blue_vine.json | 7 + .../betterend/blockstates/blue_vine_fur.json | 10 ++ .../blockstates/blue_vine_lantern.json | 7 + .../betterend/blockstates/blue_vine_seed.json | 8 ++ .../betterend/models/block/blue_vine.json | 6 + .../betterend/models/block/blue_vine_fur.json | 120 ++++++++++++++++++ .../models/block/blue_vine_fur_wall.json | 64 ++++++++++ .../models/block/blue_vine_lantern.json | 6 + .../models/block/blue_vine_roots.json | 76 +++++++++++ .../models/block/blue_vine_seed_0.json | 6 + .../models/block/blue_vine_seed_1.json | 6 + .../models/block/blue_vine_seed_2.json | 6 + .../models/block/blue_vine_seed_3.json | 6 + .../betterend/models/block/blue_vine_top.json | 76 +++++++++++ .../models/block/cross_no_distortion.json | 29 +++++ .../assets/betterend/models/block/test.json | 5 - .../betterend/models/item/blue_vine_fur.json | 6 + .../models/item/blue_vine_lantern.json | 3 + .../betterend/models/item/blue_vine_seed.json | 6 + .../betterend/textures/block/blue_vine.png | Bin 0 -> 2195 bytes .../betterend/textures/block/blue_vine_0.png | Bin 0 -> 1914 bytes .../betterend/textures/block/blue_vine_1.png | Bin 0 -> 1963 bytes .../betterend/textures/block/blue_vine_2.png | Bin 0 -> 2073 bytes .../betterend/textures/block/blue_vine_3.png | Bin 0 -> 2445 bytes .../textures/block/blue_vine_fur.png | Bin 0 -> 1921 bytes .../textures/block/blue_vine_lantern.png | Bin 0 -> 2000 bytes .../textures/block/blue_vine_roots.png | Bin 0 -> 1947 bytes .../textures/item/blue_vine_seed.png | Bin 0 -> 1668 bytes 38 files changed, 722 insertions(+), 20 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockBlueVine.java create mode 100644 src/main/java/ru/betterend/blocks/BlockBlueVineLantern.java create mode 100644 src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java rename src/main/java/ru/betterend/blocks/{BlockMossyGlowshroomFur.java => BlockGlowingFur.java} (92%) create mode 100644 src/main/java/ru/betterend/blocks/BlockProperties.java create mode 100644 src/main/java/ru/betterend/blocks/basis/BlockPlantWithStages.java create mode 100644 src/main/java/ru/betterend/blocks/basis/BlockUpDownPlant.java create mode 100644 src/main/resources/assets/betterend/blockstates/blue_vine.json create mode 100644 src/main/resources/assets/betterend/blockstates/blue_vine_fur.json create mode 100644 src/main/resources/assets/betterend/blockstates/blue_vine_lantern.json create mode 100644 src/main/resources/assets/betterend/blockstates/blue_vine_seed.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_fur.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_lantern.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_roots.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json create mode 100644 src/main/resources/assets/betterend/models/block/blue_vine_top.json create mode 100644 src/main/resources/assets/betterend/models/block/cross_no_distortion.json delete mode 100644 src/main/resources/assets/betterend/models/block/test.json create mode 100644 src/main/resources/assets/betterend/models/item/blue_vine_fur.json create mode 100644 src/main/resources/assets/betterend/models/item/blue_vine_lantern.json create mode 100644 src/main/resources/assets/betterend/models/item/blue_vine_seed.json create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_0.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_1.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_2.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_3.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_fur.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_lantern.png create mode 100644 src/main/resources/assets/betterend/textures/block/blue_vine_roots.png create mode 100644 src/main/resources/assets/betterend/textures/item/blue_vine_seed.png diff --git a/src/main/java/ru/betterend/blocks/BlockBlueVine.java b/src/main/java/ru/betterend/blocks/BlockBlueVine.java new file mode 100644 index 00000000..46ff87ba --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockBlueVine.java @@ -0,0 +1,17 @@ +package ru.betterend.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockUpDownPlant; + +public class BlockBlueVine extends BlockUpDownPlant { + public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(SHAPE); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockBlueVineLantern.java b/src/main/java/ru/betterend/blocks/BlockBlueVineLantern.java new file mode 100644 index 00000000..c841fe04 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockBlueVineLantern.java @@ -0,0 +1,39 @@ +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.Blocks; +import net.minecraft.block.Material; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.WorldAccess; +import ru.betterend.blocks.basis.BlockBase; + +public class BlockBlueVineLantern extends BlockBase { + public static final BooleanProperty NATURAL = BooleanProperty.of("natural"); + + public BlockBlueVineLantern() { + super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).sounds(BlockSoundGroup.WART_BLOCK).lightLevel(15)); + this.setDefaultState(this.stateManager.getDefaultState().with(NATURAL, false)); + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (state.get(NATURAL) && world.isAir(pos.down())) { + return Blocks.AIR.getDefaultState(); + } + else { + return state; + } + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(NATURAL); + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java b/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java new file mode 100644 index 00000000..de7dc262 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockBlueVineSeed.java @@ -0,0 +1,42 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.basis.BlockPlantWithStages; +import ru.betterend.registry.BlockRegistry; +import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; + +public class BlockBlueVineSeed extends BlockPlantWithStages { + @Override + public void grow(ServerWorld world, Random random, BlockPos pos) { + int height = MHelper.randRange(2, 5, random); + int h = BlocksHelper.upRay(world, pos, height + 2); + if (h < height + 1) { + return; + } + BlocksHelper.setWithoutUpdate(world, pos, BlockRegistry.BLUE_VINE.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM)); + for (int i = 1; i < height; i++) { + BlocksHelper.setWithoutUpdate(world, pos.up(i), BlockRegistry.BLUE_VINE.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE)); + } + BlocksHelper.setWithoutUpdate(world, pos.up(height), BlockRegistry.BLUE_VINE.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP)); + placeLantern(world, pos.up(height + 1)); + } + + private void placeLantern(ServerWorld world, BlockPos pos) { + BlocksHelper.setWithoutUpdate(world, pos, BlockRegistry.BLUE_VINE_LANTERN.getDefaultState().with(BlockBlueVineLantern.NATURAL, true)); + for (Direction dir: BlocksHelper.HORIZONTAL) { + BlockPos p = pos.offset(dir); + if (world.isAir(p)) { + BlocksHelper.setWithoutUpdate(world, p, BlockRegistry.BLUE_VINE_FUR.getDefaultState().with(BlockGlowingFur.FACING, dir)); + } + } + if (world.isAir(pos.up())) { + BlocksHelper.setWithoutUpdate(world, pos.up(), BlockRegistry.BLUE_VINE_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.UP)); + } + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomFur.java b/src/main/java/ru/betterend/blocks/BlockGlowingFur.java similarity index 92% rename from src/main/java/ru/betterend/blocks/BlockMossyGlowshroomFur.java rename to src/main/java/ru/betterend/blocks/BlockGlowingFur.java index cbfaabdf..84e72ee8 100644 --- a/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomFur.java +++ b/src/main/java/ru/betterend/blocks/BlockGlowingFur.java @@ -36,17 +36,19 @@ import ru.betterend.client.IRenderTypeable; import ru.betterend.registry.BlockRegistry; import ru.betterend.util.MHelper; -public class BlockMossyGlowshroomFur extends BlockBaseNotFull implements IRenderTypeable { +public class BlockGlowingFur extends BlockBaseNotFull implements IRenderTypeable { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public static final DirectionProperty FACING = Properties.FACING; + private final int dropChance; - public BlockMossyGlowshroomFur() { + public BlockGlowingFur(int dropChance) { super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT) .breakByTool(FabricToolTags.SHEARS) .sounds(BlockSoundGroup.WET_GRASS) .lightLevel(15) .breakByHand(true) .noCollision()); + this.dropChance = dropChance; } @Override @@ -99,7 +101,7 @@ public class BlockMossyGlowshroomFur extends BlockBaseNotFull implements IRender if (tool != null && tool.getItem().isIn(FabricToolTags.SHEARS) || EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } - else if (MHelper.RANDOM.nextInt(16) == 0) { + else if (MHelper.RANDOM.nextInt(dropChance) == 0) { return Lists.newArrayList(new ItemStack(BlockRegistry.MOSSY_GLOWSHROOM_SAPLING)); } else { diff --git a/src/main/java/ru/betterend/blocks/BlockProperties.java b/src/main/java/ru/betterend/blocks/BlockProperties.java new file mode 100644 index 00000000..1942abaa --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockProperties.java @@ -0,0 +1,30 @@ +package ru.betterend.blocks; + +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.StringIdentifiable; + +public class BlockProperties { + public static final EnumProperty TRIPLE_SHAPE = EnumProperty.of("shape", TripleShape.class); + + public static enum TripleShape implements StringIdentifiable { + TOP("top"), + MIDDLE("middle"), + BOTTOM("bottom"); + + private final String name; + + TripleShape(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/BlockPlant.java b/src/main/java/ru/betterend/blocks/basis/BlockPlant.java index 3fa9463b..ef675a52 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockPlant.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockPlant.java @@ -35,7 +35,7 @@ import ru.betterend.client.IRenderTypeable; import ru.betterend.registry.BlockTagRegistry; public class BlockPlant extends BlockBaseNotFull implements IRenderTypeable, Fertilizable { - private static final VoxelShape SHAPE = Block.createCuboidShape(4, 2, 4, 12, 14, 12); + private static final VoxelShape SHAPE = Block.createCuboidShape(4, 0, 4, 12, 14, 12); public BlockPlant() { super(FabricBlockSettings.of(Material.PLANT) diff --git a/src/main/java/ru/betterend/blocks/basis/BlockPlantWithStages.java b/src/main/java/ru/betterend/blocks/basis/BlockPlantWithStages.java new file mode 100644 index 00000000..7829eb7e --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/BlockPlantWithStages.java @@ -0,0 +1,32 @@ +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; + +public abstract class BlockPlantWithStages extends BlockPlant { + public static final IntProperty AGE = IntProperty.of("age", 0, 4); + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(AGE); + } + + public abstract void grow(ServerWorld 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/blocks/basis/BlockUpDownPlant.java b/src/main/java/ru/betterend/blocks/basis/BlockUpDownPlant.java new file mode 100644 index 00000000..6eb2e13b --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/BlockUpDownPlant.java @@ -0,0 +1,88 @@ +package ru.betterend.blocks.basis; + +import java.util.List; +import com.google.common.collect.Lists; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.Material; +import net.minecraft.block.ShapeContext; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.client.ERenderLayer; +import ru.betterend.client.IRenderTypeable; +import ru.betterend.registry.BlockTagRegistry; + +public class BlockUpDownPlant extends BlockBaseNotFull implements IRenderTypeable { + private static final VoxelShape SHAPE = Block.createCuboidShape(4, 0, 4, 12, 16, 12); + + public BlockUpDownPlant() { + super(FabricBlockSettings.of(Material.PLANT) + .breakByTool(FabricToolTags.SHEARS) + .sounds(BlockSoundGroup.GRASS) + .breakByHand(true) + .noCollision()); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { + Vec3d vec3d = state.getModelOffset(view, pos); + return SHAPE.offset(vec3d.x, vec3d.y, vec3d.z); + } + + @Override + public AbstractBlock.OffsetType getOffsetType() { + return AbstractBlock.OffsetType.XZ; + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + BlockState down = world.getBlockState(pos.down()); + return isTerrain(down); + } + + protected boolean isTerrain(BlockState state) { + return state.isIn(BlockTagRegistry.END_GROUND); + } + + @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; + } + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + ItemStack tool = builder.get(LootContextParameters.TOOL); + if (tool != null && tool.getItem().isIn(FabricToolTags.SHEARS) || EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, tool) > 0) { + return Lists.newArrayList(new ItemStack(this)); + } + else { + return Lists.newArrayList(); + } + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.CUTOUT; + } +} diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index b1a8c362..aaa277c7 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -7,10 +7,13 @@ import net.minecraft.item.Item; import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.blocks.AeterniumBlock; +import ru.betterend.blocks.BlockBlueVine; +import ru.betterend.blocks.BlockBlueVineLantern; +import ru.betterend.blocks.BlockBlueVineSeed; import ru.betterend.blocks.BlockEndstoneDust; import ru.betterend.blocks.BlockGlowingMoss; import ru.betterend.blocks.BlockMossyGlowshroomCap; -import ru.betterend.blocks.BlockMossyGlowshroomFur; +import ru.betterend.blocks.BlockGlowingFur; import ru.betterend.blocks.BlockMossyGlowshroomHymenophore; import ru.betterend.blocks.BlockMossyGlowshroomSapling; import ru.betterend.blocks.BlockOre; @@ -21,6 +24,7 @@ import ru.betterend.blocks.BlockUmbrellaMossTall; import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.TerminiteBlock; +import ru.betterend.blocks.basis.BlockUpDownPlant; import ru.betterend.blocks.complex.WoodenMaterial; import ru.betterend.tab.CreativeTab; @@ -38,13 +42,18 @@ public class BlockRegistry { public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling()); public static final Block MOSSY_GLOWSHROOM_CAP = registerBlock("mossy_glowshroom_cap", new BlockMossyGlowshroomCap()); public static final Block MOSSY_GLOWSHROOM_HYMENOPHORE = registerBlock("mossy_glowshroom_hymenophore", new BlockMossyGlowshroomHymenophore()); - public static final Block MOSSY_GLOWSHROOM_FUR = registerBlock("mossy_glowshroom_fur", new BlockMossyGlowshroomFur()); + public static final Block MOSSY_GLOWSHROOM_FUR = registerBlock("mossy_glowshroom_fur", new BlockGlowingFur(16)); public static final WoodenMaterial MOSSY_GLOWSHROOM = new WoodenMaterial("mossy_glowshroom", MaterialColor.GRAY, MaterialColor.WOOD); // Small Plants // - public static final Block UMBRELLA_MOSS = registerBlock("umbrella_moss", new BlockUmbrellaMoss()); - public static final Block UMBRELLA_MOSS_TALL = registerBlock("umbrella_moss_tall", new BlockUmbrellaMossTall()); - public static final Block CREEPING_MOSS = registerBlock("creeping_moss", new BlockGlowingMoss(10)); + public static final Block UMBRELLA_MOSS = registerBlock("umbrella_moss", new BlockUmbrellaMoss()); + public static final Block UMBRELLA_MOSS_TALL = registerBlock("umbrella_moss_tall", new BlockUmbrellaMossTall()); + public static final Block CREEPING_MOSS = registerBlock("creeping_moss", new BlockGlowingMoss(10)); + + public static final Block BLUE_VINE_SEED = registerBlock("blue_vine_seed", new BlockBlueVineSeed()); + public static final Block BLUE_VINE = registerBlockNI("blue_vine", new BlockBlueVine()); + 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 BlockGlowingFur(3)); // 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/features/MossyGlowshroomFeature.java b/src/main/java/ru/betterend/world/features/MossyGlowshroomFeature.java index fcd09dee..3e31a320 100644 --- a/src/main/java/ru/betterend/world/features/MossyGlowshroomFeature.java +++ b/src/main/java/ru/betterend/world/features/MossyGlowshroomFeature.java @@ -17,7 +17,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import ru.betterend.blocks.BlockMossyGlowshroomCap; -import ru.betterend.blocks.BlockMossyGlowshroomFur; +import ru.betterend.blocks.BlockGlowingFur; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.BlockRegistry; import ru.betterend.registry.BlockTagRegistry; @@ -123,19 +123,19 @@ public class MossyGlowshroomFeature extends DefaultFeature { BlockState state = world.getBlockState(bpos); if (state.getBlock() == BlockRegistry.MOSSY_GLOWSHROOM_HYMENOPHORE) { if (world.isAir(bpos.north())) { - BlocksHelper.setWithoutUpdate(world, bpos.north(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockMossyGlowshroomFur.FACING, Direction.NORTH)); + BlocksHelper.setWithoutUpdate(world, bpos.north(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.NORTH)); } if (world.isAir(bpos.east())) { - BlocksHelper.setWithoutUpdate(world, bpos.east(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockMossyGlowshroomFur.FACING, Direction.EAST)); + BlocksHelper.setWithoutUpdate(world, bpos.east(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.EAST)); } if (world.isAir(bpos.south())) { - BlocksHelper.setWithoutUpdate(world, bpos.south(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockMossyGlowshroomFur.FACING, Direction.SOUTH)); + BlocksHelper.setWithoutUpdate(world, bpos.south(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.SOUTH)); } if (world.isAir(bpos.west())) { - BlocksHelper.setWithoutUpdate(world, bpos.west(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockMossyGlowshroomFur.FACING, Direction.WEST)); + BlocksHelper.setWithoutUpdate(world, bpos.west(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.WEST)); } if (world.getBlockState(bpos.down()).getMaterial().isReplaceable()) { - BlocksHelper.setWithoutUpdate(world, bpos.down(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockMossyGlowshroomFur.FACING, Direction.DOWN)); + BlocksHelper.setWithoutUpdate(world, bpos.down(), BlockRegistry.MOSSY_GLOWSHROOM_FUR.getDefaultState().with(BlockGlowingFur.FACING, Direction.DOWN)); } } else if (BlockRegistry.MOSSY_GLOWSHROOM.isTreeLog(state) && random.nextBoolean() && world.getBlockState(bpos.up()).getBlock() == BlockRegistry.MOSSY_GLOWSHROOM_CAP) { diff --git a/src/main/resources/assets/betterend/blockstates/blue_vine.json b/src/main/resources/assets/betterend/blockstates/blue_vine.json new file mode 100644 index 00000000..6fcc3a38 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/blue_vine.json @@ -0,0 +1,7 @@ +{ + "variants": { + "shape=top": { "model": "betterend:block/blue_vine_top" }, + "shape=middle": { "model": "betterend:block/blue_vine" }, + "shape=bottom": { "model": "betterend:block/blue_vine_roots" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/blue_vine_fur.json b/src/main/resources/assets/betterend/blockstates/blue_vine_fur.json new file mode 100644 index 00000000..709d6d90 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/blue_vine_fur.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=up": { "model": "betterend:block/blue_vine_fur" }, + "facing=down": { "model": "betterend:block/blue_vine_fur", "x": 180 }, + "facing=north": { "model": "betterend:block/blue_vine_fur", "x": 90 }, + "facing=south": { "model": "betterend:block/blue_vine_fur", "x": 90, "y": 180 }, + "facing=east": { "model": "betterend:block/blue_vine_fur", "x": 90, "y": 90 }, + "facing=west": { "model": "betterend:block/blue_vine_fur", "x": 90, "y": 270 } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/blue_vine_lantern.json b/src/main/resources/assets/betterend/blockstates/blue_vine_lantern.json new file mode 100644 index 00000000..36166e18 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/blue_vine_lantern.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/blue_vine_lantern" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/blue_vine_seed.json b/src/main/resources/assets/betterend/blockstates/blue_vine_seed.json new file mode 100644 index 00000000..14305418 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/blue_vine_seed.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "betterend:block/blue_vine_seed_0" }, + "age=1": { "model": "betterend:block/blue_vine_seed_1" }, + "age=2": { "model": "betterend:block/blue_vine_seed_2" }, + "age=3": { "model": "betterend:block/blue_vine_seed_3" } + } +} diff --git a/src/main/resources/assets/betterend/models/block/blue_vine.json b/src/main/resources/assets/betterend/models/block/blue_vine.json new file mode 100644 index 00000000..4bdc7a03 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_fur.json b/src/main/resources/assets/betterend/models/block/blue_vine_fur.json new file mode 100644 index 00000000..086382f8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_fur.json @@ -0,0 +1,120 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine_fur", + "texture": "betterend:block/blue_vine_fur", + "spore": "betterend:block/blue_vine_fur" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -10 ], + "to": [ 16, 0, 6 ], + "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 10 ], + "to": [ 16, 0.001, 26 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 10, -0.001, 0 ], + "to": [ 26, 0, 16 ], + "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -10, 0, 2 ], + "to": [ 6, 0.001, 18 ], + "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 0, 0, -6.5 ], + "to": [ 0.001, 16, 16 ], + "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX6", + "from": [ -6.5, 0, 15.999 ], + "to": [ 16, 16, 16 ], + "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 9, -0.001, 0 ], + "to": [ 25, 0, 16 ], + "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -9, 0, 2 ], + "to": [ 7, 0.001, 18 ], + "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json b/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json new file mode 100644 index 00000000..cf9d222f --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json @@ -0,0 +1,64 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine_fur", + "texture": "betterend:block/blue_vine_fur" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0.001 ], + "rotation": { "origin": [ 0, 16, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -3, 0 ], + "to": [ 16, 13, 0.001 ], + "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -8, 0 ], + "to": [ 16, 8, 0.001 ], + "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, -12, 0 ], + "to": [ 14, 4, 0.001 ], + "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 3, -15, 0 ], + "to": [ 19, 1, 0.001 ], + "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_lantern.json b/src/main/resources/assets/betterend/models/block/blue_vine_lantern.json new file mode 100644 index 00000000..081c749b --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_lantern.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cube_noshade", + "textures": { + "texture": "betterend:block/blue_vine_lantern" + } +} diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_roots.json b/src/main/resources/assets/betterend/models/block/blue_vine_roots.json new file mode 100644 index 00000000..0df8affc --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_roots.json @@ -0,0 +1,76 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine", + "texture": "betterend:block/blue_vine", + "roots": "betterend:block/blue_vine_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/blue_vine_seed_0.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json new file mode 100644 index 00000000..19c0e477 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json new file mode 100644 index 00000000..d702300d --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json new file mode 100644 index 00000000..2c38fe55 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json new file mode 100644 index 00000000..78a23f65 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_top.json b/src/main/resources/assets/betterend/models/block/blue_vine_top.json new file mode 100644 index 00000000..be895b06 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/blue_vine_top.json @@ -0,0 +1,76 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine", + "texture": "betterend:block/blue_vine", + "roots": "betterend:block/blue_vine_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, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "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, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "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, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "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, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/cross_no_distortion.json b/src/main/resources/assets/betterend/models/block/cross_no_distortion.json new file mode 100644 index 00000000..dc78e239 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/cross_no_distortion.json @@ -0,0 +1,29 @@ +{ + "textures": { + "particle": "#texture" + }, + "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" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/test.json b/src/main/resources/assets/betterend/models/block/test.json deleted file mode 100644 index d5aa62a9..00000000 --- a/src/main/resources/assets/betterend/models/block/test.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "betterend:block/mossy_glowshroom_planks" - } -} diff --git a/src/main/resources/assets/betterend/models/item/blue_vine_fur.json b/src/main/resources/assets/betterend/models/item/blue_vine_fur.json new file mode 100644 index 00000000..b05d95f7 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/blue_vine_fur.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/blue_vine_fur" + } +} diff --git a/src/main/resources/assets/betterend/models/item/blue_vine_lantern.json b/src/main/resources/assets/betterend/models/item/blue_vine_lantern.json new file mode 100644 index 00000000..188f5aa7 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/blue_vine_lantern.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/blue_vine_lantern" +} diff --git a/src/main/resources/assets/betterend/models/item/blue_vine_seed.json b/src/main/resources/assets/betterend/models/item/blue_vine_seed.json new file mode 100644 index 00000000..de4fac84 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/blue_vine_seed.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/blue_vine_seed" + } +} diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine.png b/src/main/resources/assets/betterend/textures/block/blue_vine.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1a879624e20a3c5447bb10dfd40ee1469d8544 GIT binary patch literal 2195 zcmbVO4N%i&7_N#AQN)1)L(vd_U}Bo2Ern$5kWr)vMF(}Fpd%z7kfUu%6KFwq?%bF| zWJAT9Oqe20JvY6n=iEeah>rOO6Ll)!1a7+H{JlAcPQ|6A^yUtoXYP`G$@jd^`}4ec zFU9i`V?8|rJR}l{XPj1(B;Lo`Pxlexb@JUOlz1Cy)-L2Fl2JbPbBN^gN`HxDcq6M% z5mIysB+VJ66vJfzsm*8>(GrO&(q^XU93Vg$Ad5Ar;oG%`VTfha@PaTMrZY!_Y*t%n z0m+4ldb%)&CKx#KO-N-UMFJxbD9C0sn0V5rh8?`5xVFDWVaNdya@25?-652sn+HX6 z7664wl?aV1WKcLE#g!N#Q_O^97#@yd;V3RgFr37cq?~}92P}HCFqveMX13Fp_@suj z1;I?BsMTtfTIEvCl7->~L7^p^bhKTV2qSCDcA8HR;o zauUP(p*pb@7)qc911l6HCVvXdF>GeR|3Vp>%;YRaN-Pv>q_O~NHf1@y>2zeAi5Dmn z4dOIvSPWIlvJA=4IG_lcKo}+rN92S8LkO7|GGM|10Jxlvz`_UYH5{F17jeLz5$%q}gj zxXW0OGPZipi;$YoYP`b<@KTT!UrL4I0%Z{H9fzZ(Jzt!TbZ_I8iR#YIp6ZOUGZmU*8g3ziUfJ`>?P(Js>DJXX=ch6NhiyKjNI; zTbYyb;C!s2qPX;`hwm@p=^xxrt}D<&q&rtO@2z-&pO97XXWHrO;u_qWu*Rh-w_U!g546P1pRW&%4;kaRt}OIA?6pM-N6Rb5 z<)?Y|B#baDO}_SfFn3~KR|VR==}<$^=I!QLP@7+%s@4C=;;(9|&y_WAYe2?7`Y<-~ z){>^WIl4LP`--&1Y4!_S_z-YN_ez zJ5^nrp~%o5sjNtPW9?Pd;-w3^+B)Drik74mS|%8*e)q~k+-hoT)HgzSNZR^a#F)(3 zzq?AN(ON_O?WPQ)Vag%<9 zPVOx`oq0@SOE8}*U*4IzNs-tU+DV;6e(Y@bMLH%ot=Vkz2#!8fnzpDYOZh|oU!6Di dojt)k8omM~JZ2tx8126eaWRRS-EXC@_y>kC4s-wj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_0.png b/src/main/resources/assets/betterend/textures/block/blue_vine_0.png new file mode 100644 index 0000000000000000000000000000000000000000..87c55590d9b2a7afe4a393a7bbe9c51814492d53 GIT binary patch literal 1914 zcmb_dU5MO79M4iMwzX0%!r7OG6u;2fOujaovD@=*_u5@B*Ymp2D~NV>X0jV^lZi?0 zcK2Si1%>m)_EGCYRRmFJU-U_#<$MwPpijOk6z)NgK8T2*tdsq+*1LKX14$;6-~9ex zznTB~!u*N-dk^iEBx!%GT3HnD1KIt+Zt*<)OCO8Zo~U{zk)(YGvpXlf_x_Y5?f$^8 zFQrTF3yAO_k121kd^d;$T9S@VcOy)eSt>VJ(+^9^tuL=BvQJCOY0HIfRAw!|x)!rj zYx8xowoDwVOdpevc99?mSc>It&<+#SEhz(DB*xjas>lOKx?ECbGK2DxyC9c&%w#KH z07Nr&*>>_;0Xn+*tgJ)LR-vtG27nrZ1!Oq#=u(8Wn0jcja(rY-uy)eaH5GF^)3>B7;*pE`5hjPY<8+;`#DZ`nhA~Z`U)p2SrN1KLp@VY1ji(GNNbq5*uWNmgxP>#(*q4?d4M?{@d{M8 zu&s^RPR732Qn-CPYvvUdj0LDu4KoYqTCo5u$239F!5HX{MImh14lW9wzwMTJo5wDv zBIiaX=z*|M)lWqAdZR6JioG@(wS9S@C4@;P_mV=gIy0(_ru{AQv@?%}w4D|cq<1O) z5SDN+?ckWrG(}E#qAztj{}a4=cke0D78jQF2KOhfO9xYY*_h0rFp7_20;|77RoIJDs@FjHorFZwx z=f2zQ|MvaMxzCdMFV5Wn7j8b8Kk(?A_f0)^?W?apy?A-w+2`fYf1SSiR&MF%n;w6# ZC!M%twa&kI;Y!vWYjg9JE3;?M{{?cXU-bY0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_1.png b/src/main/resources/assets/betterend/textures/block/blue_vine_1.png new file mode 100644 index 0000000000000000000000000000000000000000..02eb2084e53c754b3f0f95d6fdd9b957784a7e7f GIT binary patch literal 1963 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_fur.png b/src/main/resources/assets/betterend/textures/block/blue_vine_fur.png new file mode 100644 index 0000000000000000000000000000000000000000..ae5b9b2e102a6f4cbd7c043f6fb7f3276b252f9e GIT binary patch literal 1921 zcmbVNeQeZZ94Hwte2` zd43=LwXLdhetzDhJPgC~1AbpMIv3i<*fHq;@qxbpIz6EK8%zuvH_<*uVcT~UW7z$D zN~qqd4=xZTE#UyN7KV;gLPux}n^~UHfwUZ2co;?%)l2+*_!9zGWG_+Y4AMcp0>%`7 zvjJ%%Il!yot&;ocW5m!wyRn2UgP{ODb&?&}2+aYCuvXsN=jYd2pE=v@Q!vs_<6JePgR*z|xX2!HTQ0E@s zCV)~K4CXXO^pZ&ABur~=6AB}nkP*>lD6K=P8k$<8A;Gy#$YzNhjV@Lg5LlWK(zN(c zp{j-~;}sQlVLbSgb&4u$NwaL&9_RxW^b#!1(j@I6879OsqLURF&(ky~()1uSsL4ts zJq*eqG#6q7k@tuUdm9vWjSMXCpI})MBbt!_C}t%AqL9+nD1qlPDOPB4%|OD)9hY$t z42l8Ow16tXfX_>yupNpbi*CU4jFW+6n05k^cJhD(e3&6&BrJ#Bl1FeterUf>lN#;f z+WQClT-GGS@sBDH1eYK%5t8GeL^5t(Ac5P%lN^vefOC1Ih#L&CEi@GLs)6`$R@;?~ z7(E_apb?|8$>CjuZoG6ru@A5q3P3J!=L_L;bsInP$;-|UcQ{gur@YV@Mw)_1P=cD(gb_m*YPmdtYR+T`Ep_ZI@K|J039 z;pp++Z{`=pDyrbPGS6<(< zWZoms)VjUD{5Yq3Mg3v_cUSXQrCau4Coa_u^fbh{D`T*pv9IjhSQ_X#)PAhBe>*(* z;=YE!_d?MRUzM&plTW5kO*rz|lE-F{$)YlhW*8>uB<(MY0L-T?p=9q z@7rzb7eDmj>3CPm>*<3l*>&(?_nyM88P9L~m3(>Jfn=#5t=YD73vsjfCGFfB7sBnk zYZu(tzJ$bL6VEr7wI3~g^Utf}n@*OMU7Im|>yF-n=N^2bXw8`u$E!DBm#OB>Ur%{I e{pvu+x{pV@w(4{wHPCH;Bm;9ReVucbuKpWk-jE6a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_lantern.png b/src/main/resources/assets/betterend/textures/block/blue_vine_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..05d32f11910a7ec7a88d568ea3d8f69afda143db GIT binary patch literal 2000 zcmbVN3sBQ$91joYYrq&jrfyKn`KC?UQc81lh%Kye6nRv^IjSK^+l;nJlavMCBhr=nSs0U+i6U2!!1bl)_=h9MoyPeydx%={cU%ub>`@jDw zN=|ysZ_MN|008*Kt5vDo{DO0g^5)*_)*B<##w~tFq`?GsyfC+Reg^qG7lh4L@MD|;c^R5yo|2?- zo>UkiKtqs^soFcoJ=8;#Y-{(PF? ziU=`1JC7$wu#z;9w1&huFH4*$>`EnAO)y-%a@|FdhFje$6Tx$34~(GB1Xu7;XJm1V z@BU0YvuB2A?M9p<{g-eL!5C7{+7TL$F>qddnv4QD{Xu6n4w(Y}-AdQlUn+MP&b0&Q z($j~yji;007Os8KT%TG$HhmNTc(00A#b{@aA94IFIVE-+(AKa2TQ3SJrDGZTSNMa=OiTUV(D8vHsJ9-3=MUhUw=b_uFs&+}fI3+Izwf{YBk^ zN8<_?XIA#j-lUl5KgjBC5!1dq(wF0RaEoQ#jsCawIYAAwfmUUCMX`Ei+lp6?5;f+B z`$|9Z57JK}_n5PLws-w5vx?{1YJ5UZ?6oZ$*`BgpF)&1X@4+}%!ldDC0IU)Bnr&I|&tIqruVY|OF%@CLrO0|V<$R9M$c-+3QdgHd8KFiJ?@c-kH zwx!^LfVtd8+I$0pI_fU0k)#&~HHIY1;>-Aj40PpuQGIlCMMGk6R?M3^%Wa*0baQ!P zi8iK6nx4IFN&2luK-p-N<$=OZ5)Pds6#)}<&jq^$q ze>i>9)Um6qQTp(T_1onw8=g}H)KqntLU-TL1rV|ksgX(MS$)X0?|1GI+qZfHAEY!- zT^M|Fa@G5p^&mMuGyL$o)TH*vwTtGQ+*DRLt&;qvp{dI2`k~amiCeb&b*~!i+&psj z){Rzm*V)N+byfYNKLg?-zr3jvMEF|^`xuNDYgb))RpSWh4qKtscz`I cclp=H)eq8sY9EoZ+WF6ok4;il&s$pXC;kTIasU7T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_roots.png b/src/main/resources/assets/betterend/textures/block/blue_vine_roots.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6be64bf1f3b4e0ae5e3933812a7b3186dbbbd2 GIT binary patch literal 1947 zcmbVN4Nw$S96t+#baW2-~aRd zw`@u3!f|7!jgd$s<1ESMG%!oW5%dChzdZ051JjF4@(NBO89PB7qa^RuhDsy>1C%YD zPq(I^IPFqk1f5ALyenj+sN_PH zTw0iF!wYk810jo_2gP|&K;R;I4D!01ZVvStWjkOxK*+fQH;;McZZ3R;!Ax>EOEEk}yCIPg%cS#o zqYPL&%)4KIH@slTOk_x_J&@m3}OUlGW;m zKatku@}oIEDIZug?AsI3oUMQ%;WUz?^H`ir$_E<5M+{>eG*5F5`XBu8AN##wP!mgH zJk8o@+BuS_B_k}5$s{I556xOmxe40CMT?4tWk@r|lSY{eQ6X|AB1hCVr506cP&E>R zs8IwNf?7c-5Ezd=9hfGltb+f95;&Sgvn~t-igICg5@y_XpEj!%wYWJRbK|7NY?J|0 z6%<9FIzo>idNNiXOU7#CnOcojj%6x!a*bN6Coq+cP-hV%@@5*(6O%Y1PyA2$#ViFb z5$1e$9)FTh6YZo~D@}kXtHl!bl@gjvaUfp>!Odx-nhD|np-W+<~1D?2GsS9&2>@p_8okwv`)aQ zx-Txx@74#*$hj(t&YP7#Z)&W4`*~~7?sr2s)-^{64`v^~(B9mno0*n# zz_z)3^~R}t@4jOczE}_(l|L=GjrjD3YHj;r*Y!o^Ve_Td9YS&BTM2A_m zTz;&m>y`K^gBexzJKJwg&+Y7(TXQP+K5@5e>iebAjGu0KC4y^1+{I=4S6hV0JrjjP z$3XvgA*x_g0Y X?Uq@$ORo)xzfVh2s(Ii1b#ML&ij>SC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/item/blue_vine_seed.png b/src/main/resources/assets/betterend/textures/item/blue_vine_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..91dcbe0f1010aa7cbbe92eb73591d9cc8e0ac65e GIT binary patch literal 1668 zcmbVNTWs4@7=A@v+_JVw#qclqO>-RTpUmO(UoFN#ZrJJ=S#$Z}vy_2%?&HK}j7zu3TEfXo6_#$Z1djIWZC7>i$aau-Cm4r(ogHkAs6w|<1wu;4GibSgLJJP1p zRkUGt4PlMSw%rkJMDrSA`jDY!bP;t8VTp|u#k8bqszy@%2Ro|ARckaMpd)CidQ??Y zl|c1YSja%Y3XGS0W}mD`YSwtx5>&o}g3v^MiUS;=SwI6m$^ilJLMy)u_W*1{BRCZ# zXu`V#tCAeg|0h%ug}ADxA$F9Uh6%)IN}?n!5)s0RVM0Yj;h>+ws=8!Z62w+Gz_%in z25zs9c8e_@8Uh%nq1VUq9thl`m#y3ns$#|pV&%T{KkvVy%lHw&)V=dmgCqphl&VKm z3458hQn-{#LP$1nyz=Eou@@aG&r&j3${qoVR)YH}(TXgRsPeXa&z{+&%_b2h{g-fW z!VEQTW}%Kc6WEJ)lTi%TpRr!!rYX$dtt_4W<>gl3xExs1Y8}FhY9&JoE?+vXQ=ua< z4?);G;b3RfJ1=e&iyii-#*e;Zi|2m<_f4IAI&&;egjTQJt}m>OIU26)Zf+Q_0mo8v zA0MwTbk8~(4mO|XiQuiv&!3n)b9#J_y}fN?eeB}O^3QqO*5D75w;BJb_jWclzq_>f zjpGvsv2fww%=pCe{L6)puFpFTT;AXPfsK5dd~MeotljBsJo{tgn6~3EBtrZQY?_>K z@b*WqCJOg^F7a(Q2hZKOwGu8A)dV;4vk)=hXYL_W7CR z+Sww{ZmEmSB?#{lIDc*8X7SSFvGucZ-Qor6*ST#O+o=781M5R$4-bDo{$bseZNX^V Zi5)lc_0oy!$0h4O5$@^