# HUD Proto — «ратчет-курсор» для Minecraft Java 26.3

Фиксированная камера + чтение дельты мыши + курсор и кнопки на display-энтитях.

## Как это работает (суть)
- Единственный доступный датапаку канал мыши — поворот игрока (yaw/pitch). Сырой ввод мыши недоступен.
- Каждый тик: читаем углы игрока -> считаем дельту от базового угла -> копим её в «пиксели курсора» (cx/cy) -> СБРАСЫВАЕМ вращение игрока на базовый угол (tp).
- Именно этот сброс и есть известный «дребезг»: камера качается на угол, который мышь прошла за ОДИН тик (20 Гц).
- Секрет: чем больше K (пикселей курсора на градус), тем меньше угол за тик при той же скорости курсора.
  Амплитуда дрожания (px) ≈ скорость_курсора(px/с) × (ширина_экрана_px / FOV°) / (20 × K).
  Пример: 1920px, FOV 70°, K=400, курсор 600 px/с -> ~2px. При K=800 -> ~1px. Когда мышь стоит — дрожания НЕТ вообще.
- Курсор/кнопки/панель — text_display, ставятся каждый тик кареткой (^ ^ ^) в контексте базового угла, поэтому их относительная геометрия идеальна.

## Установка
1. Датапак `HUD-proto-datapack-26.3.zip` -> в папку мира `datapacks/` (или на сервер), ресурспак `HUD-proto-RP-26.3.zip` -> в `resourcepacks/` (включить).
2. Включить читы/оператора. `/reload`.

## Быстрый старт
- Встань и посмотри туда, где должен быть экран.
- `/function hud:start` — включить режим (появится панель, курсор «+», кнопки).
- Мышь = курсор. ЛКМ/ПКМ = клик по кнопке под курсором. Кнопка [ X ] = выход. Или `/function hud:stop`.
- `/function hud:skin/glyphs` — переключить на глифы © и ® (нужен включённый ресурспак). `/function hud:skin/ascii` — обратно.

## Настройка «незаметности» дрожания
1. Чувствительность мыши в клиенте -> на минимум (0%). Она всё равно не ноль (~0.01°/отсчёт), это нормально.
2. Крути K: `/scoreboard players set #K hud.cfg 400` (400 по умолчанию; больше = быстрее курсор и меньше дрожания).
   Ориентир: K = 300..800. Если курсор слишком резкий — чуть меньше; если видно дрожание при быстрых движениях — больше.
3. Побольше FOV (дрожание в пикселях меньше). Опционально включи в клиенте «Плавная камера» и сравни.
4. Когда мышь неподвижна — камера стоит идеально (ноль дрожания).

## Ограничения прототипа
- Сэмплинг мыши 20 Гц (клиентский тик) — это физический предел ванильного пайплайна.
- FOV/аспект: экран рисуется в угловых единицах, так что внутренняя геометрия от FOV не ломается, но размер на экране зависит от FOV.
- Мультиплеер: display-энтити видны всем (это прототип на одного игрока).
- `/tp`-сброс шлёт позиционный пакет каждый тик; игрок залочен (movement_speed=0, jump_strength=0), при выходе режима возвращается 0.1/0.42.
- Скины: ASCII работает без ресурспака; глифы — только с ресурспаком.

## Что проверить в игре
- [ ] камера стоит на месте, дрожание незаметно/терпимо (покрути K)
- [ ] курсор двигается плавно в правильные стороны (если оси инвертированы — скажи, поменяю знак)
- [ ] ЛКМ/ПКМ по кнопкам работает (клики ловит невидимый interaction-«ловец»)
- [ ] выход по [ X ] возвращает управление
