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] Фаза 6: Тесты (EventBus, конфиг, утилиты) — см. `combatant-client-26.2/TODO.md`
- [ ] Фаза 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`
- [ ] Фаза 9: Оптимизация FPS (9.1 фиксы мёртвых грузов → 9.2 модуль Optimize),
план в `combatant-client-26.2/TODO.md`

View file

@ -268,23 +268,27 @@
render/parts)/scripted + hudnotifier/model, targethud-модель свёрнута в класс с record-ами. Коммит 6b89e40.
- [x] `events/impl/` — 32 → input/movement/world/network/entity/pvp/render/player;
events/ верхний уровень: core(Event,EventBus,Events) + meta(EventHandler,UsedImplicitly).
- [ ] `features/gui/chat/` — 31 → `render/`, `suggestions/`, `menu/`, `model/`.
- [ ] `render/engine/uniform/impl/` — 28 → по потребителям (`uniform/impl/pipeline/`, `uniform/impl/effects/`).
- [ ] `render/engine/renderer/ui/` — 28: верхний уровень разнести по уже существующим
- [x] `features/gui/chat/` — 31 → `render/`, `suggestions/`, `menu/`, `model/`.
- [x] `render/engine/uniform/impl/` — 28 → по потребителям (`uniform/impl/pipeline/`, `uniform/impl/effects/`).
- [x] `render/engine/renderer/ui/` — 28: верхний уровень разнести по уже существующим
`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/`.
- [ ] `render/engine/renderer/ui/runtime/script/` — 23, `ui/draw/` — 23 → внутри по 4-файловым кластерам.
- [ ] `features/gui/hud/nondraggable/impl/` — 20 (+`impl/tab/`) → `impl/overlays/`, `impl/tablist/`.
- [ ] `features/gui/clickgui/` — 20 на верхнем уровне → всё в существующие `layout/`, `sections/`,
- [x] `render/engine/renderer/ui/runtime/script/` — 23, `ui/draw/` — 23 → внутри по 4-файловым кластерам.
- [x] `features/gui/hud/nondraggable/impl/` — 20 (+`impl/tab/`) → `impl/overlays/`, `impl/tablist/`.
- [x] `features/gui/clickgui/` — 20 на верхнем уровне → всё в существующие `layout/`, `sections/`,
`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/`…).
- [ ] `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 — средние: раскидать при касании.
- [ ] Хвост (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 и т.д. —
НЕ выделенный проход, а «касаться = чинить» (см. 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 файла)
> Формат: файл (строк) → идея разбивки. Порядок сверху вниз. Facade-оговорка:
@ -293,8 +297,12 @@
- [ ] Renderer2D 2166 — ФАСАД (исключение по правилу Фазы 8): оставить делегирование,
но блоки >200 строк переносить в package-private хелперы в `renderer/renderer2d/`
(частично уже есть Rects2D/Strokes2D)
- [ ] LoVisualAltManagerScreen 1113 — экран+список+диалоги → 4 файла `mainmenu/alt/`
- [ ] UiPrimitiveRenderer 1042 — по типам примитивов (rect/round/line/text-batch)
- [x] LoVisualAltManagerScreen 1113 → ГОТОВО (2026-09-10): 11 файлов `mainmenu/alt/`
(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/`
- [ ] InventorySwap 1031 — по стратегиям свапа; чистая логика отдельными классами с тестами
- [ ] SvgMeshBackend 1014 — parser/triangulate/cache разнести
@ -324,8 +332,9 @@
разбивка на ≤200, вторым — целевое изменение (иначе diff-каша, правило Фазы 8)
### 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.1 ЗАВЕРШЕНА (2026-09-10): 0 папок >4 файлов.
- [ ] После каждого шага: `./gradlew build` ✓, `./gradlew test` ✓; конфиг-id модулей и
ключи сеттингов НЕ ломаем (совместимость .lvcfg); скрипты-переименования пакетов
не трогают 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.gui.GuiGraphicsExtractor;
import net.minecraft.resources.Identifier;
import dev.loki.lovisual.addon.AddonManager;
import dev.loki.lovisual.addon.AddonRenderPipelineManager;
import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.addon.pipeline.AddonRenderPipelineManager;
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.features.account.AccountConfig;
import dev.loki.lovisual.features.command.CommandManager;
import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer;
import dev.loki.lovisual.features.command.core.CommandManager;
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.hud.HudElements;
import dev.loki.lovisual.features.gui.hud.HudRenderSpace;
import dev.loki.lovisual.features.gui.hud.registry.HudElements;
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.nondraggable.StaticHudElementBootstrap;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.impl.SwapTooltip;
import dev.loki.lovisual.features.module.HudPhase;
import dev.loki.lovisual.features.module.ModuleAutoLoader;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.WorldPhase;
import dev.loki.lovisual.mixininterface.IGuiGraphics;
import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.SwapTooltip;
import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.mixininterface.render.IGuiGraphics;
import dev.loki.lovisual.render.effects.NetherPortalRiftPass;
import dev.loki.lovisual.render.effects.SleepOverlayPass;
import dev.loki.lovisual.render.engine.LoVisualRenderEngineBootstrap;
import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem;
import dev.loki.lovisual.render.engine.core.RenderPhase;
import dev.loki.lovisual.render.engine.core.RenderPhaseScope;
import dev.loki.lovisual.render.engine.core.ViewportContext;
import dev.loki.lovisual.render.engine.postprocess.PostProcessManager;
import dev.loki.lovisual.render.engine.profiler.ProfilerPhase;
import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D;
import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem;
import dev.loki.lovisual.render.engine.core.frame.RenderPhase;
import dev.loki.lovisual.render.engine.core.frame.RenderPhaseScope;
import dev.loki.lovisual.render.engine.core.context.ViewportContext;
import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager;
import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase;
import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler2D;
import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer;
import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmContributors;
import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmManager;
import dev.loki.lovisual.render.engine.renderer.Renderer2D;
import dev.loki.lovisual.render.engine.text.TextRenderer;
import dev.loki.lovisual.render.helpers.SystemCursor;
import dev.loki.lovisual.render.helpers.TickDelta;
import dev.loki.lovisual.util.aiming.RotationManager;
import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import dev.loki.lovisual.render.helpers.util.SystemCursor;
import dev.loki.lovisual.render.helpers.util.TickDelta;
import dev.loki.lovisual.util.aiming.rotation.RotationManager;
import dev.loki.lovisual.util.block.bed.SelfBedTracker;
import dev.loki.lovisual.util.click.AttackPressing;
import dev.loki.lovisual.util.combat.AntiBotTracker;
import dev.loki.lovisual.util.combat.protocol.CombatProtocolHeuristics;
import dev.loki.lovisual.util.combat.SprintController;
import dev.loki.lovisual.util.combat.tracking.AntiBotTracker;
import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristics;
import dev.loki.lovisual.util.combat.rotation.SprintController;
import dev.loki.lovisual.util.entity.simulation.BoatSimulationCache;
import dev.loki.lovisual.util.media.MediaSessionService;
import dev.loki.lovisual.util.network.BacktrackController;
import dev.loki.lovisual.util.network.BlinkManager;
import dev.loki.lovisual.util.media.session.MediaSessionService;
import dev.loki.lovisual.util.network.control.BacktrackController;
import dev.loki.lovisual.util.network.control.BlinkManager;
import dev.loki.lovisual.util.proxy.ProxyBackend;
import dev.loki.lovisual.util.network.FakeLagController;
import dev.loki.lovisual.util.player.inventory.InventorySwap;
import dev.loki.lovisual.util.network.control.FakeLagController;
import dev.loki.lovisual.util.player.inventory.core.InventorySwap;
import dev.loki.lovisual.util.player.simulation.PlayerSimulationCache;
import dev.loki.lovisual.util.pvp.PvpTargetTracker;
import dev.loki.lovisual.util.pvp.PvpTracker;
import dev.loki.lovisual.util.pvp.tracker.PvpTargetTracker;
import dev.loki.lovisual.util.pvp.tracker.PvpTracker;
import dev.loki.lovisual.util.target.TargetManager;
import dev.loki.lovisual.util.time.TimerController;
import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting;
import dev.loki.lovisual.features.module.core.Module;
public class LoVisual implements ClientModInitializer {

View file

@ -5,35 +5,43 @@
* 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.clickgui.LoVisualClickGuiSection;
import dev.loki.lovisual.api.v0.client.LoVisualClientApi;
import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import com.mojang.blaze3d.pipeline.RenderPipeline;
import dev.loki.lovisual.features.command.ClientCommand;
import dev.loki.lovisual.features.command.CommandManager;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement;
import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.core.CommandManager;
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.DraggableHudElementRegistry;
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.postprocess.PostProcessPass;
import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import dev.loki.lovisual.render.iris.patch.ShaderPatchEngine;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
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 {
private final AddonRegistration registration;
LoVisualAddonContextImpl(AddonRegistration registration) {
public LoVisualAddonContextImpl(AddonRegistration registration) {
this.registration = registration;
}
@ -156,7 +164,7 @@ public final class LoVisualAddonContextImpl implements LoVisualAddonContext {
private record AddonClientCommand(String addonId, ClientCommand delegate) implements ClientCommand {
@Override
public dev.loki.lovisual.features.command.CommandMetadata metadata() {
public dev.loki.lovisual.features.command.core.CommandMetadata metadata() {
return delegate.metadata();
}
@ -194,12 +202,12 @@ public final class LoVisualAddonContextImpl implements LoVisualAddonContext {
}
@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);
}
@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);
}
}

View file

@ -5,7 +5,7 @@
* 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.client.LoVisualClientApi;
@ -13,7 +13,8 @@ import dev.loki.lovisual.api.v0.client.LoVisualClientApi;
public final class LoVisualAddonRuntimeContextImpl implements LoVisualAddonRuntimeContext {
private final String addonId;
LoVisualAddonRuntimeContextImpl(String addonId) {
public LoVisualAddonRuntimeContextImpl(String addonId) {
this.addonId = addonId;
}

View file

@ -5,19 +5,22 @@
* 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.features.module.ModuleAutoLoader;
import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import java.util.ArrayList;
import java.util.List;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.core.AddonRegistration;
public final class LoVisualModuleLoadContextImpl implements LoVisualModuleLoadContext {
private final AddonRegistration registration;
private final List<String> pendingExclusions = new ArrayList<>();
LoVisualModuleLoadContextImpl(AddonRegistration registration) {
public LoVisualModuleLoadContextImpl(AddonRegistration registration) {
this.registration = registration;
}
@ -42,7 +45,8 @@ public final class LoVisualModuleLoadContextImpl implements LoVisualModuleLoadCo
return true;
}
void commit() {
public void commit() {
for (String reference : pendingExclusions) {
if (!registration.disabledBuiltInModules.contains(reference)) {
registration.disabledBuiltInModules.add(reference);

View file

@ -5,19 +5,20 @@
* 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.config.SettingDef;
import dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.config.values.ModeValue;
import dev.loki.lovisual.features.module.Module;
import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.mode.ModeValue;
import dev.loki.lovisual.features.module.core.Module;
public final class ModuleExtensionContextImpl implements ModuleExtensionContext {
private final String addonId;
private final Module module;
ModuleExtensionContextImpl(String addonId, Module module) {
public ModuleExtensionContextImpl(String addonId, Module module) {
this.addonId = addonId;
this.module = module;
}

View file

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

View file

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

View file

@ -5,16 +5,16 @@
* 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.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.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.module.Module;
import dev.loki.lovisual.features.module.ModuleAutoLoader;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader;
import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.util.logging.DebugLog;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.metadata.CustomValue;
@ -26,6 +26,15 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
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 {
;
@ -404,19 +413,22 @@ public enum AddonManager {
registration.suspendedStaticHudElements.clear();
}
static void noteModuleOwner(String addonId, String moduleId) {
public static void noteModuleOwner(String addonId, String moduleId) {
if (moduleId != null && !moduleId.isBlank()) {
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()) {
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()) {
STATIC_HUD_OWNERS.put(normalizeId(elementId), normalizeId(addonId));
}

View file

@ -5,7 +5,7 @@
* 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 net.fabricmc.loader.api.entrypoint.EntrypointContainer;
@ -14,20 +14,36 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
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 {
final AddonDescriptor descriptor;
final EntrypointContainer<LoVisualAddon> entrypoint;
final List<String> modules = new ArrayList<>();
final List<String> disabledBuiltInModules = new ArrayList<>();
final List<String> draggableHudElements = new ArrayList<>();
final List<String> staticHudElements = new ArrayList<>();
final List<String> commands = new ArrayList<>();
final List<String> clickGuiSections = new ArrayList<>();
final List<String> moduleExtensions = new ArrayList<>();
final List<String> irisPatchManifests = new ArrayList<>();
final List<String> renderCallbacks = new ArrayList<>();
final List<String> postProcessPasses = new ArrayList<>();
public final AddonDescriptor descriptor;
public final EntrypointContainer<LoVisualAddon> entrypoint;
public final List<String> modules = new ArrayList<>();
public final List<String> disabledBuiltInModules = new ArrayList<>();
public final List<String> draggableHudElements = new ArrayList<>();
public final List<String> staticHudElements = 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 Map<String, Boolean> suspendedModules = new LinkedHashMap<>();
final Map<String, Boolean> suspendedDraggableHudElements = new LinkedHashMap<>();
@ -38,7 +54,8 @@ public final class AddonRegistration {
boolean clientReadyNotified;
AddonStatus status;
boolean enabled;
boolean restartRequired;
public boolean restartRequired;
AddonRegistration(AddonDescriptor descriptor,
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));
}
}

View file

@ -5,17 +5,18 @@
* 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.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 java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import dev.loki.lovisual.addon.core.AddonManager;
public enum ClickGuiSectionManager {
;

View file

@ -5,14 +5,14 @@
* 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.features.module.Module;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.render.engine.renderer.Renderer2D;
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 net.minecraft.client.gui.GuiGraphicsExtractor;
@ -21,6 +21,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import dev.loki.lovisual.addon.context.ModuleExtensionContextImpl;
import dev.loki.lovisual.addon.core.AddonManager;
public enum ModuleExtensionManager {
;

View file

@ -5,22 +5,22 @@
* 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.vertex.PoseStack;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessContext;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderContext;
import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessContext;
import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderContext;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
import dev.loki.lovisual.features.module.HudPhase;
import dev.loki.lovisual.features.module.WorldPhase;
import dev.loki.lovisual.render.engine.postprocess.PostProcessManager;
import dev.loki.lovisual.render.engine.postprocess.PostProcessPass;
import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager;
import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass;
import dev.loki.lovisual.render.engine.renderer.Renderer2D;
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 net.minecraft.client.gui.GuiGraphicsExtractor;
@ -29,6 +29,7 @@ import java.util.EnumMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import dev.loki.lovisual.addon.core.AddonManager;
public enum AddonRenderPipelineManager {
;

View file

@ -5,9 +5,11 @@
* 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 dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.pipeline.AddonStatus;
public record AddonSnapshot(
String id,

View file

@ -5,7 +5,7 @@
* 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.GsonBuilder;
@ -26,7 +26,8 @@ public final class AddonStateStore {
private AddonStateStore() {
}
static Map<String, Boolean> loadEnabledOverrides() {
public static Map<String, Boolean> loadEnabledOverrides() {
Path file = stateFile();
if (!Files.isRegularFile(file)) return new HashMap<>();
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();
try {
Files.createDirectories(file.getParent());

View file

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

View file

@ -8,17 +8,17 @@
package dev.loki.lovisual.api.v0.addon;
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.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.module.Module;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.api.v0.module.LoVisualModuleExtension;
import dev.loki.lovisual.api.v0.render.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualPostProcessCallback;
import dev.loki.lovisual.api.v0.render.callback.LoVisualRenderCallback;
import dev.loki.lovisual.api.v0.render.LoVisualRenderStage;
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 java.nio.file.Path;

View file

@ -8,7 +8,8 @@
package dev.loki.lovisual.api.v0.addon;
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.

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.api.v0.clickgui;
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(
Renderer2D renderer,

View file

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

View file

@ -7,10 +7,10 @@
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.Renderer3D;
import dev.loki.lovisual.render.engine.text.TextRenderer;
import dev.loki.lovisual.render.engine.text.render.TextRenderer;
import net.minecraft.client.gui.GuiGraphicsExtractor;
public interface LoVisualModuleExtension {

View file

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

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.api.v0.render;
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;

View file

@ -5,9 +5,9 @@
* 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
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.
*/
package dev.loki.lovisual.api.v0.render;
package dev.loki.lovisual.api.v0.render.callback;
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;
public record LoVisualPostProcessContext(

View file

@ -5,9 +5,9 @@
* 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
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.
*/
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 dev.loki.lovisual.features.module.HudPhase;
import dev.loki.lovisual.features.module.WorldPhase;
import dev.loki.lovisual.features.module.phase.HudPhase;
import dev.loki.lovisual.features.module.phase.WorldPhase;
import dev.loki.lovisual.render.engine.renderer.Renderer2D;
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.gui.GuiGraphicsExtractor;

View file

@ -5,7 +5,7 @@
* 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 xaero.common.minimap.waypoints.Waypoint;

View file

@ -5,7 +5,7 @@
* 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.DraggableHudElementRegistry;

View file

@ -5,7 +5,7 @@
* 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 xaero.common.minimap.waypoints.Waypoint;

View file

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

View file

@ -7,8 +7,30 @@
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.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 {
;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,10 +5,10 @@
* 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.util.combat.protocol.CombatProtocolHeuristics;
import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristics;
import java.util.Map;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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).

View file

@ -5,9 +5,9 @@
* 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;

View file

@ -5,10 +5,23 @@
* 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.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 java.lang.reflect.Field;
@ -17,6 +30,7 @@ import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import dev.loki.lovisual.config.i18n.DisableSettingI18n;
/**
* 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.
*/
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

View file

@ -5,10 +5,10 @@
* 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 dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public enum ConfigLang {
;

View file

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

View file

@ -5,7 +5,7 @@
* 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.Retention;

View file

@ -5,22 +5,32 @@
* 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.render.iris.IrisRuntime;
import dev.loki.lovisual.config.values.collection.ConfigValue;
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.DebugMode;
import dev.loki.lovisual.util.player.inventory.InventorySearchScope;
import dev.loki.lovisual.util.player.inventory.InventorySwap;
import dev.loki.lovisual.util.player.inventory.InventorySwapPolicy;
import dev.loki.lovisual.util.player.inventory.InventorySwapVisibility;
import dev.loki.lovisual.util.player.inventory.support.InventorySearchScope;
import dev.loki.lovisual.util.player.inventory.core.InventorySwap;
import dev.loki.lovisual.util.player.inventory.core.InventorySwapPolicy;
import dev.loki.lovisual.util.player.inventory.support.InventorySwapVisibility;
import net.minecraft.client.resources.language.I18n;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
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 {

View file

@ -5,7 +5,7 @@
* 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.Paths;

View file

@ -5,18 +5,18 @@
* 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 de.marhali.json5.*;
import io.github.classgraph.ClassGraph;
import io.github.classgraph.ClassInfo;
import io.github.classgraph.ScanResult;
import dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.HudGlobalConfig;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement;
import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig;
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.util.logging.DebugLog;
@ -30,6 +30,11 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
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 {
;

View file

@ -5,7 +5,8 @@
* 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).

View file

@ -5,9 +5,10 @@
* 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 dev.loki.lovisual.config.definition.SettingDef;
/**
* Provides GUI-neutral setting definitions.

View file

@ -5,7 +5,7 @@
* 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.util.ArrayList;
@ -15,6 +15,11 @@ import java.util.zip.CRC32;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
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 static final int VERSION = 1;

View file

@ -5,7 +5,7 @@
* 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.LinkedHashMap;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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.DataOutputStream;
@ -28,7 +28,8 @@ public enum ConfigProfileValueCodec {
private static final byte LIST = 7;
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) {
out.writeByte(NULL);
} 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();
return switch (type) {
case NULL -> null;

View file

@ -5,12 +5,13 @@
* 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.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
public enum ConfigProfileDateFormatter {
;

View file

@ -5,11 +5,12 @@
* 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.Collections;
import java.util.List;
import dev.loki.lovisual.config.profile.codec.ConfigProfileType;
public record ConfigProfileDiff(
ConfigProfileType type,

View file

@ -5,9 +5,13 @@
* 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 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 ConfigProfileDiff compare(ConfigProfileSnapshot current, ConfigProfileSnapshot selected) {

View file

@ -5,22 +5,25 @@
* 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.config.ConfigObject;
import dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.addon.AddonManager;
import dev.loki.lovisual.features.gui.hud.BaseHudElement;
import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.addon.core.AddonManager;
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.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.theme.Themes;
import dev.loki.lovisual.features.module.Module;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.core.ModuleManager;
import dev.loki.lovisual.util.logging.DebugLog;
import java.util.HashMap;
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 ApplyResult apply(ConfigProfileSnapshot snapshot) {

View file

@ -5,25 +5,32 @@
* 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 net.minecraft.client.Minecraft;
import dev.loki.lovisual.config.ConfigObject;
import dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.addon.AddonManager;
import dev.loki.lovisual.features.gui.hud.AbstractHudElement;
import dev.loki.lovisual.config.definition.ConfigObject;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.addon.core.AddonManager;
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.DraggableHudElementRegistry;
import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry;
import dev.loki.lovisual.features.theme.Themes;
import dev.loki.lovisual.features.module.Module;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.core.ModuleManager;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
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 ConfigProfileSnapshot collect(ConfigProfileType type, String name) {

View file

@ -5,11 +5,20 @@
* 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.nio.file.Path;
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 static final ConfigProfileService INSTANCE = new ConfigProfileService();

View file

@ -5,9 +5,9 @@
* 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 java.io.IOException;
@ -18,6 +18,10 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
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 static final String EXTENSION = ".lvcfg";
@ -30,7 +34,8 @@ public final class ConfigProfileStorage {
this(ConfigPaths.profilesRoot());
}
ConfigProfileStorage(Path root) {
public ConfigProfileStorage(Path root) {
this.root = root;
}

View file

@ -5,7 +5,10 @@
* 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(
String id,

View file

@ -5,11 +5,13 @@
* 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.Collections;
import java.util.List;
import dev.loki.lovisual.config.profile.codec.ConfigProfileEntry;
import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta;
public record ConfigProfileSnapshot(
ConfigProfileMeta meta,

View file

@ -5,7 +5,7 @@
* 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.
*/
package dev.loki.lovisual.config.values;
package dev.loki.lovisual.config.values.collection;
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.

View file

@ -5,13 +5,14 @@
* 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 java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import dev.loki.lovisual.config.values.collection.ConfigValue;
/**
* Хранит набор item-id в формате namespace:path (minecraft:xxx).

View file

@ -5,12 +5,13 @@
* 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.LinkedHashSet;
import java.util.List;
import java.util.Set;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class SetValue extends ConfigValue<Set<String>> {

View file

@ -5,7 +5,7 @@
* 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 {
String get();

View file

@ -5,7 +5,8 @@
* 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> {

View file

@ -5,9 +5,11 @@
* 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.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.color.ColorValue;
/**
* 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.
*/
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.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.color.ColorValue;
/**
* Цвет без альфы. Хранится как hex "#RRGGBB" и возвращается с полной альфой (0xFF) при запросе ARGB.

View file

@ -5,7 +5,7 @@
* 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 {
PRESS,

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,9 +5,11 @@
* 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 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> {

View file

@ -5,13 +5,14 @@
* 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.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class ModeValue extends ConfigValue<String> {

View file

@ -5,10 +5,11 @@
* 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.Map;
import dev.loki.lovisual.config.values.collection.ConfigValue;
public class BooleanMapValue extends ConfigValue<Map<String, Boolean>> {

View file

@ -5,7 +5,8 @@
* 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> {

View file

@ -5,9 +5,10 @@
* 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 dev.loki.lovisual.config.values.collection.ConfigValue;
public class NumberValue<N extends Number> extends ConfigValue<N> {

View file

@ -5,7 +5,8 @@
* 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> {

View file

@ -8,7 +8,7 @@
package dev.loki.lovisual.events;
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.util.logging.DebugLog;
@ -19,7 +19,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.events.meta.EventHandler;
public final class EventBus {

View file

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

View file

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

View file

@ -10,7 +10,7 @@ package dev.loki.lovisual.events.impl.network;
import lombok.Getter;
import net.minecraft.network.protocol.Packet;
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 {
private final Packet<?> packet;

View file

@ -7,8 +7,8 @@
package dev.loki.lovisual.events.impl.player;
import dev.loki.lovisual.config.SettingDef;
import dev.loki.lovisual.config.SettingOwner;
import dev.loki.lovisual.config.definition.SettingDef;
import dev.loki.lovisual.config.definition.SettingOwner;
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.SettingFactory;

View file

@ -8,8 +8,8 @@
package dev.loki.lovisual.events.impl.render;
import dev.loki.lovisual.events.Event;
import dev.loki.lovisual.render.engine.svg.SvgRegistry;
import dev.loki.lovisual.render.engine.text.FontInfo;
import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry;
import dev.loki.lovisual.render.engine.text.font.info.FontInfo;
import net.minecraft.resources.Identifier;
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.RetentionPolicy;
import java.lang.annotation.Target;
import dev.loki.lovisual.events.meta.UsedImplicitly;
@UsedImplicitly
@Retention(RetentionPolicy.RUNTIME)

View file

@ -8,14 +8,14 @@
package dev.loki.lovisual.features.account;
import net.minecraft.resources.Identifier;
import dev.loki.lovisual.config.ConfigNameProvider;
import dev.loki.lovisual.config.ConfigSerializer;
import dev.loki.lovisual.config.JsonConfigObject;
import dev.loki.lovisual.config.values.ConfigValue;
import dev.loki.lovisual.config.values.StringValue;
import dev.loki.lovisual.config.definition.ConfigNameProvider;
import dev.loki.lovisual.config.io.ConfigSerializer;
import dev.loki.lovisual.config.io.JsonConfigObject;
import dev.loki.lovisual.config.values.collection.ConfigValue;
import dev.loki.lovisual.config.values.primitive.StringValue;
import dev.loki.lovisual.util.session.MicrosoftSessionResult;
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 java.time.LocalDateTime;

View file

@ -14,7 +14,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.DefaultPlayerSkin;
import net.minecraft.resources.Identifier;
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.net.HttpURLConnection;

View file

@ -5,7 +5,7 @@
* 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;

View file

@ -5,7 +5,7 @@
* 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;
@ -18,11 +18,11 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
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.
*/
package dev.loki.lovisual.features.command;
package dev.loki.lovisual.features.command.core;
import com.mojang.brigadier.context.StringRange;
import com.mojang.brigadier.suggestion.Suggestion;
@ -21,6 +21,13 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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 {
;

View file

@ -5,7 +5,7 @@
* 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;
@ -13,6 +13,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
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 {
private static final ClassValue<Optional<CommandMetadata>> ANNOTATED = new ClassValue<>() {
@ -74,7 +77,8 @@ public final class CommandMetadata {
return fromLegacy(command);
}
static CommandMetadata fromAnnotation(Class<?> type) {
public static CommandMetadata fromAnnotation(Class<?> type) {
CommandMetadata annotated = annotated(type);
if (annotated == null) {
throw new IllegalStateException(type.getName() + " must be annotated with @CommandInfo");
@ -82,7 +86,8 @@ public final class CommandMetadata {
return annotated;
}
static CommandMetadata annotated(Class<?> type) {
public static CommandMetadata annotated(Class<?> type) {
return ANNOTATED.get(type).orElse(null);
}

View file

@ -7,8 +7,8 @@
package dev.loki.lovisual.features.command.impl;
import dev.loki.lovisual.features.module.Module;
import dev.loki.lovisual.features.module.ModuleManager;
import dev.loki.lovisual.features.module.core.Module;
import dev.loki.lovisual.features.module.core.ModuleManager;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.PlayerInfo;
@ -21,7 +21,7 @@ public final class CommandUtils {
private CommandUtils() {
}
static Module findModule(String query) {
public static Module findModule(String query) {
if (query == null || query.isBlank()) return null;
for (Module module : ModuleManager.getModules()) {
if (matchesModule(module, query)) return module;
@ -29,7 +29,7 @@ public final class CommandUtils {
return null;
}
static List<String> suggestModules(String token) {
public static List<String> suggestModules(String token) {
String lower = normalize(token);
return ModuleManager.getModules().stream()
.map(Module::name)
@ -38,7 +38,7 @@ public final class CommandUtils {
.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();
String lower = normalize(token);
List<String> names = new ArrayList<>();
@ -53,18 +53,18 @@ public final class CommandUtils {
return names;
}
static List<Module> sortedModules() {
public static List<Module> sortedModules() {
return ModuleManager.getModules().stream()
.sorted(Comparator.comparing(Module::name, String.CASE_INSENSITIVE_ORDER))
.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 "";
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;
return value.equalsIgnoreCase("on")
|| value.equalsIgnoreCase("true")
@ -73,7 +73,7 @@ public final class CommandUtils {
|| value.equals("1");
}
static boolean isState(String value) {
public static boolean isState(String value) {
if (value == null) return true;
return switch (value.toLowerCase(Locale.ROOT)) {
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.
*/
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.AddonManager;
import dev.loki.lovisual.addon.AddonSnapshot;
import dev.loki.lovisual.features.command.ClientCommand;
import dev.loki.lovisual.features.command.CommandContext;
import dev.loki.lovisual.features.command.CommandInfo;
import dev.loki.lovisual.features.command.CommandOutput;
import dev.loki.lovisual.addon.core.AddonIssue;
import dev.loki.lovisual.addon.core.AddonManager;
import dev.loki.lovisual.addon.pipeline.AddonSnapshot;
import dev.loki.lovisual.features.command.util.ClientCommand;
import dev.loki.lovisual.features.command.core.CommandContext;
import dev.loki.lovisual.features.command.core.CommandInfo;
import dev.loki.lovisual.features.command.util.CommandOutput;
import java.util.List;
import java.util.Locale;

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