diff --git a/src/main/java/ru/betterend/blocks/basis/BlockFur.java b/src/main/java/ru/betterend/blocks/basis/BlockFur.java index cb2b6c2c..9793cc8b 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockFur.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockFur.java @@ -60,7 +60,6 @@ public class BlockFur extends BlockBaseNotFull implements IRenderTypeable { super(FabricBlockSettings.of(Material.REPLACEABLE_PLANT) .breakByTool(FabricToolTags.SHEARS) .sounds(BlockSoundGroup.WET_GRASS) - .luminance(15) .breakByHand(true) .noCollision()); this.drop = drop; @@ -98,7 +97,7 @@ public class BlockFur extends BlockBaseNotFull implements IRenderTypeable { public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { Direction direction = (Direction) state.get(FACING); BlockPos blockPos = pos.offset(direction.getOpposite()); - return sideCoversSmallSquare(world, blockPos, direction) || world.getBlockState(pos).isIn(BlockTags.LEAVES); + return sideCoversSmallSquare(world, blockPos, direction) || world.getBlockState(blockPos).isIn(BlockTags.LEAVES); } @Override diff --git a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java index 474fcf72..a27a2892 100644 --- a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java @@ -38,6 +38,7 @@ public class TenaneaFeature extends DefaultFeature { private static final Function REPLACE; private static final Function IGNORE; private static final List SPLINE; + private static final Direction[] DIRECTIONS = Direction.values(); @Override public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { @@ -82,16 +83,16 @@ public class TenaneaFeature extends DefaultFeature { } } + BlockState top = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP); + BlockState middle = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE); + BlockState bottom = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM); BlockState outer = EndBlocks.TENANEA_OUTER_LEAVES.getDefaultState(); + List support = Lists.newArrayList(); sphere.setPostProcess((info) -> { - if (info.getStateDown().isAir()) { - if (random.nextBoolean()) { - support.add(info.getPos().toImmutable()); - } - else { - info.setState(info.getPos().down(), outer.with(BlockFur.FACING, Direction.DOWN)); - } + if (random.nextBoolean() && info.getStateDown().isAir()) { + BlockPos d = info.getPos().down(); + support.add(d); } if (random.nextInt(5) == 0) { for (Direction dir: Direction.values()) { @@ -103,14 +104,14 @@ public class TenaneaFeature extends DefaultFeature { info.setState(EndBlocks.TENANEA.bark.getDefaultState()); } - if (info.getState().isOf(EndBlocks.TENANEA_LEAVES)) { - for (Direction d: BlocksHelper.HORIZONTAL) { - if (info.getState(d).isAir()) { - info.setState(info.getPos().offset(d), outer.with(BlockFur.FACING, Direction.DOWN)); - } + MHelper.shuffle(DIRECTIONS, random); + for (Direction d: DIRECTIONS) { + if (info.getState(d).isAir()) { + info.setBlockPos(info.getPos().offset(d), outer.with(BlockFur.FACING, d)); } } - else if (EndBlocks.TENANEA.isTreeLog(info.getState())) { + + if (EndBlocks.TENANEA.isTreeLog(info.getState())) { for (int x = -6; x < 7; x++) { int ax = Math.abs(x); mut.setX(x + info.getPos().getX()); @@ -137,16 +138,11 @@ public class TenaneaFeature extends DefaultFeature { return info.getState(); }); sphere.fillRecursiveIgnore(world, pos, IGNORE); - BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.TENANEA.bark); - BlockState top = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP); - BlockState middle = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE); - BlockState bottom = EndBlocks.TENANEA_FLOWERS.getDefaultState().with(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM); - support.forEach((bpos) -> { - int count = MHelper.randRange(5, 9, random); - mut.set(bpos).move(Direction.DOWN); + int count = MHelper.randRange(3, 8, random); + mut.set(bpos); BlocksHelper.setWithoutUpdate(world, mut, top); for (int i = 1; i < count; i++) { mut.setY(mut.getY() - 1); diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 2735675d..e47468c2 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -332,5 +332,6 @@ "block.betterend.amber_ore": "Amber Ore", "item.betterend.amber_gem": "Amber Gem", "item.betterend.raw_amber": "Raw Amber", - "block.betterend.tenanea_flowers": "Tenanea Flowers" + "block.betterend.tenanea_flowers": "Tenanea Flowers", + "block.betterend.tenanea_outer_leaves": "Tenanea Outer Leaves" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index fcc3fcb8..3cb5ccff 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -334,5 +334,6 @@ "block.betterend.amber_ore": "Янтарная руда", "item.betterend.amber_gem": "Огранённый янтарь", "item.betterend.raw_amber": "Необработанный янтарь", - "block.betterend.tenanea_flowers": "Цветы тенанеи" + "block.betterend.tenanea_flowers": "Цветы тенанеи", + "block.betterend.tenanea_outer_leaves": "Внешние листья тенанеи" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/tenanea_leaves.json b/src/main/resources/assets/betterend/materialmaps/block/tenanea_leaves.json new file mode 100644 index 00000000..11eeb91f --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/tenanea_leaves.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:leaves_noshade" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/tenanea_outer_leaves.json b/src/main/resources/assets/betterend/materialmaps/block/tenanea_outer_leaves.json new file mode 100644 index 00000000..11eeb91f --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/tenanea_outer_leaves.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:leaves_noshade" +} diff --git a/src/main/resources/assets/betterend/materials/leaves_noshade.json b/src/main/resources/assets/betterend/materials/leaves_noshade.json new file mode 100644 index 00000000..f717541e --- /dev/null +++ b/src/main/resources/assets/betterend/materials/leaves_noshade.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/textures/block/tenanea_outer_leaves.png b/src/main/resources/assets/betterend/textures/block/tenanea_outer_leaves.png index 78a92360..4a200c2d 100644 Binary files a/src/main/resources/assets/betterend/textures/block/tenanea_outer_leaves.png and b/src/main/resources/assets/betterend/textures/block/tenanea_outer_leaves.png differ