No description
Find a file
LoVisual AI 135628c2f1
feat(mod): Stage 3 (continued 2) — entity + block + Sodium contract mixins
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).
2026-10-11 10:23:03 +02:00
.github/workflows docs: README download button points at the site's /download (Forgejo has no releases/latest/download) 2026-10-09 22:25:03 +02:00
backend deploy(nginx): serve the mod jar from nginx with a speed cap (750k per connection) and 2 connections per IP 2026-10-09 22:26:27 +02:00
docs chore(history): squash 59 commit(s) from 2026-09-23 2026-09-23 22:38:08 +02:00
frontend feat(site): redesigned /download, releases and links moved from GitHub to Forgejo 2026-10-09 22:15:55 +02:00
mod feat(mod): Stage 3 (continued 2) — entity + block + Sodium contract mixins 2026-10-11 10:23:03 +02:00
server-plugin feat: GuiPresence (chat-service presence backend, gateway route, mod module); restore TODO history 2026-10-02 13:41:49 +02:00
.gitattributes init 2026-07-30 11:12:56 +02:00
.gitignore feat(brand): 3D pixel-heart icon and updated site tagline 2026-09-28 22:14:14 +02:00
README.md docs: README download button points at the site's /download (Forgejo has no releases/latest/download) 2026-10-09 22:25:03 +02:00
TODO.md docs: accounts-service email plan (Resend SMTP, verification, password reset), TODO phase 11 closed 2026-10-09 19:25:55 +02:00

LoVisual

Open-source Minecraft utility client and the platform around it - website, cloud config sharing, and a Rust backend.

Developed and maintained by loki5512344.

Release Java Rust React License

⬇ Download the mod · Releases

English | Русский


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
  • .lvcfg profiles - 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.