chore(history): squash 37 commit(s) from 2026-09-10

- refactor(8.5.1): split render/engine/uniform/impl 28 classes into hand/sky/esp/post/ui/world(+liquid) leaves
- refactor(8.5.1): split renderer/ui top 28 files into blur/batches(+ordered)/item/deferred(+sched)/pass/dispatch leaves; add tools/pkgsplit scripts (split_struct.py, promote.py) for reproducible waves
- refactor(8.5.1): split render/engine/text 24 files into font(+faces/info)/glyph/msdf/render/command leaves; fiximports tool; disambiguate Font/GlyphAtlasManager shadowing
- refactor(8.5.1): split nondraggable/impl into bars(+jump)/locator(+panel)/buttons/tooltips/dynamicisland/overlay; promote.py +8-indent & ctor support
- refactor(8.5.1): nondraggable dynamicisland 5->4 files (IslandUiUtil into controls)
- refactor(8.5.1): split features/gui/clickgui top 20 files into render/screen/editor/input/tabs/picker/font; ClickGuiModel records nested
- refactor(8.5.1): picker 6->5+screen leaf
- refactor(8.5.1): picker catalog leaf (picker=2: state+icon manager)
- refactor(tools): improve pkgsplit import handling (fiximports v2)
- refactor(8.5.1): split util/text 8 -> mask/format/edit leaves (≤4)
- refactor(8.5.1): split util/network 5, util/player/effect 5, util/media 5 (+ shadow fix)
- refactor(8.5.1): split util/pvp 13, util/projectile 13, util/block 8
- refactor(8.5.1): split util/wav 9, util/item 9, util/combat 9, util/player/inventory 9
- refactor(8.5.1): split render/helpers 16 + config/values 16
- refactor(8.5.1): split renderer/ui/draw 23 -> shape/box/corner/edge/paint/effect
- refactor(8.5.1): split render/engine/command 17 -> core/shape/effect/texture/world
- refactor(8.5.1): split renderer/ui/runtime/script 23 -> engine/runtime/module/registry/render/patch
- refactor(8.5.1): split profiler 14 + hud 14 + addon 14
- refactor(8.5.1): split iris 13 + profile 13 + text/backend 12
- refactor(8.5.1): split config 12 + module 12 + cosmetic 11
- refactor(8.5.1): split rhi/pipeline 11 + mixininterface 11 + config/common/impl 11
- refactor(8.5.1): split util/player 10 + rhi/resource 10 + runtime/render 10
- refactor(8.5.1): split rhi 9 + svg 9 + command 8
- refactor(8.5.1): split core 9 + postprocess 9 + combat 9
- refactor(8.5.1): split command/impl 16 + modules/player 14 + modules/misc 12
- refactor(8.5.1): split ui/runtime 43 -> core/style/input/reconcile/asset
- refactor(8.5.1): split session/microsoft 8 + relations 7 + animation 7
- refactor(8.5.1): split engine/world 7 + postprocess/graph 7 + api/v0/render 7
- refactor(8.5.1): split sodium 12 + aiming 21
- refactor(8.5.1): split хвост 13 папок 34 файла
- fix(8.5.1): видимость членов и enum после расщепления пакетов
- refactor(8.5.1): FailRotationProcessor -> processors root (impl 5 -> 4)
- docs(8.5.1): TODO — волна 8.5.1 завершена (0 папок >4 файлов)
- refactor(8.5.2): split LoVisualAltManagerScreen 1113 -> 11 файлов alt/ (≤200 строк)
- docs(8.5.2): LoVisualAltManagerScreen сплит завершён
- refactor(8.5.2): split UiPrimitiveRenderer 1053 -> фасад 188 + primitive/ + rect/ (7 файлов ≤200); fix readPoints индексация
- docs(8.5.2): UiPrimitiveRenderer сплит завершён
This commit is contained in:
loki5512344 2026-09-10 20:26:41 +02:00
parent fb6e6eb1d3
commit 573780cd5f
1280 changed files with 9468 additions and 6380 deletions

View file

@ -29,7 +29,8 @@
- [x] Фаза 5: Нормализация модулей (ленивый Minecraft, GameClock) - [x] Фаза 5: Нормализация модулей (ленивый Minecraft, GameClock)
- [x] Фаза 6: Тесты (EventBus, конфиг, утилиты) — см. `combatant-client-26.2/TODO.md` - [x] Фаза 6: Тесты (EventBus, конфиг, утилиты) — см. `combatant-client-26.2/TODO.md`
- [ ] Фаза 7: Новые модули по мотивам SoupVisuals — см. ниже - [ ] Фаза 7: Новые модули по мотивам SoupVisuals — см. ниже
- [ ] Фаза 8.5: Аудит структуры ≤200/≤4 (244 файла, 86 папок) — гейт перед Фазой 9.2, - [ ] Фаза 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` план в `combatant-client-26.2/TODO.md`
- [ ] Фаза 9: Оптимизация FPS (9.1 фиксы мёртвых грузов → 9.2 модуль Optimize), - [ ] Фаза 9: Оптимизация FPS (9.1 фиксы мёртвых грузов → 9.2 модуль Optimize),
план в `combatant-client-26.2/TODO.md` план в `combatant-client-26.2/TODO.md`

View file

@ -268,23 +268,27 @@
render/parts)/scripted + hudnotifier/model, targethud-модель свёрнута в класс с record-ами. Коммит 6b89e40. render/parts)/scripted + hudnotifier/model, targethud-модель свёрнута в класс с record-ами. Коммит 6b89e40.
- [x] `events/impl/` — 32 → input/movement/world/network/entity/pvp/render/player; - [x] `events/impl/` — 32 → input/movement/world/network/entity/pvp/render/player;
events/ верхний уровень: core(Event,EventBus,Events) + meta(EventHandler,UsedImplicitly). events/ верхний уровень: core(Event,EventBus,Events) + meta(EventHandler,UsedImplicitly).
- [ ] `features/gui/chat/` — 31 → `render/`, `suggestions/`, `menu/`, `model/`. - [x] `features/gui/chat/` — 31 → `render/`, `suggestions/`, `menu/`, `model/`.
- [ ] `render/engine/uniform/impl/` — 28 → по потребителям (`uniform/impl/pipeline/`, `uniform/impl/effects/`). - [x] `render/engine/uniform/impl/` — 28 → по потребителям (`uniform/impl/pipeline/`, `uniform/impl/effects/`).
- [ ] `render/engine/renderer/ui/` — 28: верхний уровень разнести по уже существующим - [x] `render/engine/renderer/ui/` — 28: верхний уровень разнести по уже существующим
`draw/`, `runtime/`, добавить `blur/`, `batches/`. `draw/`, `runtime/`, добавить `blur/`, `batches/`.
- [ ] `render/engine/text/` — 24 и `text/backend/` — 12 → `text/` разбить на `text/render/`, - [x] `render/engine/text/` — 24 и `text/backend/` — 12 → `text/` разбить на `text/render/`,
`text/layout/`, `text/msdf/`. `text/layout/`, `text/msdf/`.
- [ ] `render/engine/renderer/ui/runtime/script/` — 23, `ui/draw/` — 23 → внутри по 4-файловым кластерам. - [x] `render/engine/renderer/ui/runtime/script/` — 23, `ui/draw/` — 23 → внутри по 4-файловым кластерам.
- [ ] `features/gui/hud/nondraggable/impl/` — 20 (+`impl/tab/`) → `impl/overlays/`, `impl/tablist/`. - [x] `features/gui/hud/nondraggable/impl/` — 20 (+`impl/tab/`) → `impl/overlays/`, `impl/tablist/`.
- [ ] `features/gui/clickgui/` — 20 на верхнем уровне → всё в существующие `layout/`, `sections/`, - [x] `features/gui/clickgui/` — 20 на верхнем уровне → всё в существующие `layout/`, `sections/`,
`picker/`, `protocol/`, `util/`. `picker/`, `protocol/`, `util/`.
- [ ] `render/engine/command/` — 17, `render/helpers/` — 16, `features/command/impl/` — 16, - [x] `render/engine/command/` — 17, `render/helpers/` — 16, `features/command/impl/` — 16,
`config/values/` — 16 → по 2-3 подпапки (типам: `values/numeric/`, `values/color/`…). `config/values/` — 16 → по 2-3 подпапки (типам: `values/numeric/`, `values/color/`…).
- [ ] `render/engine/profiler/` — 14, `modules/player/` — 14, `features/gui/hud/` — 14, - [x] `render/engine/profiler/` — 14, `modules/player/` — 14, `features/gui/hud/` — 14,
`addon/` — 14 — средние: раскидать при касании. `addon/` — 14 — средние: раскидать при касании.
- [ ] Хвост (5–13 файлов, ~55 папок): `util/pvp` 13, `util/projectile` 13, `render/iris` 13, - [x] Хвост (5–13 файлов, ~55 папок): `util/pvp` 13, `util/projectile` 13, `render/iris` 13,
`config/profile` 13, `features/module/misc` 12, `features/module` 12, `config` 12 и т.д. — `config/profile` 13, `features/module/misc` 12, `features/module` 12, `config` 12 и т.д. —
НЕ выделенный проход, а «касаться = чинить» (см. 8.5.4). ЗАКРЫТ выделенным проходом (коммиты 8846d53…303b17e, волна 8.5.1 завершена).
Снимок после волны: 0 папок >4 файлов в `src/main/java` (скан 2026-09-10).
Замечания: command-discovery рекурсивный (ClassGraph acceptPackages), конфиг-id
и ключи i18n не менялись; package-private члены, ставшие кросс-пакетными,
расширены до public/protected; svgMsdfTool-импорты починены после split svg.
### 8.5.2 Файлы-гиганты >600 строк — приоритетная очередь разбивки (53 файла) ### 8.5.2 Файлы-гиганты >600 строк — приоритетная очередь разбивки (53 файла)
> Формат: файл (строк) → идея разбивки. Порядок сверху вниз. Facade-оговорка: > Формат: файл (строк) → идея разбивки. Порядок сверху вниз. Facade-оговорка:
@ -293,8 +297,12 @@
- [ ] Renderer2D 2166 — ФАСАД (исключение по правилу Фазы 8): оставить делегирование, - [ ] Renderer2D 2166 — ФАСАД (исключение по правилу Фазы 8): оставить делегирование,
но блоки >200 строк переносить в package-private хелперы в `renderer/renderer2d/` но блоки >200 строк переносить в package-private хелперы в `renderer/renderer2d/`
(частично уже есть Rects2D/Strokes2D) (частично уже есть Rects2D/Strokes2D)
- [ ] LoVisualAltManagerScreen 1113 — экран+список+диалоги → 4 файла `mainmenu/alt/` - [x] LoVisualAltManagerScreen 1113 → ГОТОВО (2026-09-10): 11 файлов `mainmenu/alt/`
- [ ] UiPrimitiveRenderer 1042 — по типам примитивов (rect/round/line/text-batch) (Screen 132, Controller 200, Ops 59, Anims 108 + auth/ 171 + render/ 157/156/139/100
+ render/cards/ 178/166), все ≤200, build+test ✓
- [x] UiPrimitiveRenderer 1053 → ГОТОВО (2026-09-10): фасад 188 (коннекторы) +
render/primitive/ 4 (Context 153, Props 158, Painter 145, GlowPainter 147) +
render/rect/ 2 (RectPainter 150, CornerPainter 150), build+test ✓
- [ ] BetterButtons 1032 — extraction+tooltip+render → `hud/nondraggable/impl/buttons/` - [ ] BetterButtons 1032 — extraction+tooltip+render → `hud/nondraggable/impl/buttons/`
- [ ] InventorySwap 1031 — по стратегиям свапа; чистая логика отдельными классами с тестами - [ ] InventorySwap 1031 — по стратегиям свапа; чистая логика отдельными классами с тестами
- [ ] SvgMeshBackend 1014 — parser/triangulate/cache разнести - [ ] SvgMeshBackend 1014 — parser/triangulate/cache разнести
@ -324,8 +332,9 @@
разбивка на ≤200, вторым — целевое изменение (иначе diff-каша, правило Фазы 8) разбивка на ≤200, вторым — целевое изменение (иначе diff-каша, правило Фазы 8)
### 8.5.4 Порядок и критерии готовности ### 8.5.4 Порядок и критерии готовности
- [ ] Очередь: 8.5.1 крупные папки (mixins, visuals, clickgui/settings, hud impl) → - [x] Очередь: 8.5.1 крупные папки (mixins, visuals, clickgui/settings, hud impl) →
8.5.2 гиганты >800 → далее по убыванию. Каждая папка/файл = отдельный коммит. 8.5.2 гиганты >800 → далее по убыванию. Каждая папка/файл = отдельный коммит.
→ 8.5.1 ЗАВЕРШЕНА (2026-09-10): 0 папок >4 файлов.
- [ ] После каждого шага: `./gradlew build` ✓, `./gradlew test` ✓; конфиг-id модулей и - [ ] После каждого шага: `./gradlew build` ✓, `./gradlew test` ✓; конфиг-id модулей и
ключи сеттингов НЕ ломаем (совместимость .lvcfg); скрипты-переименования пакетов ключи сеттингов НЕ ломаем (совместимость .lvcfg); скрипты-переименования пакетов
не трогают string-literals id — проверять grep'ом после moves. не трогают string-literals id — проверять grep'ом после moves.

View file

@ -17,62 +17,63 @@ import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents;
import net.minecraft.client.DeltaTracker; import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import dev.loki.lovisual.addon.AddonManager; import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.addon.AddonRenderPipelineManager; import dev.loki.lovisual.addon.pipeline.AddonRenderPipelineManager;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage; import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import dev.loki.lovisual.config.MainConfig; import dev.loki.lovisual.config.i18n.MainConfig;
import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.Events;
import dev.loki.lovisual.features.account.AccountConfig; import dev.loki.lovisual.features.account.AccountConfig;
import dev.loki.lovisual.features.command.CommandManager; import dev.loki.lovisual.features.command.core.CommandManager;
import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer;
import dev.loki.lovisual.features.gui.clickgui.settings.i18n.I18nPreflightContributors; import dev.loki.lovisual.features.gui.clickgui.settings.i18n.I18nPreflightContributors;
import dev.loki.lovisual.features.gui.hud.HudElements; import dev.loki.lovisual.features.gui.hud.registry.HudElements;
import dev.loki.lovisual.features.gui.hud.HudRenderSpace; import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementBootstrap; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementBootstrap;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.impl.SwapTooltip; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.SwapTooltip;
import dev.loki.lovisual.features.module.HudPhase; import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.ModuleAutoLoader; import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.features.module.WorldPhase; import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.mixininterface.IGuiGraphics; import dev.loki.lovisual.mixininterface.render.IGuiGraphics;
import dev.loki.lovisual.render.effects.NetherPortalRiftPass; import dev.loki.lovisual.render.effects.NetherPortalRiftPass;
import dev.loki.lovisual.render.effects.SleepOverlayPass; import dev.loki.lovisual.render.effects.SleepOverlayPass;
import dev.loki.lovisual.render.engine.LoVisualRenderEngineBootstrap; import dev.loki.lovisual.render.engine.LoVisualRenderEngineBootstrap;
import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem;
import dev.loki.lovisual.render.engine.core.RenderPhase; import dev.loki.lovisual.render.engine.core.frame.RenderPhase;
import dev.loki.lovisual.render.engine.core.RenderPhaseScope; import dev.loki.lovisual.render.engine.core.frame.RenderPhaseScope;
import dev.loki.lovisual.render.engine.core.ViewportContext; import dev.loki.lovisual.render.engine.core.context.ViewportContext;
import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager;
import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase;
import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler2D;
import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer;
import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmContributors; import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmContributors;
import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmManager; import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmManager;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import dev.loki.lovisual.render.helpers.SystemCursor; import dev.loki.lovisual.render.helpers.util.SystemCursor;
import dev.loki.lovisual.render.helpers.TickDelta; import dev.loki.lovisual.render.helpers.util.TickDelta;
import dev.loki.lovisual.util.aiming.RotationManager; import dev.loki.lovisual.util.aiming.rotation.RotationManager;
import dev.loki.lovisual.util.block.bed.SelfBedTracker; import dev.loki.lovisual.util.block.bed.SelfBedTracker;
import dev.loki.lovisual.util.click.AttackPressing; import dev.loki.lovisual.util.click.AttackPressing;
import dev.loki.lovisual.util.combat.AntiBotTracker; import dev.loki.lovisual.util.combat.tracking.AntiBotTracker;
import dev.loki.lovisual.util.combat.protocol.CombatProtocolHeuristics; import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristics;
import dev.loki.lovisual.util.combat.SprintController; import dev.loki.lovisual.util.combat.rotation.SprintController;
import dev.loki.lovisual.util.entity.simulation.BoatSimulationCache; import dev.loki.lovisual.util.entity.simulation.BoatSimulationCache;
import dev.loki.lovisual.util.media.MediaSessionService; import dev.loki.lovisual.util.media.session.MediaSessionService;
import dev.loki.lovisual.util.network.BacktrackController; import dev.loki.lovisual.util.network.control.BacktrackController;
import dev.loki.lovisual.util.network.BlinkManager; import dev.loki.lovisual.util.network.control.BlinkManager;
import dev.loki.lovisual.util.proxy.ProxyBackend; import dev.loki.lovisual.util.proxy.ProxyBackend;
import dev.loki.lovisual.util.network.FakeLagController; import dev.loki.lovisual.util.network.control.FakeLagController;
import dev.loki.lovisual.util.player.inventory.InventorySwap; import dev.loki.lovisual.util.player.inventory.core.InventorySwap;
import dev.loki.lovisual.util.player.simulation.PlayerSimulationCache; import dev.loki.lovisual.util.player.simulation.PlayerSimulationCache;
import dev.loki.lovisual.util.pvp.PvpTargetTracker; import dev.loki.lovisual.util.pvp.tracker.PvpTargetTracker;
import dev.loki.lovisual.util.pvp.PvpTracker; import dev.loki.lovisual.util.pvp.tracker.PvpTracker;
import dev.loki.lovisual.util.target.TargetManager; import dev.loki.lovisual.util.target.TargetManager;
import dev.loki.lovisual.util.time.TimerController; import dev.loki.lovisual.util.time.TimerController;
import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting;
import dev.loki.lovisual.features.module.core.Module;
public class LoVisual implements ClientModInitializer { public class LoVisual implements ClientModInitializer {

View file

@ -5,35 +5,43 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.context;
import dev.loki.lovisual.api.v0.addon.LoVisualAddonContext; import dev.loki.lovisual.api.v0.addon.LoVisualAddonContext;
import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection; import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection;
import dev.loki.lovisual.api.v0.client.LoVisualClientApi; import dev.loki.lovisual.api.v0.client.LoVisualClientApi;
import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension; import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage; import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderPipeline;
import dev.loki.lovisual.features.command.ClientCommand; import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.CommandManager; import dev.loki.lovisual.features.command.core.CommandManager;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement; import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines;
import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import dev.loki.lovisual.render.iris.patch.ShaderPatchEngine; import dev.loki.lovisual.render.iris.patch.ShaderPatchEngine;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.ModContainer;
import java.nio.file.Path; import java.nio.file.Path;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.addon.core.AddonRegistration;
import dev.loki.lovisual.addon.manager.ClickGuiSectionManager;
import dev.loki.lovisual.addon.manager.ModuleExtensionManager;
import dev.loki.lovisual.addon.pipeline.AddonRenderPipelineManager;
import dev.loki.lovisual.features.module.modules.misc.ClickGui;
public final class LoVisualAddonContextImpl implements LoVisualAddonContext { public final class LoVisualAddonContextImpl implements LoVisualAddonContext {
private final AddonRegistration registration; private final AddonRegistration registration;
LoVisualAddonContextImpl(AddonRegistration registration) { public LoVisualAddonContextImpl(AddonRegistration registration) {
this.registration = registration; this.registration = registration;
} }
@ -156,7 +164,7 @@ public final class LoVisualAddonContextImpl implements LoVisualAddonContext {
private record AddonClientCommand(String addonId, ClientCommand delegate) implements ClientCommand { private record AddonClientCommand(String addonId, ClientCommand delegate) implements ClientCommand {
@Override @Override
public dev.loki.lovisual.features.command.CommandMetadata metadata() { public dev.loki.lovisual.features.command.core.CommandMetadata metadata() {
return delegate.metadata(); return delegate.metadata();
} }
@ -194,12 +202,12 @@ public final class LoVisualAddonContextImpl implements LoVisualAddonContext {
} }
@Override @Override
public java.util.List<String> suggest(dev.loki.lovisual.features.command.CommandContext ctx, int argIndex, String token) { public java.util.List<String> suggest(dev.loki.lovisual.features.command.core.CommandContext ctx, int argIndex, String token) {
return delegate.suggest(ctx, argIndex, token); return delegate.suggest(ctx, argIndex, token);
} }
@Override @Override
public boolean execute(dev.loki.lovisual.features.command.CommandContext ctx) { public boolean execute(dev.loki.lovisual.features.command.core.CommandContext ctx) {
return isAvailable() && delegate.execute(ctx); return isAvailable() && delegate.execute(ctx);
} }
} }

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.context;
import dev.loki.lovisual.api.v0.addon.LoVisualAddonRuntimeContext; import dev.loki.lovisual.api.v0.addon.LoVisualAddonRuntimeContext;
import dev.loki.lovisual.api.v0.client.LoVisualClientApi; import dev.loki.lovisual.api.v0.client.LoVisualClientApi;
@ -13,7 +13,8 @@ import dev.loki.lovisual.api.v0.client.LoVisualClientApi;
public final class LoVisualAddonRuntimeContextImpl implements LoVisualAddonRuntimeContext { public final class LoVisualAddonRuntimeContextImpl implements LoVisualAddonRuntimeContext {
private final String addonId; private final String addonId;
LoVisualAddonRuntimeContextImpl(String addonId) { public LoVisualAddonRuntimeContextImpl(String addonId) {
this.addonId = addonId; this.addonId = addonId;
} }

View file

@ -5,19 +5,22 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.context;
import dev.loki.lovisual.api.v0.addon.LoVisualModuleLoadContext; import dev.loki.lovisual.api.v0.addon.LoVisualModuleLoadContext;
import dev.loki.lovisual.features.module.ModuleAutoLoader; import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.core.AddonRegistration;
public final class LoVisualModuleLoadContextImpl implements LoVisualModuleLoadContext { public final class LoVisualModuleLoadContextImpl implements LoVisualModuleLoadContext {
private final AddonRegistration registration; private final AddonRegistration registration;
private final List<String> pendingExclusions = new ArrayList<>(); private final List<String> pendingExclusions = new ArrayList<>();
LoVisualModuleLoadContextImpl(AddonRegistration registration) { public LoVisualModuleLoadContextImpl(AddonRegistration registration) {
this.registration = registration; this.registration = registration;
} }
@ -42,7 +45,8 @@ public final class LoVisualModuleLoadContextImpl implements LoVisualModuleLoadCo
return true; return true;
} }
void commit() { public void commit() {
for (String reference : pendingExclusions) { for (String reference : pendingExclusions) {
if (!registration.disabledBuiltInModules.contains(reference)) { if (!registration.disabledBuiltInModules.contains(reference)) {
registration.disabledBuiltInModules.add(reference); registration.disabledBuiltInModules.add(reference);

View file

@ -5,19 +5,20 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.context;
import dev.loki.lovisual.api.v0.module.ModuleExtensionContext; import dev.loki.lovisual.api.v0.module.ModuleExtensionContext;
import dev.loki.lovisual.config.SettingDef; import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.ModeValue; import dev.loki.lovisual.config.values.mode.ModeValue;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
public final class ModuleExtensionContextImpl implements ModuleExtensionContext { public final class ModuleExtensionContextImpl implements ModuleExtensionContext {
private final String addonId; private final String addonId;
private final Module module; private final Module module;
ModuleExtensionContextImpl(String addonId, Module module) { public ModuleExtensionContextImpl(String addonId, Module module) {
this.addonId = addonId; this.addonId = addonId;
this.module = module; this.module = module;
} }

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.core;
import java.util.List; import java.util.List;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.core;
public record AddonIssue( public record AddonIssue(
String addonId, String addonId,

View file

@ -5,16 +5,16 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.core;
import dev.loki.lovisual.api.v0.addon.LoVisualAddon; import dev.loki.lovisual.api.v0.addon.LoVisualAddon;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement; import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleAutoLoader; import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.metadata.CustomValue; import net.fabricmc.loader.api.metadata.CustomValue;
@ -26,6 +26,15 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.addon.context.LoVisualAddonContextImpl;
import dev.loki.lovisual.addon.context.LoVisualAddonRuntimeContextImpl;
import dev.loki.lovisual.addon.context.LoVisualModuleLoadContextImpl;
import dev.loki.lovisual.addon.core.AddonDescriptor;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.core.AddonRegistration;
import dev.loki.lovisual.addon.pipeline.AddonSnapshot;
import dev.loki.lovisual.addon.pipeline.AddonStateStore;
import dev.loki.lovisual.addon.pipeline.AddonStatus;
public enum AddonManager { public enum AddonManager {
; ;
@ -404,19 +413,22 @@ public enum AddonManager {
registration.suspendedStaticHudElements.clear(); registration.suspendedStaticHudElements.clear();
} }
static void noteModuleOwner(String addonId, String moduleId) { public static void noteModuleOwner(String addonId, String moduleId) {
if (moduleId != null && !moduleId.isBlank()) { if (moduleId != null && !moduleId.isBlank()) {
MODULE_OWNERS.put(normalizeId(moduleId), normalizeId(addonId)); MODULE_OWNERS.put(normalizeId(moduleId), normalizeId(addonId));
} }
} }
static void noteDraggableHudOwner(String addonId, String elementId) { public static void noteDraggableHudOwner(String addonId, String elementId) {
if (elementId != null && !elementId.isBlank()) { if (elementId != null && !elementId.isBlank()) {
DRAGGABLE_HUD_OWNERS.put(normalizeId(elementId), normalizeId(addonId)); DRAGGABLE_HUD_OWNERS.put(normalizeId(elementId), normalizeId(addonId));
} }
} }
static void noteStaticHudOwner(String addonId, String elementId) { public static void noteStaticHudOwner(String addonId, String elementId) {
if (elementId != null && !elementId.isBlank()) { if (elementId != null && !elementId.isBlank()) {
STATIC_HUD_OWNERS.put(normalizeId(elementId), normalizeId(addonId)); STATIC_HUD_OWNERS.put(normalizeId(elementId), normalizeId(addonId));
} }

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.core;
import dev.loki.lovisual.api.v0.addon.LoVisualAddon; import dev.loki.lovisual.api.v0.addon.LoVisualAddon;
import net.fabricmc.loader.api.entrypoint.EntrypointContainer; import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
@ -14,20 +14,36 @@ import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.addon.core.AddonDescriptor;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.pipeline.AddonSnapshot;
import dev.loki.lovisual.addon.pipeline.AddonStatus;
public final class AddonRegistration { public final class AddonRegistration {
final AddonDescriptor descriptor; public final AddonDescriptor descriptor;
final EntrypointContainer<LoVisualAddon> entrypoint;
final List<String> modules = new ArrayList<>(); public final EntrypointContainer<LoVisualAddon> entrypoint;
final List<String> disabledBuiltInModules = new ArrayList<>();
final List<String> draggableHudElements = new ArrayList<>(); public final List<String> modules = new ArrayList<>();
final List<String> staticHudElements = new ArrayList<>();
final List<String> commands = new ArrayList<>(); public final List<String> disabledBuiltInModules = new ArrayList<>();
final List<String> clickGuiSections = new ArrayList<>();
final List<String> moduleExtensions = new ArrayList<>(); public final List<String> draggableHudElements = new ArrayList<>();
final List<String> irisPatchManifests = new ArrayList<>();
final List<String> renderCallbacks = new ArrayList<>(); public final List<String> staticHudElements = new ArrayList<>();
final List<String> postProcessPasses = new ArrayList<>();
public final List<String> commands = new ArrayList<>();
public final List<String> clickGuiSections = new ArrayList<>();
public final List<String> moduleExtensions = new ArrayList<>();
public final List<String> irisPatchManifests = new ArrayList<>();
public final List<String> renderCallbacks = new ArrayList<>();
public final List<String> postProcessPasses = new ArrayList<>();
final List<AddonIssue> issues = new ArrayList<>(); final List<AddonIssue> issues = new ArrayList<>();
final Map<String, Boolean> suspendedModules = new LinkedHashMap<>(); final Map<String, Boolean> suspendedModules = new LinkedHashMap<>();
final Map<String, Boolean> suspendedDraggableHudElements = new LinkedHashMap<>(); final Map<String, Boolean> suspendedDraggableHudElements = new LinkedHashMap<>();
@ -38,7 +54,8 @@ public final class AddonRegistration {
boolean clientReadyNotified; boolean clientReadyNotified;
AddonStatus status; AddonStatus status;
boolean enabled; boolean enabled;
boolean restartRequired; public boolean restartRequired;
AddonRegistration(AddonDescriptor descriptor, AddonRegistration(AddonDescriptor descriptor,
EntrypointContainer<LoVisualAddon> entrypoint, EntrypointContainer<LoVisualAddon> entrypoint,
@ -73,7 +90,8 @@ public final class AddonRegistration {
); );
} }
void issue(AddonIssue.Severity severity, String message, String detail) { public void issue(AddonIssue.Severity severity, String message, String detail) {
issues.add(new AddonIssue(descriptor.id(), severity, message, detail)); issues.add(new AddonIssue(descriptor.id(), severity, message, detail));
} }
} }

View file

@ -5,17 +5,18 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.manager;
import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection; import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection;
import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiRenderContext; import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiRenderContext;
import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer;
import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection; import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.addon.core.AddonManager;
public enum ClickGuiSectionManager { public enum ClickGuiSectionManager {
; ;

View file

@ -5,14 +5,14 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.manager;
import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension; import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.renderer.Renderer3D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;
@ -21,6 +21,8 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.addon.context.ModuleExtensionContextImpl;
import dev.loki.lovisual.addon.core.AddonManager;
public enum ModuleExtensionManager { public enum ModuleExtensionManager {
; ;

View file

@ -5,22 +5,22 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.pipeline;
import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.textures.GpuTextureView;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessContext; import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessContext;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderContext; import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderContext;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage; import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import dev.loki.lovisual.features.module.HudPhase; import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.WorldPhase; import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager;
import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.renderer.Renderer3D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;
@ -29,6 +29,7 @@ import java.util.EnumMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.addon.core.AddonManager;
public enum AddonRenderPipelineManager { public enum AddonRenderPipelineManager {
; ;

View file

@ -5,9 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.pipeline;
import java.util.List; import java.util.List;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.pipeline.AddonStatus;
public record AddonSnapshot( public record AddonSnapshot(
String id, String id,

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.pipeline;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -26,7 +26,8 @@ public final class AddonStateStore {
private AddonStateStore() { private AddonStateStore() {
} }
static Map<String, Boolean> loadEnabledOverrides() { public static Map<String, Boolean> loadEnabledOverrides() {
Path file = stateFile(); Path file = stateFile();
if (!Files.isRegularFile(file)) return new HashMap<>(); if (!Files.isRegularFile(file)) return new HashMap<>();
try (Reader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8)) { try (Reader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8)) {
@ -38,7 +39,8 @@ public final class AddonStateStore {
} }
} }
static void saveEnabledOverrides(Map<String, Boolean> enabled) { public static void saveEnabledOverrides(Map<String, Boolean> enabled) {
Path file = stateFile(); Path file = stateFile();
try { try {
Files.createDirectories(file.getParent()); Files.createDirectories(file.getParent());

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.addon; package dev.loki.lovisual.addon.pipeline;
public enum AddonStatus { public enum AddonStatus {
DISCOVERED, DISCOVERED,

View file

@ -8,17 +8,17 @@
package dev.loki.lovisual.api.v0.addon; package dev.loki.lovisual.api.v0.addon;
import dev.loki.lovisual.events.meta.UsedImplicitly; import dev.loki.lovisual.events.meta.UsedImplicitly;
import dev.loki.lovisual.features.command.ClientCommand; import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection; import dev.loki.lovisual.api.v0.clickgui.LoVisualClickGuiSection;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement; import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension; import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback; import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage; import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderPipeline;
import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.ModContainer;
import java.nio.file.Path; import java.nio.file.Path;

View file

@ -8,7 +8,8 @@
package dev.loki.lovisual.api.v0.addon; package dev.loki.lovisual.api.v0.addon;
import dev.loki.lovisual.events.meta.UsedImplicitly; import dev.loki.lovisual.events.meta.UsedImplicitly;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.core.ModuleInfo;
/** /**
* Early addon context used before LoVisual's built-in modules are instantiated. * Early addon context used before LoVisual's built-in modules are instantiated.

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.api.v0.clickgui; package dev.loki.lovisual.api.v0.clickgui;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
public record LoVisualClickGuiRenderContext( public record LoVisualClickGuiRenderContext(
Renderer2D renderer, Renderer2D renderer,

View file

@ -7,8 +7,8 @@
package dev.loki.lovisual.api.v0.client; package dev.loki.lovisual.api.v0.client;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import java.util.List; import java.util.List;

View file

@ -7,10 +7,10 @@
package dev.loki.lovisual.api.v0.module; package dev.loki.lovisual.api.v0.module;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.renderer.Renderer3D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;
public interface LoVisualModuleExtension { public interface LoVisualModuleExtension {

View file

@ -7,9 +7,9 @@
package dev.loki.lovisual.api.v0.module; package dev.loki.lovisual.api.v0.module;
import dev.loki.lovisual.config.SettingDef; import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
public interface ModuleExtensionContext { public interface ModuleExtensionContext {
String addonId(); String addonId();

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.api.v0.render; package dev.loki.lovisual.api.v0.render;
import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.GpuBufferSlice;
import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;

View file

@ -5,9 +5,9 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.api.v0.render; package dev.loki.lovisual.api.v0.render.callback;
@FunctionalInterface @FunctionalInterface
public interface LoVisualPostProcessCallback { public interface LoVisualPostProcessCallback {
boolean render(LoVisualPostProcessContext context); public boolean render(LoVisualPostProcessContext context);
} }

View file

@ -5,10 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.api.v0.render; package dev.loki.lovisual.api.v0.render.callback;
import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.textures.GpuTextureView;
import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
public record LoVisualPostProcessContext( public record LoVisualPostProcessContext(

View file

@ -5,9 +5,9 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.api.v0.render; package dev.loki.lovisual.api.v0.render.callback;
@FunctionalInterface @FunctionalInterface
public interface LoVisualRenderCallback { public interface LoVisualRenderCallback {
void render(LoVisualRenderContext context); public void render(LoVisualRenderContext context);
} }

View file

@ -5,14 +5,16 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.api.v0.render; package dev.loki.lovisual.api.v0.render.callback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import dev.loki.lovisual.features.module.HudPhase; import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.WorldPhase; import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.renderer.Renderer3D;
import dev.loki.lovisual.render.engine.text.TextRenderer; import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.GuiGraphicsExtractor;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.compat.xaero; package dev.loki.lovisual.compat.xaero.triangulator;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xaero.common.minimap.waypoints.Waypoint; import xaero.common.minimap.waypoints.Waypoint;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.compat.xaero; package dev.loki.lovisual.compat.xaero.triangulator;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.compat.xaero; package dev.loki.lovisual.compat.xaero.triangulator;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xaero.common.minimap.waypoints.Waypoint; import xaero.common.minimap.waypoints.Waypoint;

View file

@ -8,6 +8,7 @@
package dev.loki.lovisual.config.common; package dev.loki.lovisual.config.common;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.config.common.CommonSettingSchema;
public interface CommonBooleanGroupSchema extends CommonSettingSchema { public interface CommonBooleanGroupSchema extends CommonSettingSchema {
Map<String, Boolean> defaults(); Map<String, Boolean> defaults();

View file

@ -7,8 +7,30 @@
package dev.loki.lovisual.config.common; package dev.loki.lovisual.config.common;
import dev.loki.lovisual.config.common.impl.*; import dev.loki.lovisual.config.common.impl.common.CombatPriority;
import dev.loki.lovisual.config.common.impl.common.CombatProtocolHeuristicSources;
import dev.loki.lovisual.config.common.impl.common.CommonKey;
import dev.loki.lovisual.config.common.impl.common.FakeLagFlushOn;
import dev.loki.lovisual.config.common.impl.rotation.RotationMode;
import dev.loki.lovisual.config.common.impl.rotation.RotationMovementCorrection;
import dev.loki.lovisual.config.common.impl.rotation.RotationResetThreshold;
import dev.loki.lovisual.config.common.impl.rotation.RotationResetTicks;
import dev.loki.lovisual.config.common.impl.wall.RotationThroughWalls;
import dev.loki.lovisual.config.common.impl.wall.RotationTiming;
import dev.loki.lovisual.config.common.impl.wall.TargetFilters;
import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP;
import dev.loki.lovisual.config.common.CommonSettingSchema;
import dev.loki.lovisual.config.common.impl.common.CombatPriority;
import dev.loki.lovisual.config.common.impl.common.CombatProtocolHeuristicSources;
import dev.loki.lovisual.config.common.impl.common.CommonKey;
import dev.loki.lovisual.config.common.impl.common.FakeLagFlushOn;
import dev.loki.lovisual.config.common.impl.rotation.RotationMode;
import dev.loki.lovisual.config.common.impl.rotation.RotationMovementCorrection;
import dev.loki.lovisual.config.common.impl.rotation.RotationResetThreshold;
import dev.loki.lovisual.config.common.impl.rotation.RotationResetTicks;
import dev.loki.lovisual.config.common.impl.wall.RotationThroughWalls;
import dev.loki.lovisual.config.common.impl.wall.RotationTiming;
import dev.loki.lovisual.config.common.impl.wall.TargetFilters;
public enum CommonSettingSchemas { public enum CommonSettingSchemas {
; ;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.common;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,10 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.common;
import dev.loki.lovisual.config.common.CommonBooleanGroupSchema; import dev.loki.lovisual.config.common.CommonBooleanGroupSchema;
import dev.loki.lovisual.util.combat.protocol.CombatProtocolHeuristics; import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristics;
import java.util.Map; import java.util.Map;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.common;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.common;
import dev.loki.lovisual.config.common.CommonBooleanGroupSchema; import dev.loki.lovisual.config.common.CommonBooleanGroupSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.rotation;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.rotation;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.rotation;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.rotation;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.wall;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.wall;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.common.impl; package dev.loki.lovisual.config.common.impl.wall;
import dev.loki.lovisual.config.common.CommonBooleanGroupSchema; import dev.loki.lovisual.config.common.CommonBooleanGroupSchema;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.definition;
/** /**
* Optional stable config name override (used for file names). * Optional stable config name override (used for file names).

View file

@ -5,9 +5,9 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.definition;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import java.util.List; import java.util.List;

View file

@ -5,10 +5,23 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.definition;
import dev.loki.lovisual.config.common.CommonSettingSchema; import dev.loki.lovisual.config.common.CommonSettingSchema;
import dev.loki.lovisual.config.values.*; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue;
import dev.loki.lovisual.config.values.collection.ItemIdSetValue;
import dev.loki.lovisual.config.values.collection.SetValue;
import dev.loki.lovisual.config.values.color.KeyBindValue;
import dev.loki.lovisual.config.values.color.RGBAColorValue;
import dev.loki.lovisual.config.values.color.RGBColorValue;
import dev.loki.lovisual.config.values.mode.BindMode;
import dev.loki.lovisual.config.values.mode.EnumValue;
import dev.loki.lovisual.config.values.mode.ModeValue;
import dev.loki.lovisual.config.values.primitive.BooleanMapValue;
import dev.loki.lovisual.config.values.primitive.BooleanValue;
import dev.loki.lovisual.config.values.primitive.NumberValue;
import dev.loki.lovisual.config.values.primitive.StringValue;
import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -17,6 +30,7 @@ import java.util.IdentityHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier; import java.util.function.Supplier;
import dev.loki.lovisual.config.i18n.DisableSettingI18n;
/** /**
* GUI-neutral setting descriptor. UI layer can build actual widgets from these. * GUI-neutral setting descriptor. UI layer can build actual widgets from these.

View file

@ -5,7 +5,8 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.definition;
import dev.loki.lovisual.features.module.core.Module;
/** /**
* Owner of GUI settings. Allows settings to save config and build i18n keys * Owner of GUI settings. Allows settings to save config and build i18n keys

View file

@ -5,10 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.i18n;
import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.I18n;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
public enum ConfigLang { public enum ConfigLang {
; ;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.i18n;
import java.util.List; import java.util.List;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.i18n;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View file

@ -5,22 +5,32 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.i18n;
import dev.loki.lovisual.config.values.*; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.render.iris.IrisRuntime; import dev.loki.lovisual.config.values.collection.SetValue;
import dev.loki.lovisual.config.values.mode.EnumValue;
import dev.loki.lovisual.config.values.mode.ModeValue;
import dev.loki.lovisual.config.values.primitive.BooleanValue;
import dev.loki.lovisual.config.values.primitive.NumberValue;
import dev.loki.lovisual.render.iris.runtime.IrisRuntime;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import dev.loki.lovisual.util.logging.DebugMode; import dev.loki.lovisual.util.logging.DebugMode;
import dev.loki.lovisual.util.player.inventory.InventorySearchScope; import dev.loki.lovisual.util.player.inventory.support.InventorySearchScope;
import dev.loki.lovisual.util.player.inventory.InventorySwap; import dev.loki.lovisual.util.player.inventory.core.InventorySwap;
import dev.loki.lovisual.util.player.inventory.InventorySwapPolicy; import dev.loki.lovisual.util.player.inventory.core.InventorySwapPolicy;
import dev.loki.lovisual.util.player.inventory.InventorySwapVisibility; import dev.loki.lovisual.util.player.inventory.support.InventorySwapVisibility;
import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.I18n;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import dev.loki.lovisual.config.definition.ConfigNameProvider;
import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.definition.SettingOwner;
import dev.loki.lovisual.config.io.ConfigSerializer;
public final class MainConfig implements ConfigObject, ConfigNameProvider, SettingOwner { public final class MainConfig implements ConfigObject, ConfigNameProvider, SettingOwner {

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.io;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;

View file

@ -5,18 +5,18 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.io;
import com.google.gson.*; import com.google.gson.*;
import de.marhali.json5.*; import de.marhali.json5.*;
import io.github.classgraph.ClassGraph; import io.github.classgraph.ClassGraph;
import io.github.classgraph.ClassInfo; import io.github.classgraph.ClassInfo;
import io.github.classgraph.ScanResult; import io.github.classgraph.ScanResult;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement; import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.relations.EntityFilters; import dev.loki.lovisual.features.relations.EntityFilters;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
@ -30,6 +30,11 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import dev.loki.lovisual.config.definition.ConfigNameProvider;
import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.i18n.ConfigValueAliasProvider;
import dev.loki.lovisual.config.io.ConfigPaths;
import dev.loki.lovisual.config.io.JsonConfigObject;
public enum ConfigSerializer { public enum ConfigSerializer {
; ;

View file

@ -5,7 +5,8 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.io;
import dev.loki.lovisual.config.definition.ConfigObject;
/** /**
* Marker for config objects that must be stored as JSON (not JSON5). * Marker for config objects that must be stored as JSON (not JSON5).

View file

@ -5,9 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config; package dev.loki.lovisual.config.io;
import java.util.List; import java.util.List;
import dev.loki.lovisual.config.definition.SettingDef;
/** /**
* Provides GUI-neutral setting definitions. * Provides GUI-neutral setting definitions.

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.codec;
import java.io.*; import java.io.*;
import java.util.ArrayList; import java.util.ArrayList;
@ -15,6 +15,11 @@ import java.util.zip.CRC32;
import java.util.zip.Deflater; import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream; import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterInputStream; import java.util.zip.InflaterInputStream;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.codec.ConfigProfileValueCodec;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
public final class ConfigProfileBinaryCodec { public final class ConfigProfileBinaryCodec {
public static final int VERSION = 1; public static final int VERSION = 1;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.codec;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.codec;
import java.util.Locale; import java.util.Locale;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.codec;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -28,7 +28,8 @@ public enum ConfigProfileValueCodec {
private static final byte LIST = 7; private static final byte LIST = 7;
private static final byte MAP = 8; private static final byte MAP = 8;
static void writeValue(DataOutputStream out, Object value) throws IOException { public static void writeValue(DataOutputStream out, Object value) throws IOException {
if (value == null) { if (value == null) {
out.writeByte(NULL); out.writeByte(NULL);
} else if (value instanceof Boolean b) { } else if (value instanceof Boolean b) {
@ -68,7 +69,8 @@ public enum ConfigProfileValueCodec {
} }
} }
static Object readValue(DataInputStream in) throws IOException { public static Object readValue(DataInputStream in) throws IOException {
int type = in.readUnsignedByte(); int type = in.readUnsignedByte();
return switch (type) { return switch (type) {
case NULL -> null; case NULL -> null;

View file

@ -5,12 +5,13 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.diff;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
public enum ConfigProfileDateFormatter { public enum ConfigProfileDateFormatter {
; ;

View file

@ -5,11 +5,12 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.diff;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
public record ConfigProfileDiff( public record ConfigProfileDiff(
ConfigProfileType type, ConfigProfileType type,

View file

@ -5,9 +5,13 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.diff;
import java.util.*; import java.util.*;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.diff.ConfigProfileDiff;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
public final class ConfigProfileDiffEngine { public final class ConfigProfileDiffEngine {
public ConfigProfileDiff compare(ConfigProfileSnapshot current, ConfigProfileSnapshot selected) { public ConfigProfileDiff compare(ConfigProfileSnapshot current, ConfigProfileSnapshot selected) {

View file

@ -5,22 +5,25 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.service;
import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Theme;
import dev.loki.lovisual.config.ConfigObject; import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.addon.AddonManager; import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.features.gui.hud.BaseHudElement; import dev.loki.lovisual.features.gui.hud.base.BaseHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.features.theme.Themes;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
public final class ConfigProfileApplier { public final class ConfigProfileApplier {
public ApplyResult apply(ConfigProfileSnapshot snapshot) { public ApplyResult apply(ConfigProfileSnapshot snapshot) {

View file

@ -5,25 +5,32 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.service;
import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Theme;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import dev.loki.lovisual.config.ConfigObject; import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.addon.AddonManager; import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement; import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement;
import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.features.theme.Themes;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.config.profile.codec.ConfigProfileBinaryCodec;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.service.ConfigProfileStorage;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
import dev.loki.lovisual.features.module.lifecycle.Modules;
public final class ConfigProfileCollector { public final class ConfigProfileCollector {
public ConfigProfileSnapshot collect(ConfigProfileType type, String name) { public ConfigProfileSnapshot collect(ConfigProfileType type, String name) {

View file

@ -5,11 +5,20 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.service;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.List; import java.util.List;
import dev.loki.lovisual.config.profile.codec.ConfigProfileBinaryCodec;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.diff.ConfigProfileDiff;
import dev.loki.lovisual.config.profile.diff.ConfigProfileDiffEngine;
import dev.loki.lovisual.config.profile.service.ConfigProfileApplier;
import dev.loki.lovisual.config.profile.service.ConfigProfileCollector;
import dev.loki.lovisual.config.profile.service.ConfigProfileStorage;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
public final class ConfigProfileService { public final class ConfigProfileService {
public static final ConfigProfileService INSTANCE = new ConfigProfileService(); public static final ConfigProfileService INSTANCE = new ConfigProfileService();

View file

@ -5,9 +5,9 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.service;
import dev.loki.lovisual.config.ConfigPaths; import dev.loki.lovisual.config.io.ConfigPaths;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import java.io.IOException; import java.io.IOException;
@ -18,6 +18,10 @@ import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import dev.loki.lovisual.config.profile.codec.ConfigProfileBinaryCodec;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot;
public final class ConfigProfileStorage { public final class ConfigProfileStorage {
public static final String EXTENSION = ".lvcfg"; public static final String EXTENSION = ".lvcfg";
@ -30,7 +34,8 @@ public final class ConfigProfileStorage {
this(ConfigPaths.profilesRoot()); this(ConfigPaths.profilesRoot());
} }
ConfigProfileStorage(Path root) { public ConfigProfileStorage(Path root) {
this.root = root; this.root = root;
} }

View file

@ -5,7 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.snapshot;
import dev.loki.lovisual.config.profile.codec.ConfigProfileBinaryCodec;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
import dev.loki.lovisual.config.profile.service.ConfigProfileStorage;
public record ConfigProfileMeta( public record ConfigProfileMeta(
String id, String id,

View file

@ -5,11 +5,13 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.profile; package dev.loki.lovisual.config.profile.snapshot;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
public record ConfigProfileSnapshot( public record ConfigProfileSnapshot(
ConfigProfileMeta meta, ConfigProfileMeta meta,

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.collection;
/** /**
* Базовый тип для всех конфиг-значений. * Базовый тип для всех конфиг-значений.

View file

@ -5,9 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.collection;
import java.util.*; import java.util.*;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.mode.EnumValue;
/** /**
* Object-shaped per-item PvP cooldown rules. * Object-shaped per-item PvP cooldown rules.

View file

@ -5,13 +5,14 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.collection;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import dev.loki.lovisual.config.values.collection.ConfigValue;
/** /**
* Хранит набор item-id в формате namespace:path (minecraft:xxx). * Хранит набор item-id в формате namespace:path (minecraft:xxx).

View file

@ -5,12 +5,13 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.collection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class SetValue extends ConfigValue<Set<String>> { public class SetValue extends ConfigValue<Set<String>> {

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.color;
public interface ColorValue { public interface ColorValue {
String get(); String get();

View file

@ -5,7 +5,8 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.color;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class KeyBindValue extends ConfigValue<String> { public class KeyBindValue extends ConfigValue<String> {

View file

@ -5,9 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.color;
import dev.loki.lovisual.render.engine.color.ColorUtils; import dev.loki.lovisual.render.engine.color.ColorUtils;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.color.ColorValue;
/** /**
* Keeps color as hex-string and provides access as ARGB int. * Keeps color as hex-string and provides access as ARGB int.

View file

@ -5,9 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.color;
import dev.loki.lovisual.render.engine.color.ColorUtils; import dev.loki.lovisual.render.engine.color.ColorUtils;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.color.ColorValue;
/** /**
* Цвет без альфы. Хранится как hex "#RRGGBB" и возвращается с полной альфой (0xFF) при запросе ARGB. * Цвет без альфы. Хранится как hex "#RRGGBB" и возвращается с полной альфой (0xFF) при запросе ARGB.

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.mode;
public enum BindMode { public enum BindMode {
PRESS, PRESS,

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.mode;
import java.util.Locale; import java.util.Locale;

View file

@ -5,9 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.mode;
import java.util.*; import java.util.*;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.mode.EnumIds;
public class EnumValue<E extends Enum<E>> extends ConfigValue<E> { public class EnumValue<E extends Enum<E>> extends ConfigValue<E> {

View file

@ -5,13 +5,14 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.mode;
import java.util.Arrays; import java.util.Arrays;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class ModeValue extends ConfigValue<String> { public class ModeValue extends ConfigValue<String> {

View file

@ -5,10 +5,11 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.primitive;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class BooleanMapValue extends ConfigValue<Map<String, Boolean>> { public class BooleanMapValue extends ConfigValue<Map<String, Boolean>> {

View file

@ -5,7 +5,8 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.primitive;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class BooleanValue extends ConfigValue<Boolean> { public class BooleanValue extends ConfigValue<Boolean> {

View file

@ -5,9 +5,10 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.primitive;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class NumberValue<N extends Number> extends ConfigValue<N> { public class NumberValue<N extends Number> extends ConfigValue<N> {

View file

@ -5,7 +5,8 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.config.values; package dev.loki.lovisual.config.values.primitive;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class StringValue extends ConfigValue<String> { public class StringValue extends ConfigValue<String> {

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.events; package dev.loki.lovisual.events;
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.Lifecycle;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
@ -19,7 +19,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.meta.EventHandler;
public final class EventBus { public final class EventBus {

View file

@ -6,7 +6,6 @@
*/ */
package dev.loki.lovisual.events; package dev.loki.lovisual.events;
import dev.loki.lovisual.events.EventBus;
public enum Events { public enum Events {
; ;

View file

@ -10,8 +10,8 @@ package dev.loki.lovisual.events.impl.network;
import lombok.Getter; import lombok.Getter;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import dev.loki.lovisual.events.Event; import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.util.network.BlinkManager; import dev.loki.lovisual.util.network.control.BlinkManager;
import dev.loki.lovisual.util.network.TransferOrigin; import dev.loki.lovisual.util.network.packet.TransferOrigin;
public class BlinkPacketEvent extends Event { public class BlinkPacketEvent extends Event {
private final Packet<?> packet; private final Packet<?> packet;

View file

@ -10,7 +10,7 @@ package dev.loki.lovisual.events.impl.network;
import lombok.Getter; import lombok.Getter;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import dev.loki.lovisual.events.Event; import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.util.network.TransferOrigin; import dev.loki.lovisual.util.network.packet.TransferOrigin;
public class PacketEvent extends Event { public class PacketEvent extends Event {
private final Packet<?> packet; private final Packet<?> packet;

View file

@ -7,8 +7,8 @@
package dev.loki.lovisual.events.impl.player; package dev.loki.lovisual.events.impl.player;
import dev.loki.lovisual.config.SettingDef; import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.SettingOwner; import dev.loki.lovisual.config.definition.SettingOwner;
import dev.loki.lovisual.events.Event; import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting;
import dev.loki.lovisual.features.gui.clickgui.settings.core.SettingFactory; import dev.loki.lovisual.features.gui.clickgui.settings.core.SettingFactory;

View file

@ -8,8 +8,8 @@
package dev.loki.lovisual.events.impl.render; package dev.loki.lovisual.events.impl.render;
import dev.loki.lovisual.events.Event; import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.render.engine.svg.SvgRegistry; import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry;
import dev.loki.lovisual.render.engine.text.FontInfo; import dev.loki.lovisual.render.engine.text.font.info.FontInfo;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;

View file

@ -11,7 +11,6 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
import dev.loki.lovisual.events.meta.UsedImplicitly;
@UsedImplicitly @UsedImplicitly
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)

View file

@ -8,14 +8,14 @@
package dev.loki.lovisual.features.account; package dev.loki.lovisual.features.account;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import dev.loki.lovisual.config.ConfigNameProvider; import dev.loki.lovisual.config.definition.ConfigNameProvider;
import dev.loki.lovisual.config.ConfigSerializer; import dev.loki.lovisual.config.io.ConfigSerializer;
import dev.loki.lovisual.config.JsonConfigObject; import dev.loki.lovisual.config.io.JsonConfigObject;
import dev.loki.lovisual.config.values.ConfigValue; import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.StringValue; import dev.loki.lovisual.config.values.primitive.StringValue;
import dev.loki.lovisual.util.session.MicrosoftSessionResult; import dev.loki.lovisual.util.session.MicrosoftSessionResult;
import dev.loki.lovisual.util.session.SessionChanger; import dev.loki.lovisual.util.session.SessionChanger;
import dev.loki.lovisual.util.session.microsoft.MicrosoftAuthService; import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftAuthService;
import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.DebugLog;
import java.time.LocalDateTime; import java.time.LocalDateTime;

View file

@ -14,7 +14,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.DefaultPlayerSkin; import net.minecraft.client.resources.DefaultPlayerSkin;
import net.minecraft.resources.Identifier; import net.minecraft.resources.Identifier;
import net.minecraft.world.entity.player.PlayerSkin; import net.minecraft.world.entity.player.PlayerSkin;
import dev.loki.lovisual.util.player.PlayerSkinResolver; import dev.loki.lovisual.util.player.health.PlayerSkinResolver;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.features.command; package dev.loki.lovisual.features.command.core;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.features.command; package dev.loki.lovisual.features.command.core;
import dev.loki.lovisual.events.meta.UsedImplicitly; import dev.loki.lovisual.events.meta.UsedImplicitly;
@ -18,11 +18,11 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
public @interface CommandInfo { public @interface CommandInfo {
String id(); public String id();
String[] aliases() default {}; public String[] aliases() default {};
String usage() default ""; public String usage() default "";
String descriptionKey() default ""; public String descriptionKey() default "";
} }

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.features.command; package dev.loki.lovisual.features.command.core;
import com.mojang.brigadier.context.StringRange; import com.mojang.brigadier.context.StringRange;
import com.mojang.brigadier.suggestion.Suggestion; import com.mojang.brigadier.suggestion.Suggestion;
@ -21,6 +21,13 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import dev.loki.lovisual.features.command.core.CommandContext;
import dev.loki.lovisual.features.command.core.CommandInfo;
import dev.loki.lovisual.features.command.core.CommandMetadata;
import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.util.CommandOutput;
import dev.loki.lovisual.features.command.util.CommandPrefix;
import dev.loki.lovisual.features.command.util.UsageHints;
public enum CommandManager { public enum CommandManager {
; ;

View file

@ -5,7 +5,7 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.features.command; package dev.loki.lovisual.features.command.core;
import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.I18n;
@ -13,6 +13,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Optional; import java.util.Optional;
import dev.loki.lovisual.features.command.core.CommandInfo;
import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.util.CommandPrefix;
public final class CommandMetadata { public final class CommandMetadata {
private static final ClassValue<Optional<CommandMetadata>> ANNOTATED = new ClassValue<>() { private static final ClassValue<Optional<CommandMetadata>> ANNOTATED = new ClassValue<>() {
@ -74,7 +77,8 @@ public final class CommandMetadata {
return fromLegacy(command); return fromLegacy(command);
} }
static CommandMetadata fromAnnotation(Class<?> type) { public static CommandMetadata fromAnnotation(Class<?> type) {
CommandMetadata annotated = annotated(type); CommandMetadata annotated = annotated(type);
if (annotated == null) { if (annotated == null) {
throw new IllegalStateException(type.getName() + " must be annotated with @CommandInfo"); throw new IllegalStateException(type.getName() + " must be annotated with @CommandInfo");
@ -82,7 +86,8 @@ public final class CommandMetadata {
return annotated; return annotated;
} }
static CommandMetadata annotated(Class<?> type) { public static CommandMetadata annotated(Class<?> type) {
return ANNOTATED.get(type).orElse(null); return ANNOTATED.get(type).orElse(null);
} }

View file

@ -7,8 +7,8 @@
package dev.loki.lovisual.features.command.impl; package dev.loki.lovisual.features.command.impl;
import dev.loki.lovisual.features.module.Module; import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.ModuleManager; import dev.loki.lovisual.features.module.core.ModuleManager;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.multiplayer.PlayerInfo;
@ -21,7 +21,7 @@ public final class CommandUtils {
private CommandUtils() { private CommandUtils() {
} }
static Module findModule(String query) { public static Module findModule(String query) {
if (query == null || query.isBlank()) return null; if (query == null || query.isBlank()) return null;
for (Module module : ModuleManager.getModules()) { for (Module module : ModuleManager.getModules()) {
if (matchesModule(module, query)) return module; if (matchesModule(module, query)) return module;
@ -29,7 +29,7 @@ public final class CommandUtils {
return null; return null;
} }
static List<String> suggestModules(String token) { public static List<String> suggestModules(String token) {
String lower = normalize(token); String lower = normalize(token);
return ModuleManager.getModules().stream() return ModuleManager.getModules().stream()
.map(Module::name) .map(Module::name)
@ -38,7 +38,7 @@ public final class CommandUtils {
.toList(); .toList();
} }
static List<String> suggestPlayers(Minecraft mc, String token) { public static List<String> suggestPlayers(Minecraft mc, String token) {
if (mc == null || mc.getConnection() == null) return List.of(); if (mc == null || mc.getConnection() == null) return List.of();
String lower = normalize(token); String lower = normalize(token);
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
@ -53,18 +53,18 @@ public final class CommandUtils {
return names; return names;
} }
static List<Module> sortedModules() { public static List<Module> sortedModules() {
return ModuleManager.getModules().stream() return ModuleManager.getModules().stream()
.sorted(Comparator.comparing(Module::name, String.CASE_INSENSITIVE_ORDER)) .sorted(Comparator.comparing(Module::name, String.CASE_INSENSITIVE_ORDER))
.toList(); .toList();
} }
static String join(List<String> parts, int start) { public static String join(List<String> parts, int start) {
if (parts == null || start < 0 || start >= parts.size()) return ""; if (parts == null || start < 0 || start >= parts.size()) return "";
return String.join(" ", parts.subList(start, parts.size())).trim(); return String.join(" ", parts.subList(start, parts.size())).trim();
} }
static boolean parseState(String value, boolean current) { public static boolean parseState(String value, boolean current) {
if (value == null || value.isBlank() || value.equalsIgnoreCase("toggle")) return !current; if (value == null || value.isBlank() || value.equalsIgnoreCase("toggle")) return !current;
return value.equalsIgnoreCase("on") return value.equalsIgnoreCase("on")
|| value.equalsIgnoreCase("true") || value.equalsIgnoreCase("true")
@ -73,7 +73,7 @@ public final class CommandUtils {
|| value.equals("1"); || value.equals("1");
} }
static boolean isState(String value) { public static boolean isState(String value) {
if (value == null) return true; if (value == null) return true;
return switch (value.toLowerCase(Locale.ROOT)) { return switch (value.toLowerCase(Locale.ROOT)) {
case "toggle", "on", "off", "true", "false", "enable", "disable", "enabled", "disabled", "1", "0" -> true; case "toggle", "on", "off", "true", "false", "enable", "disable", "enabled", "disabled", "1", "0" -> true;

View file

@ -5,15 +5,15 @@
* Licensed under the GNU General Public License v3.0. * Licensed under the GNU General Public License v3.0.
*/ */
package dev.loki.lovisual.features.command.impl; package dev.loki.lovisual.features.command.impl.client;
import dev.loki.lovisual.addon.AddonIssue; import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.AddonManager; import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.addon.AddonSnapshot; import dev.loki.lovisual.addon.pipeline.AddonSnapshot;
import dev.loki.lovisual.features.command.ClientCommand; import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.CommandContext; import dev.loki.lovisual.features.command.core.CommandContext;
import dev.loki.lovisual.features.command.CommandInfo; import dev.loki.lovisual.features.command.core.CommandInfo;
import dev.loki.lovisual.features.command.CommandOutput; import dev.loki.lovisual.features.command.util.CommandOutput;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;

Some files were not shown because too many files have changed in this diff Show more