- fix(stability): FireworkParticles NPE, mesh trim, tab-list warn spam, TargetHud mob icons - fix(trollface_mask): маска не рендерилась на себе, всех/друзей игнорировал всех кроме прицела - docs(todo): план Фазы 10 — заход по референсам из Downloads (trollface/rain/hiteffect/hmi) - docs(todo): вывод по сравнению Rain — уже паритет с обоими референсами, mokriyzhir отдельная идея на будущее - fix(wet_surface): кривая нормаль/мёртвый код ряби + новый модуль WetWorld (SSR top из 3 референсов) - docs(todo): отмечен WetWorld + фикс wet_surface шейдера как выполненные - feat(holdmyitems): grip-хват для мечей/инструментов (портировано из Delta HMI) - docs(todo): отмечен HoldMyItems grip как выполненный - feat(hiteffect): режим Impact Ring — кольцевая волна + вертикальное свечение при ударе - docs(todo): отмечена Фаза 10 полностью выполненной - feat(gps): новый модуль Gps — компас-стрелка + маркер к точке (идея Soup) - feat(hitbubbles): новый модуль HitBubbles — отдельно от HitEffect.BUBBLES - feat(ambientparticles): новый модуль — атмосферные мошки / светлячки со шлейфом - docs(todo): отмечены Gps/HitBubbles/AmbientParticles как выполненные (Фаза 7) - feat(endcrystal): новый модуль — тонировка модели + осколки при разрушении - docs(todo): отмечен EndCrystal как выполненный
9.3 KiB
9.3 KiB
LoVisual
Проект состоит из одного компонента — мода.
| Компонент | Стек | TODO |
|---|---|---|
combatant-client-26.2/ |
Java 25, Fabric (MC 26.2) | combatant-client-26.2/TODO.md |
Лаунчер (Rust + Slint) и backend (Rust + axum) удалены из проекта — развитие только мода.
Правила (для мода, продублированы в его TODO)
- KISS / DRY / SOLID
- Макс. 200 строк на файл (фасады-делегаты исключение)
- Макс. 4 файла на папку
- Никакого статика, никаких this-escape, никаких мёртвых миксинов
- Без пустышек; каждый этап компилируется (
./gradlew build) - Тесты обязательны для новых модулей (JUnit)
Статус
- Фаза 1: Ребрендинг
combatant→lovisual - Фаза 2: Выкинуть Runtime/JarReplacement + Panic
- Фаза 3: Разбивка 12 файлов-гигантов
- Фаза 3.5: Удаление читерских модулей (легит-направление)
- Фаза 4: Security (BackdoorProtection, StaffTracker)
- Фаза 5: Нормализация модулей (ленивый Minecraft, GameClock)
- Фаза 6: Тесты (EventBus, конфиг, утилиты) — см.
combatant-client-26.2/TODO.md - Фаза 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 (мёртвые грузы) ЗАВЕРШЕНА 2026-09-11 (137121e…4d60d3d); 9.2 Optimize гейтится Фазой 8.5, 9.3 A/B-мерка needs запуск на Windows
Фаза 7: Новые модули — референс SoupVisuals
Референс:
ref/soupvisuals-src/— SoupVisuals 3.2.0 (MC 1.21.11, лицензия SOUP-1.0). Код референса НЕ копируем (чужая лицензия + декомпил) — только пере-реализация идей под наши правила (≤200 строк/файл, ≤4 файла/папку, без статики, тесты). Модули референса лежат вref/soupvisuals-src/padej/soup/implement/features/modules/.
- Hitboxes (visuals) — цветные хитбоксы сущностей, как у Soup: ТОЛЬКО рендер
контейнера с настройкой цвета/видимости, БЕЗ увеличения хитбокса (увеличение —
чит, удалён в Фазе 3.5). Референс:
visuals/Hitboxes.java - Watermark (HUD, draggable) — обещан в README, в коде отсутствует
- Gps (world) — ЗАВЕРШЕНО 2026-09-15: компас-стрелка + маркер к точке
(
visuals/world/Gps.java,util/world/GpsBearing.javaчистая математика + тесты, команда%gps <x> <y> <z> | clear). Референс:world/Gps.java— идея взята (стрелка+маркер+дистанция+авто-удаление), код не копировался. Xaero-связка НЕ сделана (была опциональной идеей, не в скоупе запроса). Коммит fb0b288. - Light (world) — кастомный цвет освещения (у Soup 41 стр.). Референс:
world/Light.java - HitBubbles (particles) — ЗАВЕРШЕНО 2026-09-15: отдельный модуль
visuals/effects/HitBubbles.java(не режим HitEffect.BUBBLES — независимое включение, трёхфазная анимация появление/жизнь/исчезновение через новыйThreeStageProgress). Заодно вынесены общие хелперы из HitEffect (DRY):AttackHitPoint,OrientedQuadRenderer,AnimatedColorModeOptions. Референс:particles/HitBubbles.java(идея взята, код не копировался; интерполяции/множественные текстуры Soup не портированы). Коммит 5f2fc70. - AmbientParticles + FireFlyParticle (particles) — ЗАВЕРШЕНО 2026-09-15: модуль
visuals/particles/AmbientParticles.java, два режима — Ambient (плывущие мошки) и Firefly (блуждание + кольцевой буфер шлейфа вместо Trail-объектов референса). 19 визуальных стилей референса (Stars/Hearts/Bloom/.../Pyramid, asset-тяжёлые) НЕ портированы — фича-крип чит-клиента вне направления проекта; цвет через уже существующий AnimatedRenderColors вместо своей Sync/Custom-системы. Коммит 28ec166. - NameProtect (misc) — подмена своего ника и ников друзей в тексте чата/скорборда
(у Soup 42 стр.). Референс:
other/NameProtect.java - EndCrystal (visuals) — ЗАВЕРШЕНО 2026-09-15:
visuals/scene/EndCrystal.java+mixins/render/entity/EndCrystalRendererMixin.java(WrapOperation на ModelPart.render, различает 2 вызова glass + 1 cube счётчиком-ordinal — тонировка/скрытие частей) + inject вClientLevelMixin.removeEntity(осколки-вспышка на месте разрушения, т.к. ваниль убирает сущность мгновенно). Референс:other/EndCrystal.java— идея взята (кастомный цвет, "доиграть" разрушение), Sync/Custom×4-цвета+Wave/Vertex упрощены до общего AnimatedRenderColors. Коммит 50db8e3. - Trinket 2.0 — апгрейд нашего CosmeticDisplay до уровня Soup Trinket:
иконки-спутники (Atom/Ball/Cat/Donut/Flame/Flower/Gem/Ghost/MCTiers), трейл
(цвет sync/custom, длина, толщина), звуки (типы + громкость), частицы
(у Soup 315 стр.). Референс:
other/Trinket.java - 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,
Smoke, Stripes, Glow, Glass, Invert, Snow) + dual-режим с blend-режимами
(Mix/Add/Multiply/Screen/Overlay/Difference); шейдеры лежат в
ref/soupvisuals-src/assets/soupapi/shaders/hand/. Пере-реализовать недостающие и добавить к нашим (BackSword/Chams hand shaders уже есть dual — сверить набор). Референс:visuals/HandsShader.java - Фикс ChinaHat — текущая геометрия кривая (смахивает на самбреро/зонт);
переделать модель в нормальную конусную шляпу по референсу Soup
(
visuals/ChinaHat.java+ChinaHatModel.java).