стул без данных клиенту не нравится

НЕ ТИКАЙ НЕ СВОИМ СТУЛОМ, ЭТО СЕРВЕРНЫЙ
This commit is contained in:
YuRaNnNzZZ 2024-09-18 18:00:41 +03:00
parent dc1cf56ed9
commit a38e1c1548
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D
3 changed files with 13 additions and 6 deletions

View File

@ -28,13 +28,12 @@ class StarChairBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_PROPE
override fun useWithoutItem(blockState: BlockState, level: Level, blockPos: BlockPos, ply: Player, blockHitResult: BlockHitResult): InteractionResult { override fun useWithoutItem(blockState: BlockState, level: Level, blockPos: BlockPos, ply: Player, blockHitResult: BlockHitResult): InteractionResult {
if (ply.isCrouching) return super.useWithoutItem(blockState, level, blockPos, ply, blockHitResult) if (ply.isCrouching) return super.useWithoutItem(blockState, level, blockPos, ply, blockHitResult)
if (level.isClientSide) return InteractionResult.SUCCESS
val entities = level.getEntitiesOfClass(RideableDummy::class.java, AABB(blockPos, blockPos + BlockPos(1, 1, 1))) val entities = level.getEntitiesOfClass(RideableDummy::class.java, AABB(blockPos, blockPos + BlockPos(1, 1, 1)))
if (entities.isNotEmpty()) return InteractionResult.FAIL if (entities.isNotEmpty()) return InteractionResult.FAIL
val entity = RideableDummy(level) val entity = RideableDummy(level, blockPos, blockState)
entity.blockPos = blockPos
entity.blockState = blockState
entity.yRot = blockState[rotationFreedom()].front.toYRot() entity.yRot = blockState[rotationFreedom()].front.toYRot()
entity.setPos(blockPos.x + 0.5, blockPos.y.toDouble(), blockPos.z + 0.5) entity.setPos(blockPos.x + 0.5, blockPos.y.toDouble(), blockPos.z + 0.5)

View File

@ -15,6 +15,11 @@ class RideableDummy(level: Level) : Entity(MEntityTypes.RIDEABLE_DUMMY, level) {
var blockPos: BlockPos = BlockPos.ZERO var blockPos: BlockPos = BlockPos.ZERO
var blockState: BlockState = Blocks.AIR.defaultBlockState() var blockState: BlockState = Blocks.AIR.defaultBlockState()
constructor(level: Level, blockPos: BlockPos, blockState: BlockState) : this(level) {
this.blockPos = blockPos
this.blockState = blockState
}
init { init {
isNoGravity = true isNoGravity = true
noPhysics = true noPhysics = true
@ -23,10 +28,9 @@ class RideableDummy(level: Level) : Entity(MEntityTypes.RIDEABLE_DUMMY, level) {
override fun tick() { override fun tick() {
super.tick() super.tick()
if (level().isClientSide) return
if (level().getBlockState(blockPos) != blockState || passengers.isEmpty()) { if (level().getBlockState(blockPos) != blockState || passengers.isEmpty()) {
discard() discard()
return
} }
} }

View File

@ -29,7 +29,11 @@ object MEntityTypes {
} }
val RIDEABLE_DUMMY: EntityType<RideableDummy> by registry.register(MNames.RIDEABLE_DUMMY) { val RIDEABLE_DUMMY: EntityType<RideableDummy> by registry.register(MNames.RIDEABLE_DUMMY) {
EntityType.Builder.of({ _, level -> RideableDummy(level)}, MobCategory.MISC).sized(0.5f, 0.5f).build(MNames.RIDEABLE_DUMMY) EntityType.Builder.of({ _, level -> RideableDummy(level) }, MobCategory.MISC)
.sized(0.5f, 0.5f)
.passengerAttachments(0.5f)
.clientTrackingRange(8)
.build(MNames.RIDEABLE_DUMMY)
} }
fun register(bus: IEventBus) { fun register(bus: IEventBus) {