From b79a86b4308bbe3321e3d6086830c31030677d37 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 11 Mar 2021 21:35:09 +0300 Subject: [PATCH] Triple grass behaviour enhancement --- .../blocks/basis/TripleTerrainBlock.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java b/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java index 1acead20..70979594 100644 --- a/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java @@ -9,14 +9,19 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.MaterialColor; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; import net.minecraft.server.world.ServerWorld; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; import net.minecraft.util.Identifier; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; import net.minecraft.world.WorldView; import ru.betterend.blocks.BlockProperties; import ru.betterend.blocks.BlockProperties.TripleShape; @@ -62,6 +67,15 @@ public class TripleTerrainBlock extends EndTerrainBlock { return Patterns.STATE_TRIPLE_ROTATED_TOP; } + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + TripleShape shape = state.get(SHAPE); + if (shape == TripleShape.BOTTOM) { + return super.onUse(state, world, pos, player, hand, hit); + } + return ActionResult.FAIL; + } + @Override public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { TripleShape shape = state.get(SHAPE); @@ -77,7 +91,7 @@ public class TripleTerrainBlock extends EndTerrainBlock { } } else { - boolean top = canSurvive(state, world, pos); + boolean top = canSurvive(state, world, pos) || isMiddle(world.getBlockState(pos.up())); if (!top && !bottom) { world.setBlockState(pos, Blocks.END_STONE.getDefaultState()); } @@ -94,11 +108,18 @@ public class TripleTerrainBlock extends EndTerrainBlock { protected boolean canSurviveBottom(WorldView world, BlockPos pos) { BlockPos blockPos = pos.down(); BlockState blockState = world.getBlockState(blockPos); - if (blockState.getFluidState().getLevel() == 8) { + if (isMiddle(blockState)) { + return true; + } + else if (blockState.getFluidState().getLevel() == 8) { return false; } else { return !blockState.isSideSolidFullSquare(world, blockPos, Direction.UP); } } + + protected boolean isMiddle(BlockState state) { + return state.isOf(this) && state.get(SHAPE) == TripleShape.MIDDLE; + } }