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 00000000..fa1a8796 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine.png differ 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 00000000..87c55590 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_0.png differ 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 00000000..02eb2084 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_1.png differ diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_2.png b/src/main/resources/assets/betterend/textures/block/blue_vine_2.png new file mode 100644 index 00000000..7b3a71b2 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_2.png differ diff --git a/src/main/resources/assets/betterend/textures/block/blue_vine_3.png b/src/main/resources/assets/betterend/textures/block/blue_vine_3.png new file mode 100644 index 00000000..efd224a1 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_3.png differ 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 00000000..ae5b9b2e Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_fur.png differ 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 00000000..05d32f11 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_lantern.png differ 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 00000000..5e6be64b Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/blue_vine_roots.png differ 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 00000000..91dcbe0f Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/blue_vine_seed.png differ