chore(history): squash 16 commit(s) from 2026-09-11
- refactor(7): Cosmetics overhaul — built-in ChinaHat/TazikHat/BackSword в слоты, файлы ≤200, i18n en+ru, тесты - docs(7): Cosmetics Overhaul завершён; 8.5.2 — TazikHat 859 закрыт портированием - perf(9.1): glGetError только когда clip активен или stencil-debug - perf(9.1): isVulkanBackend() кэшируется после инициализации устройства - perf(9.1): PreTranslucentDepth copy по запросу потребителя, не каждый кадр - perf(9.1): copyMainColor в captureWorldSource только при запрошенном blur - perf(9.1): ленивые лейблы профайлера — склейка строк только с dev-профайлером - perf(9.1): переиспользуемые scratch-объекты в GameRendererMixin вместо new/кадр - docs(9.1): мёртвые грузы FPS закрыты — 6/6 пунктов (137121e…4d60d3d); 9.3 A/B мерка не снята - revert(9.1): Frustum-reuse через @Invoker убран — краш на реальном рантайме - docs(9.1): пометка — Frustum-reuse отменён, @Invoker падает на remapped-классе - feat(gui): tooltip с описанием при наведении на строку настроек (включая function-бинды) - feat(7.x): волна 17:07–18:03 (параллельная сессия) — checkpoint перед доделкой - feat(7): ShaderSky — завершён режим Starry (звёздное небо с луной) - feat(7): порт Wings (WiNGS.zip) — крылья на спину, 8 типов, взмахи по позам - fix(7): KineticLyrics — симметрия resync (пауза/seek) + tooltip-описания настроек синха
This commit is contained in:
parent
573780cd5f
commit
e06ebc26ff
69 changed files with 1802 additions and 2835 deletions
103
TODO.md
103
TODO.md
|
|
@ -28,12 +28,13 @@
|
|||
- [x] Фаза 4: Security (BackdoorProtection, StaffTracker)
|
||||
- [x] Фаза 5: Нормализация модулей (ленивый Minecraft, GameClock)
|
||||
- [x] Фаза 6: Тесты (EventBus, конфиг, утилиты) — см. `combatant-client-26.2/TODO.md`
|
||||
- [ ] Фаза 7: Новые модули по мотивам SoupVisuals — см. ниже
|
||||
- [ ] Фаза 7: Новые модули по мотивам SoupVisuals — Cosmetics Overhaul ЗАВЕРШЁН 2026-09-11,
|
||||
см. ниже (остатки: Gps, HitBubbles, AmbientParticles, EndCrystal, Trinket, Balancer, HandsShader)
|
||||
- [ ] Фаза 8.5: Аудит структуры ≤200/≤4 — 8.5.1 (папки >4) ЗАВЕРШЕНА 2026-09-10
|
||||
(0 папок >4, коммиты 8846d53…303b17e); далее 8.5.2 (гиганты >600),
|
||||
план в `combatant-client-26.2/TODO.md`
|
||||
- [ ] Фаза 9: Оптимизация FPS (9.1 фиксы мёртвых грузов → 9.2 модуль Optimize),
|
||||
план в `combatant-client-26.2/TODO.md`
|
||||
- [ ] Фаза 9: Оптимизация FPS — 9.1 (мёртвые грузы) ЗАВЕРШЕНА 2026-09-11 (137121e…4d60d3d);
|
||||
9.2 Optimize гейтится Фазой 8.5, 9.3 A/B-мерка needs запуск на Windows
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -63,87 +64,21 @@
|
|||
иконки-спутники (Atom/Ball/Cat/Donut/Flame/Flower/Gem/Ghost/MCTiers), трейл
|
||||
(цвет sync/custom, длина, толщина), звуки (типы + громкость), частицы
|
||||
(у Soup 315 стр.). Референс: `other/Trinket.java`
|
||||
- [ ] **Cosmetics Overhaul (Unified Cosmetics)** — сейчас модуль бесполезен (next/prev
|
||||
keybind без экрана). План (обсуждён в брейнсторме, черновик, детали могут
|
||||
измениться):
|
||||
- **Слоты вместо типов**: новый `CosmeticSlot` enum — `MODEL, PET, HEAD,
|
||||
SHOULDERS, BACK, WAIST, LEGS, HELD` (8 шт). `CosmeticType` (MODEL/PET/ACCESSORY)
|
||||
остаётся внутри `CosmeticModel` как есть (анимация/рендер-логика не трогается).
|
||||
- Аксессуары (ACCESSORY) получают поле `slot` — парсится из `avatar.json`
|
||||
(`"slot": "head"`), при отсутствии — вывод по имени папки (существующая
|
||||
эвристика witch/hat→HEAD, wing→BACK, wheel→WAIST, иначе→HELD).
|
||||
- `CosmeticManager`: `EnumMap<CosmeticSlot, CosmeticModel>` вместо 3 полей.
|
||||
MODEL/PET — по одному активному. 6 accessory-слотов — **можно носить
|
||||
несколько одновременно** (шляпа + крылья + пояс разом).
|
||||
- Экран `CosmeticsScreen`: левая панель — живая 3D-модель игрока
|
||||
(`InventoryScreen.renderEntityInInventoryFollowsMouse` или свой вызов
|
||||
EntityRenderDispatcher), drag ЛКМ по превью — вращение (yaw/pitch,
|
||||
pitch ограничен ±30°), скролл — zoom (0.5–2.0), кнопка сброса угла.
|
||||
Открывается через **ПКМ по модулю в ClickGUI** (спецкейс вместо обычной
|
||||
settings-панели — прецедент есть в `ClickGuiEditorScreen`).
|
||||
- Hotspot-зоны поверх 3D-модели (HEAD/SHOULDERS/BACK/WAIST/LEGS + иконка
|
||||
HELD сбоку) — клик открывает правую панель выбора модели для этого слота.
|
||||
- Offset/rotation/scale — **на слот** (не на модель, т.к. модулей может быть
|
||||
десятки, а статичных SettingDef-полей на каждую не сделать): 6 стандартных
|
||||
num()-хелперов модуля (per-slot), visibleWhen(активный слот). Смена модели
|
||||
в слоте может потребовать подстройки — ок, вписывается в существующий
|
||||
SettingDef/SettingFactory конвейер без новой инфраструктуры.
|
||||
- Цвета из Theme.theme() (windowBg/accent/textMuted), файлы по правилам
|
||||
≤200 строк/≤4 файла на папку: `CosmeticsModule`, `CosmeticsScreen`,
|
||||
`CosmeticsSlot`(=CosmeticSlot), `CosmeticsSlotPanel`.
|
||||
- i18n: `module.cosmetics.*`, `setting.cosmetics.active_slot`,
|
||||
`offset_x/y/z`, `rotation`, `scale`, `setting.cosmetics.slot.<slot>` и т.д.
|
||||
(en_us + ru_ru обязательно).
|
||||
- Открытые вопросы для следующего захода: точные хитбокс-координаты зон
|
||||
по проценту региона превью, формат хранения per-slot offset в .lvcfg,
|
||||
нужен ли предпросмотр модели до эквипа в правой панели.
|
||||
- **Портирование процедурных head/back-модулей в слоты** — из всех
|
||||
`visuals/*` только 3 модуля реально являются «надетыми на игрока»
|
||||
процедурными косметиками (нашёл через grep по HeadAnchor-хелперу):
|
||||
- `ChinaHat` (+`ChinaHatModel`, `ChinaHatPalette`, 295+107+144 стр.) —
|
||||
конус на голове → встроенная опция слота **HEAD**.
|
||||
- `TazikHat` (859 стр.! требует разбивки на файлы ≤200 стр. при
|
||||
портировании — геометрия/палитра/модуль отдельно, как у ChinaHat) —
|
||||
«тазик»/чаша на голове → **HEAD**.
|
||||
- `BackSword` (287 стр.) — катана на спине → **BACK**.
|
||||
Остальные visuals-модули (ESP, Chams, Trails, Rain, PostFX и т.д.) —
|
||||
НЕ переносятся, это общие эффекты, а не надеваемые предметы.
|
||||
План: каждый становится встроенным вариантом (built-in entry, не
|
||||
.bbmodel) внутри соответствующего слота — юзер выбирает между
|
||||
своими .bbmodel-моделями И этими процедурными built-in вариантами
|
||||
в одном и том же слоте. Настройки самого варианта (цвет/размер/сегменты
|
||||
и т.д.) показываются в правой панели слота, когда built-in выбран
|
||||
активным. Старые `@ModuleInfo`-модули `chinahat`/`tazikhat`/`backsword`
|
||||
удаляются как отдельные модули из списка Visuals (их функциональность
|
||||
полностью переезжает в Cosmetics) — конфиг-миграция/бэккомпат не нужны
|
||||
(легит-клиент, публичного релиза со старыми конфигами ещё не было —
|
||||
уточнить у пользователя перед удалением).
|
||||
- **"None" в каждом слоте** — обязательный первый вариант в списке выбора
|
||||
любого слота (Model/Pet/Head/Shoulders/Back/Waist/Legs/Held): "ничего
|
||||
не надето", слот пуст, `CosmeticManager.active` для этого слота = null.
|
||||
Не путать с выключенным модулем `CosmeticDisplay` целиком — None это
|
||||
per-slot состояние, остальные слоты продолжают рендериться.
|
||||
- Подтверждено пользователем: точно только 3 built-in кандидата
|
||||
(ChinaHat/TazikHat/BackSword), остальные visuals-модули не переносятся.
|
||||
- **Решённые вопросы (финал черновика):**
|
||||
1. Hotspot-координаты — **вариант B**: проекция костей игрока (голова/тело/
|
||||
ноги vanilla-модели) в экранные координаты через `ScreenProjection`
|
||||
(уже есть в `render/helpers/`), а не фиксированные проценты региона —
|
||||
точнее держит зоны при вращении/приседе. Fallback на фикс-проценты,
|
||||
если в реализации окажется дороже, чем стоит.
|
||||
2. Хранение offset/rot/scale — **обычные `NumberValue`-поля модуля**
|
||||
(6 слотов × offset_x/y/z/rot/scale), сохраняются в `.lvcfg` как
|
||||
обычные настройки — без нового ConfigValue-типа.
|
||||
3. Правая панель — **live-apply**: клик по модели в списке слота сразу
|
||||
применяет и показывает на превью, без отдельной кнопки Apply.
|
||||
4. Built-in процедурные варианты (ChinaHat/TazikHat/BackSword) — **просто
|
||||
обычные записи в списке слота** (с иконкой-превью), не выделяются в
|
||||
отдельную секцию; настройки открываются так же, как у .bbmodel-моделей.
|
||||
5. `TazikHat` (859 стр.) при портировании — **разбить как ChinaHat**:
|
||||
`TazikHatGeometry` + `TazikHatPalette` + встраиваемый рендер-класс без
|
||||
собственного `@ModuleInfo`/Module-обвязки (вызывается из слота HEAD).
|
||||
6. Старые модули `chinahat`/`tazikhat`/`backsword` — **удаляются
|
||||
полностью** из списка Visuals, функциональность только в Cosmetics.
|
||||
- [x] **Cosmetics Overhaul (Unified Cosmetics)** — ЗАВЕРШЁН 2026-09-11:
|
||||
слоты `CosmeticSlot` (MODEL/PET/HEAD/SHOULDERS/BACK/WAIST/LEGS/HELD), парсинг
|
||||
`slot` из avatar.json + эвристика по имени папки, `CosmeticManager` на EnumMap
|
||||
(аксессуары — несколько одновременно), `CosmeticsScreen` (3D-превью drag/zoom +
|
||||
хотспоты + правая панель live-apply с "None" первым), per-slot offset/rot/scale
|
||||
через NumberValue-поля, built-in ChinaHat/TazikHat/BackSword в `cosmetics/builtin/`
|
||||
(старые модули chinahat/tazikhat/backsword удалены), i18n en+ru, тесты
|
||||
CosmeticSlotTest/CosmeticsHotspotTest.
|
||||
- ~~CosmeticDisplay 232 / TazikHatRenderer 242 / BackSwordRenderer 231 >200~~ —
|
||||
разбиты: CosmeticDisplay 196 + CosmeticBuiltins (значения+диспетчер built-in),
|
||||
TazikHat 186 (палитра-математика переиспользует ChinaHatPalette), BackSword 200
|
||||
(edge/glow слиты в параметризованный drawKatana).
|
||||
- Не сделано из плана (следующий заход): иконки-превью built-in в списке слота,
|
||||
правка слотов SHOULDERS/LEGS/PET из экрана (сейчас только HEAD/BACK built-in),
|
||||
предпросмотр до эквипа.
|
||||
- [ ] **Balancer** (mctiers) — тиры игроков с mctiers.info (у Soup отдельная категория
|
||||
MCTiers). Референс: `mctiers/Balancer.java`
|
||||
- [ ] **HandsShader: новые шейдеры руки** — у Soup 10 режимов (Solid, Chroma, Balatro,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue