Per mod/docs/optimize-layer-design.md Stage 3 (continued). This batch implements the Stage 1 mixin-contract interfaces on their target MC classes so CachedName, StateEntity, TickCached, CachedLight, CachedValidity and CachedStack actually get used. Seven new mixin'ов; no new helpers (the helpers were all written in Stage 1 already). Entity-contract mixins (mixins/optimize/entity/): - EntityNameMixin: implements CachedName on Entity — adds the per-tick cached name-tag fields (Component + tick). Vanilla Entity.getDisplayName() rebuilds the team prefix + name + suffix on every call. - EntityRenderStateEntityMixin: implements StateEntity on EntityRenderState — adds the back-reference field to the source Entity. Render-states are rebuilt every frame so they can't keep their own pointer; this is captured by EntityRendererStateMixin. - EntityRendererStateMixin: Inject at RETURN on EntityRenderer.createRenderState — captures the source Entity on the freshly-built state via the StateEntity contract. ZakoOpt used @ModifyReturnValue; we use plain @Inject because the MixinExtras ModifyReturnValue transformer is more fragile across MC versions. - EntityRendererNameMixin: WrapOperation on EntityRenderer.getNameTag's Entity.getDisplayName call — caches by game tick so the per-frame cost is one identity check + read instead of a full Component rebuild. - SodiumEntityRendererMixin: WrapOperation on Sodium EntityRenderer.renderCuboid's MemoryStack.stackPush — uses CachedStack (Stage 1) to skip the ThreadLocal lookup on the render thread. Registered as optional via LoVisualMixinPlugin (only applied when Sodium is loaded); remap = false because the target is a Sodium class, not a Mojang one. BlockEntity-contract mixins (mixins/optimize/block/): - BlockEntityMixin: implements TickCached + CachedLight + CachedValidity on BlockEntity — adds the per-tick cache slot, per-tick block-light lookups (single + pair for double-chests), per-tick should-render distance check, and per-state validity cache. All four are read by the (Stage 3, future) ChestRendererMixin / BlockEntityRenderStateMixin / BlockEntityRenderDispatcherMixin. - BaseSpawnerMixin: implements TickCached on BaseSpawner — adds the per-tick cache slot that SpawnerCache (Stage 1) reads back. Folder limit (≤4 .java per folder): - mixins/optimize/entity/ hit 6 files after this batch — split into mixins/optimize/entity/renderer/ for EntityRendererStateMixin + EntityRendererNameMixin (the two that target EntityRenderer rather than Entity/EntityRenderState directly). The other 4 stay in entity/. lovisual.mixins.json: seven new entries in the 'client' array, alphabetical: optimize.block.BaseSpawnerMixin optimize.block.BlockEntityMixin optimize.entity.EntityNameMixin optimize.entity.EntityRenderStateEntityMixin optimize.entity.SodiumEntityRendererMixin optimize.entity.renderer.EntityRendererNameMixin optimize.entity.renderer.EntityRendererStateMixin LoVisualMixinPlugin: added SodiumEntityRendererMixin to OPTIONAL_SODIUM_MIXINS so the mixin is only applied when Sodium is loaded (matches the existing convention for sodium.* mixins). Tests: no new tests in this batch (the new mixins are pure side-effect field-bags — they don't have unit-testable logic). Existing suite still green. Total: 866 tests, 0 failures. checkFolderLimit: OK (0 папок >4). |
||
|---|---|---|
| .github/workflows | ||
| backend | ||
| docs | ||
| frontend | ||
| mod | ||
| server-plugin | ||
| .gitattributes | ||
| .gitignore | ||
| README.md | ||
| TODO.md | ||
LoVisual
Open-source Minecraft utility client and the platform around it - website, cloud config sharing, and a Rust backend.
Developed and maintained by loki5512344.
English
What is this?
LoVisual is three things in one repository:
| Component | What it is | Stack |
|---|---|---|
mod/ |
The Minecraft client itself - 60+ modules, ClickGUI, HUD editor, theme system, custom renderer | Java 25 · Fabric · OpenGL/Vulkan |
frontend/ |
The website - downloads, docs, live demos of the in-game GUI, account & config pages | React 19 · Vite · TypeScript · Tailwind · bun |
backend/ |
The platform services - API gateway, accounts, cloud config slots with share codes | Rust · Axum · PostgreSQL · gRPC |
The pieces talk to each other: link the mod to your platform account with %link, push a config
to a cloud slot with %config save <1-4>, and a friend imports it by code with %config load <code>.
Mod highlights
- Combat / Visuals / Player / Misc - Reach, ESP, NameTags, Chams, FullBright, Freecam, AutoTool, FakePlayer and more (see mod README for the full list)
- ClickGUI on
RShift- module browser, settings, theme editor, config profiles - HUD editor - draggable and static elements: TargetHUD, ModuleList, Watermark, Keystrokes…
- Cloud configs - 4 slots per account, short share codes, public showcase
.lvcfgprofiles - export/import modules, HUD and themes locally, no account needed- Addon API - versioned API for extending the client
Requires Fabric Loader, Fabric API and Sodium; optional compatibility with Iris, ViaFabricPlus, Xaero's Minimap/World Map and more.
Repository layout
├── mod/ Fabric client (Gradle, Java) → mod/README.md
├── frontend/ marketing + dashboard site (bun) → frontend/README.md
├── backend/ gateway, accounts-, configs-service → backend/STRUCTURE.md
├── docs/ cross-cutting docs → docs/README.md
└── ref/ reference material (not shipped)
Development
Mod (from mod/):
./gradlew build # compile + remap jar into build/libs
./gradlew runClient # launch a dev Minecraft client
./gradlew test # unit tests
Frontend (from frontend/, requires bun):
bun install
bun run dev # http://localhost:5173
bun run test # vitest
bun run build # type-check + production bundle
Backend (from backend/, requires Rust + PostgreSQL):
cargo build
cargo test
Releases are cut by pushing a v* tag - Forgejo Actions builds the mod jar and publishes it to
Releases as both lovisual-<version>.jar
and a stable lovisual.jar link.
License
GNU General Public License v3.0. See LICENSE.
Русский
Что это?
LoVisual - три проекта в одном репозитории:
| Компонент | Что это | Стек |
|---|---|---|
mod/ |
Сам клиент для Minecraft - 60+ модулей, ClickGUI, редактор HUD, темы, свой рендер | Java 25 · Fabric · OpenGL/Vulkan |
frontend/ |
Сайт - загрузки, документация, живые демо внутриигрового GUI, страницы аккаунта и конфигов | React 19 · Vite · TypeScript · Tailwind · bun |
backend/ |
Сервисы платформы - API-шлюз, аккаунты, облачные слоты конфигов с кодами расшаривания | Rust · Axum · PostgreSQL · gRPC |
Части связаны: привяжи мод к аккаунту командой %link, залей конфиг в облачный слот через
%config save <1-4>, друг заберёт его по коду командой %config load <code>.
Возможности мода
- Combat / Visuals / Player / Misc - Reach, ESP, NameTags, Chams, FullBright, Freecam, AutoTool, FakePlayer и другие (полный список - в README мода)
- ClickGUI на
RShift- браузер модулей, настройки, редактор тем и профилей - Редактор HUD - перетаскиваемые и статические элементы: TargetHUD, ModuleList, Watermark, Keystrokes…
- Облачные конфиги - 4 слота на аккаунт, короткие коды, публичный показ
- Профили
.lvcfg- локальный экспорт/импорт модулей, HUD и тем без аккаунта - Addon API - версионированное API для расширения клиента
Нужны Fabric Loader, Fabric API и Sodium; опционально - Iris, ViaFabricPlus, Xaero's Minimap/World Map и др.
Структура репозитория
├── mod/ клиент Fabric (Gradle, Java) → mod/README.md
├── frontend/ сайт-витрина и дашборд (bun) → frontend/README.md
├── backend/ gateway, accounts-, configs-service → backend/STRUCTURE.md
├── docs/ сквозная документация → docs/README.md
└── ref/ референсы (не поставляется)
Разработка
Мод (из mod/):
./gradlew build # сборка и remap jar в build/libs
./gradlew runClient # запуск dev-клиента Minecraft
./gradlew test # модульные тесты
Фронтенд (из frontend/, нужен bun):
bun install
bun run dev # http://localhost:5173
bun run test # vitest
bun run build # типы + production-сборка
Бэкенд (из backend/, нужны Rust и PostgreSQL):
cargo build
cargo test
Релизы создаются пушем тега v* - Forgejo Actions собирает jar мода и публикует в
Releases как lovisual-<версия>.jar
и по стабильной ссылке lovisual.jar.
Лицензия
GNU General Public License v3.0. См. LICENSE.