feat: facing and waterlogged state for RS block
This commit is contained in:
parent
dfa5627ddd
commit
69449c8e66
@ -47,9 +47,6 @@ object CABlock : HorizontalDirectionalBlock(
|
|||||||
return super.defaultBlockState().setValue(FACING, context.horizontalDirection)
|
return super.defaultBlockState().setValue(FACING, context.horizontalDirection)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("OVERRIDE_DEPRECATION")
|
|
||||||
override fun getRenderShape(state: BlockState) = RenderShape.MODEL
|
|
||||||
|
|
||||||
@Suppress("OVERRIDE_DEPRECATION")
|
@Suppress("OVERRIDE_DEPRECATION")
|
||||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext) =
|
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext) =
|
||||||
shapes[state]!!
|
shapes[state]!!
|
||||||
|
@ -2,12 +2,15 @@ package quaedam.misc.reality
|
|||||||
|
|
||||||
import net.minecraft.core.BlockPos
|
import net.minecraft.core.BlockPos
|
||||||
import net.minecraft.core.Direction
|
import net.minecraft.core.Direction
|
||||||
import net.minecraft.world.level.block.EntityBlock
|
import net.minecraft.world.item.context.BlockPlaceContext
|
||||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraft.world.level.block.SimpleWaterloggedBlock
|
import net.minecraft.world.level.LevelAccessor
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity
|
import net.minecraft.world.level.block.*
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
|
import net.minecraft.world.level.block.state.StateDefinition
|
||||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||||
|
import net.minecraft.world.level.material.FluidState
|
||||||
|
import net.minecraft.world.level.material.Fluids
|
||||||
import net.minecraft.world.level.material.MapColor
|
import net.minecraft.world.level.material.MapColor
|
||||||
|
|
||||||
object RSBlock : HorizontalDirectionalBlock(
|
object RSBlock : HorizontalDirectionalBlock(
|
||||||
@ -15,7 +18,7 @@ object RSBlock : HorizontalDirectionalBlock(
|
|||||||
.noOcclusion()
|
.noOcclusion()
|
||||||
.strength(3f)
|
.strength(3f)
|
||||||
.requiresCorrectToolForDrops()
|
.requiresCorrectToolForDrops()
|
||||||
.mapColor(MapColor.COLOR_CYAN)
|
.mapColor(MapColor.COLOR_BLUE)
|
||||||
), EntityBlock, SimpleWaterloggedBlock {
|
), EntityBlock, SimpleWaterloggedBlock {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -28,4 +31,51 @@ object RSBlock : HorizontalDirectionalBlock(
|
|||||||
|
|
||||||
override fun newBlockEntity(pos: BlockPos, state: BlockState) = RSBlockEntity(pos, state)
|
override fun newBlockEntity(pos: BlockPos, state: BlockState) = RSBlockEntity(pos, state)
|
||||||
|
|
||||||
|
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||||
|
super.createBlockStateDefinition(builder)
|
||||||
|
builder.add(FACING, BlockStateProperties.WATERLOGGED)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getStateForPlacement(context: BlockPlaceContext): BlockState? {
|
||||||
|
if (!context.level.getBlockState(context.clickedPos.below()).canOcclude()) return null
|
||||||
|
return super.defaultBlockState().setValue(FACING, context.horizontalDirection)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION", "DEPRECATION")
|
||||||
|
override fun updateShape(
|
||||||
|
state: BlockState,
|
||||||
|
direction: Direction,
|
||||||
|
neighborState: BlockState,
|
||||||
|
level: LevelAccessor,
|
||||||
|
pos: BlockPos,
|
||||||
|
neighborPos: BlockPos
|
||||||
|
): BlockState {
|
||||||
|
if (state.getValue(BlockStateProperties.WATERLOGGED)) {
|
||||||
|
level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level))
|
||||||
|
}
|
||||||
|
return super.updateShape(state, direction, neighborState, level, pos, neighborPos)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION", "DEPRECATION")
|
||||||
|
override fun getFluidState(state: BlockState): FluidState = if (state.getValue(BlockStateProperties.WATERLOGGED)) {
|
||||||
|
Fluids.WATER.getSource(false)
|
||||||
|
} else {
|
||||||
|
super.getFluidState(state)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION", "DEPRECATION")
|
||||||
|
override fun neighborChanged(
|
||||||
|
state: BlockState,
|
||||||
|
level: Level,
|
||||||
|
pos: BlockPos,
|
||||||
|
neighborBlock: Block,
|
||||||
|
neighborPos: BlockPos,
|
||||||
|
movedByPiston: Boolean
|
||||||
|
) {
|
||||||
|
super.neighborChanged(state, level, pos, neighborBlock, neighborPos, movedByPiston)
|
||||||
|
if (!level.getBlockState(pos.below()).canOcclude()) {
|
||||||
|
level.destroyBlock(pos, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user