package net.shadowfacts.phycon.block import net.minecraft.block.BlockState import net.minecraft.block.entity.BlockEntity import net.minecraft.block.entity.BlockEntityTicker import net.minecraft.block.entity.BlockEntityType import net.minecraft.entity.player.PlayerEntity import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction import net.minecraft.world.World import net.minecraft.world.WorldAccess import net.shadowfacts.phycon.api.Interface import net.shadowfacts.phycon.api.NetworkComponentBlock /** * @author shadowfacts */ abstract class DeviceBlock(settings: Settings): BlockWithEntity(settings), NetworkComponentBlock { abstract override fun getNetworkConnectedSides(state: BlockState, world: WorldAccess, pos: BlockPos): Collection override fun getNetworkInterfaceForSide(side: Direction, state: BlockState, world: WorldAccess, pos: BlockPos): Interface? { return getBlockEntity(world, pos)!! } override fun onBreak(world: World, pos: BlockPos, state: BlockState, player: PlayerEntity) { super.onBreak(world, pos, state, player) getBlockEntity(world, pos)!!.onBreak() } override fun getTicker(world: World, state: BlockState, type: BlockEntityType): BlockEntityTicker? { return if (world.isClient) { null } else { BlockEntityTicker { world, blockPos, blockState, blockEntity -> (blockEntity as DeviceBlockEntity).tick() } } } }