diff --git a/TODO.md b/TODO.md index bb748db..8757caa 100644 --- a/TODO.md +++ b/TODO.md @@ -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` diff --git a/combatant-client-26.2/TODO.md b/combatant-client-26.2/TODO.md index ab70ead..7f2f519 100644 --- a/combatant-client-26.2/TODO.md +++ b/combatant-client-26.2/TODO.md @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/LoVisual.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/LoVisual.java index 77d4fa2..077a52d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/LoVisual.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/LoVisual.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonContextImpl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonContextImpl.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonContextImpl.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonContextImpl.java index 2a7ea3d..31f8747 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonContextImpl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonContextImpl.java @@ -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 suggest(dev.loki.lovisual.features.command.CommandContext ctx, int argIndex, String token) { + public java.util.List 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); } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonRuntimeContextImpl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonRuntimeContextImpl.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonRuntimeContextImpl.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonRuntimeContextImpl.java index b6c11cb..94f71ba 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualAddonRuntimeContextImpl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualAddonRuntimeContextImpl.java @@ -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; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualModuleLoadContextImpl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualModuleLoadContextImpl.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualModuleLoadContextImpl.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualModuleLoadContextImpl.java index 98abb0d..3a6f2eb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/LoVisualModuleLoadContextImpl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/LoVisualModuleLoadContextImpl.java @@ -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 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); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionContextImpl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/ModuleExtensionContextImpl.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionContextImpl.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/ModuleExtensionContextImpl.java index 1ec2452..f933e8b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionContextImpl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/context/ModuleExtensionContextImpl.java @@ -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; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonDescriptor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonDescriptor.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonDescriptor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonDescriptor.java index 22ff5fc..88a9979 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonDescriptor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonDescriptor.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonIssue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonIssue.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonIssue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonIssue.java index a56d6be..f871b4c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonIssue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonIssue.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonManager.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonManager.java index 3caa411..4cb3ed7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonManager.java @@ -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)); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRegistration.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonRegistration.java similarity index 64% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRegistration.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonRegistration.java index 544f457..d137c90 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRegistration.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/core/AddonRegistration.java @@ -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 entrypoint; - final List modules = new ArrayList<>(); - final List disabledBuiltInModules = new ArrayList<>(); - final List draggableHudElements = new ArrayList<>(); - final List staticHudElements = new ArrayList<>(); - final List commands = new ArrayList<>(); - final List clickGuiSections = new ArrayList<>(); - final List moduleExtensions = new ArrayList<>(); - final List irisPatchManifests = new ArrayList<>(); - final List renderCallbacks = new ArrayList<>(); - final List postProcessPasses = new ArrayList<>(); + public final AddonDescriptor descriptor; + + public final EntrypointContainer entrypoint; + + public final List modules = new ArrayList<>(); + + public final List disabledBuiltInModules = new ArrayList<>(); + + public final List draggableHudElements = new ArrayList<>(); + + public final List staticHudElements = new ArrayList<>(); + + public final List commands = new ArrayList<>(); + + public final List clickGuiSections = new ArrayList<>(); + + public final List moduleExtensions = new ArrayList<>(); + + public final List irisPatchManifests = new ArrayList<>(); + + public final List renderCallbacks = new ArrayList<>(); + + public final List postProcessPasses = new ArrayList<>(); + final List issues = new ArrayList<>(); final Map suspendedModules = new LinkedHashMap<>(); final Map 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 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)); } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ClickGuiSectionManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ClickGuiSectionManager.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ClickGuiSectionManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ClickGuiSectionManager.java index 1320dca..eb40baf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ClickGuiSectionManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ClickGuiSectionManager.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ModuleExtensionManager.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ModuleExtensionManager.java index e48a9b7..f4492ce 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/ModuleExtensionManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/manager/ModuleExtensionManager.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRenderPipelineManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonRenderPipelineManager.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRenderPipelineManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonRenderPipelineManager.java index cbec906..827f56e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonRenderPipelineManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonRenderPipelineManager.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonSnapshot.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonSnapshot.java index 1245bf3..4a79e9b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonSnapshot.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStateStore.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStateStore.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStateStore.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStateStore.java index cec8adc..995252d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStateStore.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStateStore.java @@ -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 loadEnabledOverrides() { + public static Map 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 enabled) { + public static void saveEnabledOverrides(Map enabled) { + Path file = stateFile(); try { Files.createDirectories(file.getParent()); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStatus.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStatus.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStatus.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStatus.java index ae51ccb..a40ab2d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/AddonStatus.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/addon/pipeline/AddonStatus.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualAddonContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualAddonContext.java index 4283781..13bf253 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualAddonContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualAddonContext.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualModuleLoadContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualModuleLoadContext.java index 6967191..dedc896 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualModuleLoadContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/addon/LoVisualModuleLoadContext.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/clickgui/LoVisualClickGuiRenderContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/clickgui/LoVisualClickGuiRenderContext.java index b428412..fd0232c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/clickgui/LoVisualClickGuiRenderContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/clickgui/LoVisualClickGuiRenderContext.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/client/LoVisualClientApi.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/client/LoVisualClientApi.java index ada4938..b370510 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/client/LoVisualClientApi.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/client/LoVisualClientApi.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/LoVisualModuleExtension.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/LoVisualModuleExtension.java index 3b69d6f..f8a9919 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/LoVisualModuleExtension.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/LoVisualModuleExtension.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/ModuleExtensionContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/ModuleExtensionContext.java index 5650182..918769e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/ModuleExtensionContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/module/ModuleExtensionContext.java @@ -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(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualUniforms.java index 59d2b63..c12ea92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualUniforms.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessCallback.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessCallback.java similarity index 67% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessCallback.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessCallback.java index 6d07c50..711197b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessCallback.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessCallback.java @@ -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); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessContext.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessContext.java index de915c2..0f4181f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualPostProcessContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualPostProcessContext.java @@ -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( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderCallback.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderCallback.java similarity index 68% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderCallback.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderCallback.java index 57dfe2f..c00c925 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderCallback.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderCallback.java @@ -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); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderContext.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderContext.java index e93a089..21cf930 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/LoVisualRenderContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/api/v0/render/callback/LoVisualRenderContext.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroMinimapCompat.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroMinimapCompat.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroMinimapCompat.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroMinimapCompat.java index 9032d46..7c21659 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroMinimapCompat.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroMinimapCompat.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroState.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroState.java index ddbf4e4..d081bf9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroState.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroWorldMapCompat.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroWorldMapCompat.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroWorldMapCompat.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroWorldMapCompat.java index 5c5761e..dc5337d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/TriangulatorXaeroWorldMapCompat.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/compat/xaero/triangulator/TriangulatorXaeroWorldMapCompat.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonBooleanGroupSchema.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonBooleanGroupSchema.java index 4cde65b..c58a274 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonBooleanGroupSchema.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonBooleanGroupSchema.java @@ -8,7 +8,8 @@ package dev.loki.lovisual.config.common; import java.util.Map; +import dev.loki.lovisual.config.common.CommonSettingSchema; public interface CommonBooleanGroupSchema extends CommonSettingSchema { Map defaults(); -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonSettingSchemas.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonSettingSchemas.java index 78dbb99..e81b47b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonSettingSchemas.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/CommonSettingSchemas.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatPriority.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatPriority.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatPriority.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatPriority.java index 4285acc..d1bd633 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatPriority.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatPriority.java @@ -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; @@ -14,4 +14,4 @@ public final class CombatPriority implements CommonSettingSchema { public String commonI18nKey() { return "combat.priority"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatProtocolHeuristicSources.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatProtocolHeuristicSources.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatProtocolHeuristicSources.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatProtocolHeuristicSources.java index 280af36..abbc4a3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CombatProtocolHeuristicSources.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CombatProtocolHeuristicSources.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CommonKey.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CommonKey.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CommonKey.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CommonKey.java index 5c2d2fd..dca513d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/CommonKey.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/CommonKey.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/FakeLagFlushOn.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/FakeLagFlushOn.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/FakeLagFlushOn.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/FakeLagFlushOn.java index e7b3779..401461e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/FakeLagFlushOn.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/common/FakeLagFlushOn.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMode.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMode.java index c721df1..b6fbcfd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMode.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationMode implements CommonSettingSchema { public String commonI18nKey() { return "rotation.rotation_mode"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMovementCorrection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMovementCorrection.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMovementCorrection.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMovementCorrection.java index 4c5aa29..58177d6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationMovementCorrection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationMovementCorrection.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationMovementCorrection implements CommonSettingSchema { public String commonI18nKey() { return "rotation.movement_correction"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetThreshold.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetThreshold.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetThreshold.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetThreshold.java index 9cc7a4f..8e190b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetThreshold.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetThreshold.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationResetThreshold implements CommonSettingSchema { public String commonI18nKey() { return "rotation.rotation_reset_threshold"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetTicks.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetTicks.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetTicks.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetTicks.java index ebe29f1..d5aacfa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationResetTicks.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/rotation/RotationResetTicks.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationResetTicks implements CommonSettingSchema { public String commonI18nKey() { return "rotation.rotation_reset_ticks"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationThroughWalls.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationThroughWalls.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationThroughWalls.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationThroughWalls.java index 2fd4547..8eaba4b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationThroughWalls.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationThroughWalls.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationThroughWalls implements CommonSettingSchema { public String commonI18nKey() { return "rotation.rotation_through_walls"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationTiming.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationTiming.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationTiming.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationTiming.java index 23ce79c..794e948 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/RotationTiming.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/RotationTiming.java @@ -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; @@ -14,4 +14,4 @@ public final class RotationTiming implements CommonSettingSchema { public String commonI18nKey() { return "rotation.rotation_timing"; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/TargetFilters.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/TargetFilters.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/TargetFilters.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/TargetFilters.java index 02448e9..df41b21 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/TargetFilters.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/common/impl/wall/TargetFilters.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigNameProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigNameProvider.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigNameProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigNameProvider.java index c63be9e..16aaa14 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigNameProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigNameProvider.java @@ -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). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigObject.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigObject.java similarity index 70% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigObject.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigObject.java index de8e1fd..8fc33cd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigObject.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/ConfigObject.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDef.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingDef.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDef.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingDef.java index 11e6496..42c2f20 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDef.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingDef.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingOwner.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingOwner.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingOwner.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingOwner.java index f40740e..25d0cca 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingOwner.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/definition/SettingOwner.java @@ -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 diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigLang.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigLang.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigLang.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigLang.java index e4b1696..b5972ba 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigLang.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigLang.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigValueAliasProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigValueAliasProvider.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigValueAliasProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigValueAliasProvider.java index 427c6c7..550e4dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigValueAliasProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/ConfigValueAliasProvider.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/DisableSettingI18n.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/DisableSettingI18n.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/DisableSettingI18n.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/DisableSettingI18n.java index 5da8d01..1124a6d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/DisableSettingI18n.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/DisableSettingI18n.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/MainConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/MainConfig.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/MainConfig.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/MainConfig.java index 1619275..424d7ad 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/MainConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/i18n/MainConfig.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigPaths.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigPaths.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigPaths.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigPaths.java index 66cc560..354d713 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigPaths.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigPaths.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigSerializer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigSerializer.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigSerializer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigSerializer.java index cfd22bf..3aeb5a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/ConfigSerializer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/ConfigSerializer.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/JsonConfigObject.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/JsonConfigObject.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/JsonConfigObject.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/JsonConfigObject.java index d377c79..d516ea5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/JsonConfigObject.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/JsonConfigObject.java @@ -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). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDefProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/SettingDefProvider.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDefProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/SettingDefProvider.java index 674b40b..797ec5c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/SettingDefProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/io/SettingDefProvider.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileBinaryCodec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileBinaryCodec.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileBinaryCodec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileBinaryCodec.java index 4e87359..8610d2e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileBinaryCodec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileBinaryCodec.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileEntry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileEntry.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileEntry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileEntry.java index 4d96e0e..15d0b0a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileEntry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileEntry.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileType.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileType.java index 50617f6..d16d00f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileType.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileValueCodec.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileValueCodec.java index 4efd2ee..b379390 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/codec/ConfigProfileValueCodec.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDateFormatter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDateFormatter.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDateFormatter.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDateFormatter.java index 7080ef0..096305d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDateFormatter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDateFormatter.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiff.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiff.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiff.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiff.java index cdd8edc..912d619 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiff.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiff.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiffEngine.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiffEngine.java index a6d59c7..dd87d76 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/diff/ConfigProfileDiffEngine.java @@ -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) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileApplier.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileApplier.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileApplier.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileApplier.java index a123361..15c60fc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileApplier.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileApplier.java @@ -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) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileCollector.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileCollector.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileCollector.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileCollector.java index dd7a22a..4bfb788 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileCollector.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileCollector.java @@ -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) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileService.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileService.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileService.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileService.java index 5a4b888..9ca9955 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileService.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileService.java @@ -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(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileStorage.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileStorage.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileStorage.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileStorage.java index deac7fd..5d2bece 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileStorage.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/service/ConfigProfileStorage.java @@ -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; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileMeta.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileMeta.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileMeta.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileMeta.java index 7a310b1..ab3a141 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileMeta.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileMeta.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileSnapshot.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileSnapshot.java index 0591ce1..cc3f217 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/ConfigProfileSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/profile/snapshot/ConfigProfileSnapshot.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ConfigValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ConfigValue.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ConfigValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ConfigValue.java index 8174049..64f8e70 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ConfigValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ConfigValue.java @@ -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; /** * Базовый тип для всех конфиг-значений. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemCooldownRulesValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemCooldownRulesValue.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemCooldownRulesValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemCooldownRulesValue.java index eeaae5d..fc939dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemCooldownRulesValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemCooldownRulesValue.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemIdSetValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemIdSetValue.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemIdSetValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemIdSetValue.java index 55177b3..95043a8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ItemIdSetValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/ItemIdSetValue.java @@ -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). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/SetValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/SetValue.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/SetValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/SetValue.java index fb9541b..1c1b97f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/SetValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/collection/SetValue.java @@ -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> { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ColorValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/ColorValue.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ColorValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/ColorValue.java index cad924a..20736ce 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ColorValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/ColorValue.java @@ -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(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/KeyBindValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/KeyBindValue.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/KeyBindValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/KeyBindValue.java index 5f417f2..9656957 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/KeyBindValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/KeyBindValue.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBAColorValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBAColorValue.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBAColorValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBAColorValue.java index c368a61..a061750 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBAColorValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBAColorValue.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBColorValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBColorValue.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBColorValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBColorValue.java index 6106d97..7cfe511 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/RGBColorValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/color/RGBColorValue.java @@ -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. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BindMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/BindMode.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BindMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/BindMode.java index 86602ec..a51f86d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BindMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/BindMode.java @@ -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, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumIds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumIds.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumIds.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumIds.java index 3f9ca51..89f4a46 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumIds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumIds.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumValue.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumValue.java index 3d9c6dd..41e0e78 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/EnumValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/EnumValue.java @@ -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> extends ConfigValue { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ModeValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/ModeValue.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ModeValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/ModeValue.java index 900dfca..17cbfda 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/ModeValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/mode/ModeValue.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanMapValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanMapValue.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanMapValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanMapValue.java index 610511b..511bcd7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanMapValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanMapValue.java @@ -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> { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanValue.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanValue.java index b94cbe9..ed957f1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/BooleanValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/BooleanValue.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/NumberValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/NumberValue.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/NumberValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/NumberValue.java index eb976a9..9ade29e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/NumberValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/NumberValue.java @@ -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 extends ConfigValue { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/StringValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/StringValue.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/StringValue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/StringValue.java index 611417d..c32faab 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/StringValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/config/values/primitive/StringValue.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/EventBus.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/EventBus.java index b67ab7d..9207fa4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/EventBus.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/EventBus.java @@ -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 { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/Events.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/Events.java index 29559fa..402fd7c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/Events.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/Events.java @@ -6,7 +6,6 @@ */ package dev.loki.lovisual.events; -import dev.loki.lovisual.events.EventBus; public enum Events { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/BlinkPacketEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/BlinkPacketEvent.java index fb0952f..5e953ec 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/BlinkPacketEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/BlinkPacketEvent.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/PacketEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/PacketEvent.java index eb836dc..eab4f80 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/PacketEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/network/PacketEvent.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/player/I18nPreflightCollectEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/player/I18nPreflightCollectEvent.java index a38610d..54b9ef6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/player/I18nPreflightCollectEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/player/I18nPreflightCollectEvent.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/render/RenderPrewarmCollectEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/render/RenderPrewarmCollectEvent.java index 1abafdc..3154dc3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/render/RenderPrewarmCollectEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/impl/render/RenderPrewarmCollectEvent.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/meta/EventHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/meta/EventHandler.java index 30dbfa4..368bc2a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/meta/EventHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/events/meta/EventHandler.java @@ -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) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/AccountConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/AccountConfig.java index 1224c9d..6032b7d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/AccountConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/AccountConfig.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/SkinManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/SkinManager.java index 6f3d29e..6731d72 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/SkinManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/account/SkinManager.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandContext.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandContext.java index f2f63a4..2d6f60e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandContext.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandInfo.java similarity index 71% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandInfo.java index 9c25ad5..9887ffb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandInfo.java @@ -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 ""; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandManager.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandManager.java index fa68780..f248fc6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandManager.java @@ -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 { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandMetadata.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandMetadata.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandMetadata.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandMetadata.java index 36e0f6a..9395fd0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandMetadata.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/core/CommandMetadata.java @@ -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> 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); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CommandUtils.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CommandUtils.java index e09bb47..9a6b29d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CommandUtils.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CommandUtils.java @@ -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 suggestModules(String token) { + public static List 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 suggestPlayers(Minecraft mc, String token) { + public static List suggestPlayers(Minecraft mc, String token) { if (mc == null || mc.getConnection() == null) return List.of(); String lower = normalize(token); List names = new ArrayList<>(); @@ -53,18 +53,18 @@ public final class CommandUtils { return names; } - static List sortedModules() { + public static List sortedModules() { return ModuleManager.getModules().stream() .sorted(Comparator.comparing(Module::name, String.CASE_INSENSITIVE_ORDER)) .toList(); } - static String join(List parts, int start) { + public static String join(List 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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/AddonsCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/AddonsCommand.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/AddonsCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/AddonsCommand.java index d5023a1..c444681 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/AddonsCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/AddonsCommand.java @@ -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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ConfigCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/ConfigCommand.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ConfigCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/ConfigCommand.java index fc4f6fc..4376e71 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ConfigCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/ConfigCommand.java @@ -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.config.ConfigPaths; -import dev.loki.lovisual.config.ConfigSerializer; -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.features.module.ModuleManager; +import dev.loki.lovisual.config.io.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigSerializer; +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 dev.loki.lovisual.features.module.core.ModuleManager; import java.util.List; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/RelationCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/RelationCommand.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/RelationCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/RelationCommand.java index 560c6ad..5859a17 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/RelationCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/RelationCommand.java @@ -5,19 +5,20 @@ * 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.config.ConfigSerializer; -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.config.io.ConfigSerializer; +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 dev.loki.lovisual.features.relations.PlayerRelations; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Set; +import dev.loki.lovisual.features.command.impl.CommandUtils; public abstract class RelationCommand implements ClientCommand { protected abstract Set entries(PlayerRelations relations); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/UsernameCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/UsernameCommand.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/UsernameCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/UsernameCommand.java index f6df4ad..bccf6f9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/UsernameCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/client/UsernameCommand.java @@ -5,12 +5,12 @@ * 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.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.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; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HelpCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/HelpCommand.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HelpCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/HelpCommand.java index 5bc9ff2..0bc09e0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HelpCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/HelpCommand.java @@ -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.info; -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.CommandPrefix; -import dev.loki.lovisual.features.command.CommandManager; -import dev.loki.lovisual.features.command.CommandMetadata; -import dev.loki.lovisual.features.command.CommandOutput; +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.CommandPrefix; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.core.CommandMetadata; +import dev.loki.lovisual.features.command.util.CommandOutput; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/PingCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/PingCommand.java similarity index 65% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/PingCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/PingCommand.java index dbf6548..7de4f32 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/PingCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/PingCommand.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.info; -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.util.player.NetworkStatsUtil; +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 dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.stats.Ping; @CommandInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ServerInfoCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/ServerInfoCommand.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ServerInfoCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/ServerInfoCommand.java index 7903862..b01e12d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ServerInfoCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/ServerInfoCommand.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.info; -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.util.player.NetworkStatsUtil; +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 dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import net.minecraft.client.multiplayer.ServerData; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/TpsCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/TpsCommand.java similarity index 62% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/TpsCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/TpsCommand.java index 43d6343..02c5d93 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/TpsCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/info/TpsCommand.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.info; -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.util.player.NetworkStatsUtil; +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 dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/BindCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/BindCommand.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/BindCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/BindCommand.java index dd6cd35..291ffd6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/BindCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/BindCommand.java @@ -5,17 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.module; -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.features.module.Module; +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 dev.loki.lovisual.features.module.core.Module; import dev.loki.lovisual.util.input.KeyUtil; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.features.command.impl.CommandUtils; @CommandInfo( id = "bind", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HideCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/HideCommand.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HideCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/HideCommand.java index 0607efd..a000ebc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/HideCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/HideCommand.java @@ -5,17 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.module; -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.features.module.Module; +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 dev.loki.lovisual.features.module.core.Module; import java.util.List; import java.util.Locale; import dev.loki.lovisual.features.gui.hud.draggable.impl.panels.ModuleList; +import dev.loki.lovisual.features.command.impl.CommandUtils; @CommandInfo( id = "hide", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ModulesCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ModulesCommand.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ModulesCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ModulesCommand.java index 71a9e5d..3d0d069 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ModulesCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ModulesCommand.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.module; -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.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; +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 dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; @@ -20,6 +20,8 @@ import net.minecraft.network.chat.MutableComponent; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.command.impl.CommandUtils; @CommandInfo( id = "modules", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ToggleCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ToggleCommand.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ToggleCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ToggleCommand.java index 4fb4fe1..2e6784c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/ToggleCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/module/ToggleCommand.java @@ -5,16 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.module; -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.features.module.Module; +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 dev.loki.lovisual.features.module.core.Module; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.features.command.impl.CommandUtils; @CommandInfo( id = "toggle", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CoordinatesCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/CoordinatesCommand.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CoordinatesCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/CoordinatesCommand.java index 66458e8..7355769 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/CoordinatesCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/CoordinatesCommand.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.world; -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.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.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/IrisCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/IrisCommand.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/IrisCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/IrisCommand.java index 2b7e167..70cf496 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/IrisCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/IrisCommand.java @@ -5,16 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.world; -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.render.iris.IrisCompatibilityFeature; -import dev.loki.lovisual.render.iris.IrisCompatibilityProfile; -import dev.loki.lovisual.render.iris.IrisRuntime; -import dev.loki.lovisual.render.iris.IrisRuntimeSnapshot; +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 dev.loki.lovisual.render.iris.compat.IrisCompatibilityFeature; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfile; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntimeSnapshot; import dev.loki.lovisual.render.iris.patch.ShaderPatchEngine; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommand.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommand.java index f963963..8a07539 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommand.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command.impl; +package dev.loki.lovisual.features.command.impl.world; import dev.loki.lovisual.compat.xaero.XaeroWaypointStore; -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.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 net.fabricmc.loader.api.FabricLoader; import java.util.ArrayList; @@ -179,7 +179,7 @@ public final class XaeroWaypointCommand implements ClientCommand { return loader.isModLoaded("xaerominimap") || loader.isModLoaded("xaeroworldmap"); } - static Integer parseCoordinate(String value, int currentCoordinate) { + public static Integer parseCoordinate(String value, int currentCoordinate) { if (value == null || value.isBlank()) return null; if (isCurrentCoordinate(value)) return currentCoordinate; try { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/ClientCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/ClientCommand.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/ClientCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/ClientCommand.java index 36c2e9b..3713c67 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/ClientCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/ClientCommand.java @@ -5,9 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command; +package dev.loki.lovisual.features.command.util; 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; public interface ClientCommand { default CommandMetadata metadata() { @@ -59,5 +62,5 @@ public interface ClientCommand { return List.of(); } - boolean execute(CommandContext ctx); + public boolean execute(CommandContext ctx); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandOutput.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandOutput.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandOutput.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandOutput.java index 1df8687..3f60767 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandOutput.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandOutput.java @@ -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.util; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandPrefix.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandPrefix.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandPrefix.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandPrefix.java index f8b0016..25179ed 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/CommandPrefix.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/CommandPrefix.java @@ -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.util; /** * Single source of truth for the client command prefix. Messages typed in chat diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/UsageHints.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/UsageHints.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/UsageHints.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/UsageHints.java index 6b9ef62..26bcb9e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/UsageHints.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/command/util/UsageHints.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.command; +package dev.loki.lovisual.features.command.util; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.features.command.util.ClientCommand; +import dev.loki.lovisual.features.command.util.CommandPrefix; /** * Builds usage-hint suggestions shown in the autocomplete popup when a command @@ -51,7 +53,7 @@ public final class UsageHints { } /** Splits "[list|add|remove] [player]" into ["list|add|remove", "player"]. */ - static List placeholders(String usage) { + public static List placeholders(String usage) { List out = new ArrayList<>(); StringBuilder current = new StringBuilder(); boolean inside = false; @@ -73,7 +75,7 @@ public final class UsageHints { } /** First word of the usage body, e.g. "toggle" from "%toggle ". */ - static String commandHead(String usage) { + public static String commandHead(String usage) { String trimmed = usage.trim(); if (trimmed.startsWith(CommandPrefix.STRING)) trimmed = trimmed.substring(1); int space = trimmed.indexOf(' '); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticAttachmentTransforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticAttachmentTransforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticAttachmentTransforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticAttachmentTransforms.java index 7da169c..e10996f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticAttachmentTransforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticAttachmentTransforms.java @@ -1,9 +1,11 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.animation; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticDisplay; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; public final class CosmeticAttachmentTransforms { private CosmeticAttachmentTransforms() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBbAnimation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticBbAnimation.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBbAnimation.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticBbAnimation.java index 8468df6..da823dc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBbAnimation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticBbAnimation.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.animation; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -10,6 +10,8 @@ import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.cosmetic.model.CosmeticBone; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; public final class CosmeticBbAnimation { private final String name; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticTextureSlot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticTextureSlot.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticTextureSlot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticTextureSlot.java index ef6d390..848d4e2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticTextureSlot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticTextureSlot.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.animation; import com.google.gson.JsonObject; import com.mojang.blaze3d.platform.NativeImage; @@ -23,7 +23,8 @@ public final class CosmeticTextureSlot { private boolean loaded; private JsonObject textureJson; - CosmeticTextureSlot(int index, Identifier id, int width, int height, String fileName) { + public CosmeticTextureSlot(int index, Identifier id, int width, int height, String fileName) { + this.index = index; this.id = id; this.width = Math.max(width, 1); @@ -51,11 +52,13 @@ public final class CosmeticTextureSlot { return loaded; } - void markLoaded() { + public void markLoaded() { + loaded = true; } - static CosmeticTextureSlot fromJson(int index, String modelKey, JsonObject texture) { + public static CosmeticTextureSlot fromJson(int index, String modelKey, JsonObject texture) { + int w = texture.has("width") ? texture.get("width").getAsInt() : 64; int h = texture.has("height") ? texture.get("height").getAsInt() : 64; String name = texture.has("name") ? texture.get("name").getAsString() : "tex" + index; @@ -68,7 +71,8 @@ public final class CosmeticTextureSlot { return slot; } - void reset() { + public void reset() { + loaded = false; } @@ -77,7 +81,8 @@ public final class CosmeticTextureSlot { * (file name, then outfits/<file>, then a generic texture.png fallback), or an * inline base64 "source" embedded in the .bbmodel JSON. */ - void load(Minecraft mc, File externalDir, String resourcePath) { + public void load(Minecraft mc, File externalDir, String resourcePath) { + if (loaded || mc == null || mc.getTextureManager() == null) return; try { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticType.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticType.java index 8c632de..01a8c18 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/animation/CosmeticType.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.animation; public enum CosmeticType { MODEL("model", "Модель"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticManager.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticManager.java index 1594ea1..1f8c2be 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticManager.java @@ -1,7 +1,10 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.manager; import java.util.EnumMap; import java.util.Map; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticRepository; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; /** * Holds which cosmetic the local user currently has equipped, per slot. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRenderer.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRenderer.java index 3e0fb33..6919da4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRenderer.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.manager; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; @@ -19,6 +19,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticAttachmentTransforms; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticTextureSlot; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticManager; +import dev.loki.lovisual.features.cosmetic.model.CosmeticBone; +import dev.loki.lovisual.features.cosmetic.model.CosmeticCube; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; /** * Renders a rest-pose (no bb-animation) {@link CosmeticModel} bone/cube tree attached to a diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRepository.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRepository.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRepository.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRepository.java index 454162d..5b981a0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticRepository.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/manager/CosmeticRepository.java @@ -1,6 +1,6 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.manager; -import dev.loki.lovisual.config.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigPaths; import java.io.File; import java.nio.file.Files; @@ -10,6 +10,9 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Stream; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticType; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; /** * Scans {@code config/lovisual/cosmetics/<type>/<name>} (and the flat root as a diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBone.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticBone.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBone.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticBone.java index 5a17efe..99866be 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticBone.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticBone.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.model; import lombok.Getter; import lombok.Setter; @@ -7,6 +7,7 @@ import org.joml.Vector3f; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.features.cosmetic.model.CosmeticCube; @Getter public class CosmeticBone { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticCube.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticCube.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticCube.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticCube.java index ca1a35c..ba94d3b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticCube.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticCube.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.model; import lombok.Getter; import org.joml.Vector3f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticModel.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticModel.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticModel.java index 52992bc..dfd4724 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticModel.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.model; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -27,6 +27,12 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticBbAnimation; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticTextureSlot; +import dev.loki.lovisual.features.cosmetic.animation.CosmeticType; +import dev.loki.lovisual.features.cosmetic.model.CosmeticBone; +import dev.loki.lovisual.features.cosmetic.model.CosmeticCube; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; /** * A single cosmetic asset: a Blockbench (.bbmodel) bone/cube tree plus its texture(s), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticSlot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticSlot.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticSlot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticSlot.java index 9d2333b..86287c2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/CosmeticSlot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/cosmetic/model/CosmeticSlot.java @@ -1,4 +1,4 @@ -package dev.loki.lovisual.features.cosmetic; +package dev.loki.lovisual.features.cosmetic.model; /** * Where a cosmetic is worn. MODEL/PET are whole-body/companion slots (one active diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/BetterChatViewport.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/BetterChatViewport.java index 6a17baa..f579ed1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/BetterChatViewport.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/BetterChatViewport.java @@ -191,4 +191,4 @@ public final class BetterChatViewport { BetterChatRenderer.ctxFixedInputY = fixedInputY; BetterChatRenderer.ctxFrameY = frameY; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatEditBoxUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatEditBoxUtil.java index b24602b..239bcd6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatEditBoxUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatEditBoxUtil.java @@ -50,4 +50,4 @@ public final class BetterChatEditBoxUtil { if (end <= start) return ""; return text.substring(start, end).replaceAll("[<>:\\[\\]]", ""); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputHandler.java index 5eca604..5e561b9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputHandler.java @@ -12,7 +12,6 @@ import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.ChatScreen; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.chat.input.BetterChatMouseClickHandler; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionState; @@ -162,4 +161,4 @@ public final class BetterChatInputHandler { BetterChatRenderer.chatHitX = BetterChatRenderer.chatHitY = BetterChatRenderer.chatHitW = BetterChatRenderer.chatHitH = 0f; BetterChatRenderer.lastMouseValid = false; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputRenderer.java index 2ee93ce..a3a24ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatInputRenderer.java @@ -6,10 +6,10 @@ */ package dev.loki.lovisual.features.gui.chat.input; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.EditBox; @@ -17,7 +17,6 @@ import net.minecraft.client.gui.screens.ChatScreen; import java.util.ArrayList; import java.util.List; import static dev.loki.lovisual.features.theme.Theme.theme; -import dev.loki.lovisual.features.gui.chat.input.BetterChatEditBoxUtil; import dev.loki.lovisual.features.gui.chat.messages.BetterChatSearch; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; @@ -199,4 +198,4 @@ public final class BetterChatInputRenderer { int iconColor = active || hasQuery ? theme().textPrimary() : BetterChatDrawUtil.withAlpha(theme().textPrimary(), hover ? 0xD8 : 0xB8); BetterChatFontUtil.drawText(icons, icon, x + (w - iconW) * 0.5f, y + (h - iconH) * 0.5f - h * 0.015f, iconSize, iconColor, false); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatMouseClickHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatMouseClickHandler.java index 7896257..b85dd12 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatMouseClickHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/input/BetterChatMouseClickHandler.java @@ -14,7 +14,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.util.Mth; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.chat.input.BetterChatInputHandler; import dev.loki.lovisual.features.gui.chat.menu.BetterChatContextMenuHandler; import dev.loki.lovisual.features.gui.chat.menu.BetterChatContextMenuModel; import dev.loki.lovisual.features.gui.chat.messages.BetterChatSearch; @@ -170,4 +169,4 @@ public final class BetterChatMouseClickHandler { } return false; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuHandler.java index 3861a2f..de6fe24 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuHandler.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ package dev.loki.lovisual.features.gui.chat.menu; -import dev.loki.lovisual.features.command.CommandManager; -import dev.loki.lovisual.features.command.CommandPrefix; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.util.CommandPrefix; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; import dev.loki.lovisual.util.screen.ClientScreen; -import dev.loki.lovisual.util.text.ChatNameUtil; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.ChatScreen; @@ -23,8 +23,6 @@ import net.minecraft.util.Util; import java.util.ArrayList; import java.util.List; import dev.loki.lovisual.features.gui.chat.input.BetterChatEditBoxUtil; -import dev.loki.lovisual.features.gui.chat.menu.BetterChatContextMenuModel; -import dev.loki.lovisual.features.gui.chat.menu.BetterChatTooltipRenderer; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; import dev.loki.lovisual.features.gui.chat.model.ChatLine; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; @@ -192,4 +190,4 @@ public final class BetterChatContextMenuHandler { return mc.player.connection.getOnlinePlayers().stream() .anyMatch(e -> e.getProfile() != null && nick.equalsIgnoreCase(e.getProfile().name())); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuModel.java index 31e222e..f111a39 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatContextMenuModel.java @@ -112,4 +112,4 @@ public final class BetterChatContextMenuModel { public record MenuEntry(String label, Runnable action) { } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatTooltipRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatTooltipRenderer.java index b482d64..26f82b7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatTooltipRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/menu/BetterChatTooltipRenderer.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.chat.menu; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterTooltips; -import dev.loki.lovisual.util.text.ChatNameUtil; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.inventory.tooltip.DefaultTooltipPositioner; @@ -165,4 +165,4 @@ public final class BetterChatTooltipRenderer { BetterChatRenderer.ctxHoverTip = hoverTip; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatMessageRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatMessageRenderer.java index 34ce0d7..74f1edc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatMessageRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatMessageRenderer.java @@ -6,13 +6,13 @@ */ package dev.loki.lovisual.features.gui.chat.messages; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ClipFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ClipFunction; import net.minecraft.util.Mth; import java.util.List; -import static dev.loki.lovisual.render.engine.text.TextGlyphFallback.isSvgFontKey; +import static dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback.isSvgFontKey; import static dev.loki.lovisual.features.theme.Theme.theme; import static dev.loki.lovisual.features.gui.chat.text.util.ChatHoverUtil.HoverTip; import dev.loki.lovisual.features.gui.chat.menu.BetterChatTooltipRenderer; @@ -197,4 +197,4 @@ public final class BetterChatMessageRenderer { static boolean isSvgGlyphKey(String fontKey) { return isSvgFontKey(fontKey); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatSearch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatSearch.java index 221a12c..329dc80 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatSearch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatSearch.java @@ -15,6 +15,7 @@ import java.util.concurrent.atomic.AtomicLong; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.features.gui.chat.model.BetterChatStore; import dev.loki.lovisual.features.gui.chat.model.ChatLine; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; /** * Minimal search state & async search runner for BetterChat, styled like ClickGuiSearch. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatTabHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatTabHandler.java index 60435f3..5cbe3b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatTabHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/messages/BetterChatTabHandler.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.gui.chat.messages; import com.mojang.brigadier.suggestion.Suggestion; -import dev.loki.lovisual.features.command.CommandManager; -import dev.loki.lovisual.features.command.CommandPrefix; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.util.CommandPrefix; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatModel.java index e5edd84..d2db1d2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatModel.java @@ -12,7 +12,6 @@ import net.minecraft.network.chat.Style; import java.util.List; import dev.loki.lovisual.features.gui.chat.menu.BetterChatContextMenuModel; -import dev.loki.lovisual.features.gui.chat.model.ChatLine; import dev.loki.lovisual.features.gui.chat.render.BetterChatFrameModel; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; @@ -86,4 +85,4 @@ public final class BetterChatModel { public record LayoutResult(List lines, int messagesSeen) { } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStore.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStore.java index b3a0ff6..f7f7fea 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStore.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStore.java @@ -12,7 +12,6 @@ import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import java.util.ArrayList; import java.util.List; -import dev.loki.lovisual.features.gui.chat.model.ChatLine; public final class BetterChatStore { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStoreManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStoreManager.java index 4d5e6df..37e4baa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStoreManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/model/BetterChatStoreManager.java @@ -18,11 +18,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.Style; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigPaths; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.util.text.LegacyTextUtil; -import dev.loki.lovisual.util.text.TextJsonUtil; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.TextJsonUtil; import java.io.File; import java.io.FileReader; @@ -30,8 +30,6 @@ import java.io.FileWriter; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.CompletableFuture; -import dev.loki.lovisual.features.gui.chat.model.BetterChatStore; -import dev.loki.lovisual.features.gui.chat.model.ChatLine; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.text.util.BetterChatHoverCache; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameModel.java index be51203..9ef634d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameModel.java @@ -13,7 +13,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; -import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; /** * Frame layout record: builds screen-space line/bubble geometry from laid-out visual lines. @@ -128,4 +127,4 @@ public final class BetterChatFrameModel { return null; } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameRenderer.java index da1015b..e147bae 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatFrameRenderer.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.gui.chat.render; 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.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import net.minecraft.client.gui.GuiGraphicsExtractor; import dev.loki.lovisual.features.gui.chat.BetterChatViewport; import dev.loki.lovisual.features.gui.chat.input.BetterChatInputHandler; @@ -18,7 +18,6 @@ import dev.loki.lovisual.features.gui.chat.menu.BetterChatTooltipRenderer; import dev.loki.lovisual.features.gui.chat.messages.BetterChatMessageRenderer; import dev.loki.lovisual.features.gui.chat.messages.BetterChatSearch; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; -import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionRenderer; import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionState; import dev.loki.lovisual.features.gui.chat.text.BetterChatLayoutEngine; @@ -91,4 +90,4 @@ public final class BetterChatFrameRenderer { BetterChatRenderer.contextMenu.render((float) BetterChatRenderer.lastMouseFx, (float) BetterChatRenderer.lastMouseFy, BetterChatRenderer.lastFontSizeForUi); } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatRenderer.java index 3440cd8..65f2d11 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/render/BetterChatRenderer.java @@ -8,11 +8,11 @@ package dev.loki.lovisual.features.gui.chat.render; import com.mojang.brigadier.suggestion.Suggestion; -import dev.loki.lovisual.features.command.CommandOutput; +import dev.loki.lovisual.features.command.util.CommandOutput; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.render.engine.color.RenderColor; 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 net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.ChatScreen; @@ -23,7 +23,7 @@ import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.util.text.edit.TextSelection; import dev.loki.lovisual.features.gui.chat.input.BetterChatInputHandler; import dev.loki.lovisual.features.gui.chat.input.BetterChatMouseClickHandler; import dev.loki.lovisual.features.gui.chat.menu.BetterChatContextMenuHandler; @@ -32,8 +32,6 @@ import dev.loki.lovisual.features.gui.chat.menu.BetterChatTooltipRenderer; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; import dev.loki.lovisual.features.gui.chat.model.BetterChatStore; import dev.loki.lovisual.features.gui.chat.model.ChatLine; -import dev.loki.lovisual.features.gui.chat.render.BetterChatFrameModel; -import dev.loki.lovisual.features.gui.chat.render.BetterChatFrameRenderer; import dev.loki.lovisual.features.gui.chat.suggestions.CommandSuggestorBridge; import dev.loki.lovisual.features.gui.chat.text.BetterChatLayoutEngine; import dev.loki.lovisual.features.gui.chat.text.util.ChatHoverUtil; @@ -221,4 +219,4 @@ public enum BetterChatRenderer { public record Layout(float x, float y) { } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatCommandMerge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatCommandMerge.java index 27e04d2..e6b4302 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatCommandMerge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatCommandMerge.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.chat.suggestions; -import dev.loki.lovisual.features.command.CommandOutput; +import dev.loki.lovisual.features.command.util.CommandOutput; import java.util.ArrayList; import java.util.Comparator; @@ -52,4 +52,4 @@ public final class BetterChatCommandMerge { } BetterChatRenderer.COMMAND_LINE_CACHE.keySet().removeIf(line -> !live.containsKey(line)); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionRenderer.java index 3d2781a..55799f5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionRenderer.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ package dev.loki.lovisual.features.gui.chat.suggestions; -import dev.loki.lovisual.features.command.CommandPrefix; +import dev.loki.lovisual.features.command.util.CommandPrefix; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.EditBox; import net.minecraft.util.Mth; @@ -15,8 +15,6 @@ import java.util.List; import static dev.loki.lovisual.features.theme.Theme.theme; import dev.loki.lovisual.features.gui.chat.input.BetterChatEditBoxUtil; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionState; -import dev.loki.lovisual.features.gui.chat.suggestions.CommandSuggestorBridge; import dev.loki.lovisual.features.gui.chat.text.util.BetterChatDrawUtil; import dev.loki.lovisual.features.gui.chat.text.util.BetterChatFontUtil; /** @@ -196,4 +194,4 @@ public final class BetterChatSuggestionRenderer { } private record ScreenRect(float x, float y, float w, float h) { } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionState.java index 48b7ecc..ef735a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/BetterChatSuggestionState.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.chat.suggestions; -import dev.loki.lovisual.features.command.CommandManager; -import dev.loki.lovisual.features.command.CommandPrefix; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.util.CommandPrefix; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; import dev.loki.lovisual.mixins.accessors.chat.SuggestionWindowAccessor; import dev.loki.lovisual.util.screen.ClientScreen; @@ -27,8 +27,6 @@ import static org.lwjgl.glfw.GLFW.glfwGetKey; import dev.loki.lovisual.features.gui.chat.input.BetterChatEditBoxUtil; import dev.loki.lovisual.features.gui.chat.messages.BetterChatSearch; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionRenderer; -import dev.loki.lovisual.features.gui.chat.suggestions.CommandSuggestorBridge; /** * Autocomplete suggestion window state: hotkey, snapshot capture, window dragging and hit-test. @@ -189,4 +187,4 @@ public final class BetterChatSuggestionState { BetterChatSearch.setActive(true); } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/CommandSuggestorBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/CommandSuggestorBridge.java index b3582e9..f4aad55 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/CommandSuggestorBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/suggestions/CommandSuggestorBridge.java @@ -26,6 +26,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; +import dev.loki.lovisual.features.command.core.CommandContext; /** * Reflection helpers for vanilla ChatInputSuggestor; lets us draw suggestions in custom style. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatGlyphRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatGlyphRenderer.java index 4678a92..b7ebfd2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatGlyphRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatGlyphRenderer.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.chat.text; -import dev.loki.lovisual.features.command.CommandOutput; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.features.command.util.CommandOutput; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.network.chat.Component; @@ -163,4 +163,4 @@ public final class BetterChatGlyphRenderer { private static int mixBreath(int rgb, float breath) { return CommandOutput.mixRgb(rgb, 0xFFFFFF, 0.06f * breath); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLayoutEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLayoutEngine.java index 4f85067..d71119f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLayoutEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLayoutEngine.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ package dev.loki.lovisual.features.gui.chat.text; -import dev.loki.lovisual.features.command.CommandOutput; +import dev.loki.lovisual.features.command.util.CommandOutput; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterTooltips; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -27,7 +27,6 @@ import dev.loki.lovisual.features.gui.chat.model.ChatLine; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatCommandMerge; import dev.loki.lovisual.features.gui.chat.suggestions.BetterChatSuggestionState; -import dev.loki.lovisual.features.gui.chat.text.BetterChatLineLayout; import dev.loki.lovisual.features.gui.chat.text.util.BetterChatFontUtil; public final class BetterChatLayoutEngine { private BetterChatLayoutEngine() { @@ -205,4 +204,4 @@ public final class BetterChatLayoutEngine { BetterChatRenderer.hasInputBox = false; return true; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLineLayout.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLineLayout.java index 4e7b937..abd8c45 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLineLayout.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatLineLayout.java @@ -13,14 +13,13 @@ import net.minecraft.network.chat.Style; import java.util.ArrayList; import java.util.List; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.theme.Theme.theme; import dev.loki.lovisual.features.gui.chat.model.BetterChatModel; import dev.loki.lovisual.features.gui.chat.model.ChatLine; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.chat.text.BetterChatSegmentUtil; import dev.loki.lovisual.features.gui.chat.text.util.BetterChatFontUtil; /** @@ -182,4 +181,4 @@ public final class BetterChatLineLayout { BetterChatRenderer.MESSAGE_LAYOUT_CACHE.put(msg, new BetterChatModel.CachedMessageLayout(fontSize, maxWidth, rebuilt)); return rebuilt; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatSegmentUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatSegmentUtil.java index 9fb787c..f22a10d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatSegmentUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/BetterChatSegmentUtil.java @@ -12,8 +12,8 @@ import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.Style; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import java.util.ArrayList; import java.util.List; @@ -72,4 +72,4 @@ public final class BetterChatSegmentUtil { } return color; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatDrawUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatDrawUtil.java index 89fb2dc..60b89cd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatDrawUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatDrawUtil.java @@ -8,10 +8,10 @@ package dev.loki.lovisual.features.gui.chat.text.util; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import net.minecraft.util.Mth; import static dev.loki.lovisual.features.theme.Theme.theme; @@ -199,4 +199,4 @@ public final class BetterChatDrawUtil { BetterChatRenderer.scrollOffsetLines = Mth.clamp(BetterChatRenderer.sbTotalLines - BetterChatRenderer.sbVisibleLines - targetStart, 0, scrollable); BetterChatRenderer.lastScrollInteractionMs = System.currentTimeMillis(); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatFontUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatFontUtil.java index d33d790..36360ae 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatFontUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatFontUtil.java @@ -7,15 +7,15 @@ package dev.loki.lovisual.features.gui.chat.text.util; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.text.VanillaTextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.VanillaTextRenderer; import net.minecraft.network.chat.Style; import net.minecraft.util.Mth; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.chat.text.util.BetterChatDrawUtil; +import dev.loki.lovisual.render.engine.text.font.Font; /** * Font resolution, glyph sizing and plain-text draw helpers for the chat renderer. @@ -148,7 +148,7 @@ public final class BetterChatFontUtil { String svgName = TextGlyphFallback.vanillaSvgName(cp); if (BetterChatRenderer.renderer != null && svgName != null) { BetterChatRenderer.renderer.svg(svgName, cursorX, svgY, svgSize, svgSize, - dev.loki.lovisual.render.engine.svg.SvgRenderOptions.fromFile().withAlpha(((argb >>> 24) & 0xFF) / 255.0f)); + dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions.fromFile().withAlpha(((argb >>> 24) & 0xFF) / 255.0f)); } cursorX += svgSize; i += Character.charCount(cp); @@ -197,4 +197,4 @@ public final class BetterChatFontUtil { static int clampIndex(int idx, int len) { return Mth.clamp(idx, 0, Math.max(0, len)); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatHoverCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatHoverCache.java index a80e086..d8bc587 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatHoverCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/BetterChatHoverCache.java @@ -18,7 +18,7 @@ import net.minecraft.network.chat.HoverEvent; import net.minecraft.resources.Identifier; import net.minecraft.resources.RegistryOps; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigPaths; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/ChatHoverUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/ChatHoverUtil.java index b65eab3..15abe3c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/ChatHoverUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/chat/text/util/ChatHoverUtil.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.chat.text.util; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.resources.language.I18n; @@ -17,8 +17,8 @@ import net.minecraft.network.chat.HoverEvent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorUtil; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayList; @@ -27,7 +27,6 @@ import java.util.List; import java.util.Set; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.features.gui.chat.model.BetterChatStoreManager; -import dev.loki.lovisual.features.gui.chat.text.util.BetterChatHoverCache; /** * Hover payload helpers + cache fallbacks. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiModel.java index 14a9e05..965e1fc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiModel.java @@ -1,26 +1,37 @@ package dev.loki.lovisual.features.gui.clickgui; import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.world.item.ItemStack; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.ClickGuiTabEntry; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.PickerIcon; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextBatchItem; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextBatchKey; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextHeightKey; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextMeasureKey; -record ClickGuiTabEntry(String id, String label, ClickGuiSection section) { -} +public final class ClickGuiModel { -record TextBatchItem(TextRenderer renderer, String text, float x, float y, float size, int argb, + private ClickGuiModel() { + } + + public record ClickGuiTabEntry(String id, String label, ClickGuiSection section) { + } + + public record TextBatchItem(TextRenderer renderer, String text, float x, float y, float size, int argb, boolean shadow) { -} + } -record TextBatchKey(TextRenderer renderer, int sizeBits, boolean shadow) { -} + public record TextBatchKey(TextRenderer renderer, int sizeBits, boolean shadow) { + } -record TextMeasureKey(TextRenderer renderer, int sizeBits, String text) { -} + public record TextMeasureKey(TextRenderer renderer, int sizeBits, String text) { + } -record TextHeightKey(TextRenderer renderer, int sizeBits) { -} + public record TextHeightKey(TextRenderer renderer, int sizeBits) { + } -record PickerIcon(ItemStack stack, + public record PickerIcon(ItemStack stack, float x, float y, float scale, @@ -34,4 +45,5 @@ record PickerIcon(ItemStack stack, float clipY, float clipW, float clipH) { + } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorManager.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorManager.java index 92c226b..dcd2917 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorManager.java @@ -1,19 +1,22 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.editor; import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiTextEditorState; import dev.loki.lovisual.features.gui.clickgui.picker.ClickGuiPickerState; import dev.loki.lovisual.features.gui.clickgui.protocol.CombatProtocolHeuristicsEditorState; import dev.loki.lovisual.features.gui.clickgui.settings.owner.TextEditorOwner; import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; public final class ClickGuiEditorManager { private ClickGuiEditorManager() { } - static void openTextEditor(TextEditorOwner owner, String title, String seedText, float anchorX, float anchorY, float anchorW) { + public static void openTextEditor(TextEditorOwner owner, String title, String seedText, float anchorX, float anchorY, float anchorW) { + if (owner == null) return; clearInlineText(); if (seedText == null) seedText = ""; @@ -21,23 +24,27 @@ public final class ClickGuiEditorManager { ClickGuiRenderer.textEditor = new ClickGuiTextEditorState(owner, title, seedText, anchorX, anchorY, anchorW); } - static void closeTextEditor(boolean save) { + public static void closeTextEditor(boolean save) { + if (ClickGuiRenderer.textEditor == null) return; if (save) ClickGuiRenderer.textEditor.save(); ClickGuiRenderer.textEditor = null; } - static void renderTextEditor(int fbw, int fbh) { + public static void renderTextEditor(int fbw, int fbh) { + if (ClickGuiRenderer.textEditor == null) return; ClickGuiRenderer.textEditor.render(fbw, fbh); } - static void renderPicker(int fbw, int fbh) { + public static void renderPicker(int fbw, int fbh) { + if (ClickGuiRenderer.picker == null) return; ClickGuiRenderer.picker.render(fbw, fbh); } - static void toggleInlineText(TextSetting owner) { + public static void toggleInlineText(TextSetting owner) { + if (owner == null) return; if (ClickGuiRenderer.inlineTextOwner == owner) { clearInlineText(); @@ -48,15 +55,18 @@ public final class ClickGuiEditorManager { ClickGuiSearch.deactivate(); } - static boolean isInlineTextActive() { + public static boolean isInlineTextActive() { + return ClickGuiRenderer.inlineTextOwner != null; } - static boolean isInlineTextOwner(TextSetting owner) { + public static boolean isInlineTextOwner(TextSetting owner) { + return ClickGuiRenderer.inlineTextOwner == owner; } - static String getInlineText(TextSetting owner) { + public static String getInlineText(TextSetting owner) { + if (owner == null) return ""; if (ClickGuiRenderer.inlineTextOwner == owner && ClickGuiRenderer.inlineTextBuffer != null) { return ClickGuiRenderer.inlineTextBuffer.toString(); @@ -64,7 +74,8 @@ public final class ClickGuiEditorManager { return owner.getEditorText(); } - static void updateInlineTextBounds(TextSetting owner, float x, float y, float w, float h) { + public static void updateInlineTextBounds(TextSetting owner, float x, float y, float w, float h) { + if (ClickGuiRenderer.inlineTextOwner != owner) return; ClickGuiRenderer.inlineTextX = x; ClickGuiRenderer.inlineTextY = y; @@ -72,7 +83,8 @@ public final class ClickGuiEditorManager { ClickGuiRenderer.inlineTextH = h; } - static void finishInlineText(boolean save) { + public static void finishInlineText(boolean save) { + if (ClickGuiRenderer.inlineTextOwner == null || ClickGuiRenderer.inlineTextBuffer == null) { clearInlineText(); return; @@ -83,20 +95,23 @@ public final class ClickGuiEditorManager { clearInlineText(); } - static void clearInlineText() { + public static void clearInlineText() { + ClickGuiRenderer.inlineTextOwner = null; ClickGuiRenderer.inlineTextBuffer = null; ClickGuiRenderer.inlineTextX = ClickGuiRenderer.inlineTextY = ClickGuiRenderer.inlineTextW = ClickGuiRenderer.inlineTextH = 0f; } - static void inlineBackspace() { + public static void inlineBackspace() { + if (ClickGuiRenderer.inlineTextBuffer == null) return; int len = ClickGuiRenderer.inlineTextBuffer.length(); if (len <= 0) return; ClickGuiRenderer.inlineTextBuffer.deleteCharAt(len - 1); } - static void inlinePaste() { + public static void inlinePaste() { + if (ClickGuiRenderer.inlineTextBuffer == null) return; String clip = ClipboardUtil.get(); if (clip == null || clip.isEmpty()) return; @@ -109,15 +124,18 @@ public final class ClickGuiEditorManager { return normalized.replace('\n', ' '); } - static boolean isTextEditorActive() { + public static boolean isTextEditorActive() { + return ClickGuiRenderer.textEditor != null; } - static boolean isPickerActive() { + public static boolean isPickerActive() { + return ClickGuiRenderer.picker != null || ClickGuiRenderer.protocolHeuristicsEditor != null; } - static boolean isBlockingModuleKeybinds() { + public static boolean isBlockingModuleKeybinds() { + if (!ModuleManager.isEnabled("clickgui")) return false; if (ClickGuiRenderer.waitingForKey) return true; if (ClickGuiRenderer.textEditor != null) return true; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorScreen.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorScreen.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorScreen.java index 1d82a5d..1a75241 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiEditorScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiEditorScreen.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.editor; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.network.chat.Component; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.module.modules.misc.ClickGui; public final class ClickGuiEditorScreen extends Screen { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiTextEditorState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiTextEditorState.java index f353a36..3a1e28e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiTextEditorState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/editor/ClickGuiTextEditorState.java @@ -10,13 +10,13 @@ package dev.loki.lovisual.features.gui.clickgui.editor; import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; -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.owner.TextEditorOwner; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.util.text.ClipboardUtil; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import dev.loki.lovisual.util.text.edit.TextSelection; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiFonts.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/font/ClickGuiFonts.java similarity index 66% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiFonts.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/font/ClickGuiFonts.java index 1b1770b..f7bc649 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiFonts.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/font/ClickGuiFonts.java @@ -1,52 +1,60 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.font; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; public final class ClickGuiFonts { private ClickGuiFonts() { } - static TextRenderer getInterRegular() { + public static TextRenderer getInterRegular() { + if (ClickGuiRenderer.interRegular == null) { ClickGuiRenderer.interRegular = Fonts.renderer("Inter", FontInfo.Type.Regular, TextRenderer.get()); } return ClickGuiRenderer.interRegular; } - static Renderer2D currentRenderer() { + public static Renderer2D currentRenderer() { + return ClickGuiRenderer.renderer; } - static TextRenderer getInterMedium() { + public static TextRenderer getInterMedium() { + if (ClickGuiRenderer.interMedium == null) { ClickGuiRenderer.interMedium = Fonts.renderer("InterMedium", FontInfo.Type.Regular, getInterRegular()); } return ClickGuiRenderer.interMedium; } - static TextRenderer getIosevkaRegular() { + public static TextRenderer getIosevkaRegular() { + return getSfMedium(); } - static TextRenderer getSfMedium() { + public static TextRenderer getSfMedium() { + if (ClickGuiRenderer.onestMedium == null) { ClickGuiRenderer.onestMedium = Fonts.renderer("OnestMedium", FontInfo.Type.Regular, TextRenderer.get()); } return ClickGuiRenderer.onestMedium; } - static TextRenderer getSfProDisplaySemibold() { + public static TextRenderer getSfProDisplaySemibold() { + if (ClickGuiRenderer.onestBold == null) { ClickGuiRenderer.onestBold = Fonts.renderer("OnestBold", FontInfo.Type.Regular, getInterMedium()); } return ClickGuiRenderer.onestBold; } - static TextRenderer getMonsterratRegular() { + public static TextRenderer getMonsterratRegular() { + if (ClickGuiRenderer.monsterratRegular == null) { ClickGuiRenderer.monsterratRegular = Fonts.renderer("Monsterrat", FontInfo.Type.Regular, TextRenderer.get()); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiInputHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiInputHandler.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiInputHandler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiInputHandler.java index 2550257..83a46a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiInputHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiInputHandler.java @@ -1,16 +1,22 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.input; import dev.loki.lovisual.features.gui.clickgui.sections.settings.SettingsTabRuntime; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import net.minecraft.client.Minecraft; +import dev.loki.lovisual.features.gui.clickgui.input.ClickGuiKeyBindManager; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiLifecycle; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabBar; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; public final class ClickGuiInputHandler { private ClickGuiInputHandler() { } - static void onMouseMove(double x, double y) { + public static void onMouseMove(double x, double y) { + updateMouse(x, y, false); if (ClickGuiRenderer.picker != null) { ClickGuiRenderer.picker.handleMouseMove(ClickGuiRenderer.mouseX, ClickGuiRenderer.mouseY); @@ -23,17 +29,20 @@ public final class ClickGuiInputHandler { } } - static void onMouseButton(double x, double y, int button, boolean pressed) { + public static void onMouseButton(double x, double y, int button, boolean pressed) { + updateMouse(x, y, false); handleMouseButton(button, pressed); } - static void onMouseScroll(double x, double y, double delta) { + public static void onMouseScroll(double x, double y, double delta) { + updateMouse(x, y, false); handleMouseScroll(delta); } - static void onMouseMoveScaled(double x, double y) { + public static void onMouseMoveScaled(double x, double y) { + updateMouse(x, y, true); if (ClickGuiRenderer.picker != null) { ClickGuiRenderer.picker.handleMouseMove(ClickGuiRenderer.mouseX, ClickGuiRenderer.mouseY); @@ -46,21 +55,25 @@ public final class ClickGuiInputHandler { } } - static void onMouseButtonScaled(double x, double y, int button, boolean pressed) { + public static void onMouseButtonScaled(double x, double y, int button, boolean pressed) { + updateMouse(x, y, true); handleMouseButton(button, pressed); } - static void onMouseScrollScaled(double x, double y, double delta) { + public static void onMouseScrollScaled(double x, double y, double delta) { + updateMouse(x, y, true); handleMouseScroll(delta); } - static void onEditorMouseMoveScaled(double x, double y) { + public static void onEditorMouseMoveScaled(double x, double y) { + updateMouse(x, y, true); } - static void onEditorMouseButtonScaled(double x, double y, int button, boolean pressed) { + public static void onEditorMouseButtonScaled(double x, double y, int button, boolean pressed) { + updateMouse(x, y, true); if (ClickGuiRenderer.waitingForKey) { if (pressed) { @@ -83,7 +96,8 @@ public final class ClickGuiInputHandler { } } - static void onEditorMouseScrollScaled(double x, double y, double delta) { + public static void onEditorMouseScrollScaled(double x, double y, double delta) { + updateMouse(x, y, true); if (delta != 0.0) { ClickGuiSounds.scroll(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyBindManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyBindManager.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyBindManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyBindManager.java index 0d5b2f3..e1ad446 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyBindManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyBindManager.java @@ -1,13 +1,16 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.input; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.util.input.KeyUtil; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import org.lwjgl.glfw.GLFW; import java.util.LinkedHashSet; import java.util.Set; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; public final class ClickGuiKeyBindManager { @@ -20,7 +23,8 @@ public final class ClickGuiKeyBindManager { // which commits once every held key in it has been released. private static final Set heldKeys = new LinkedHashSet<>(); - static void beginKeyBind(Object owner) { + public static void beginKeyBind(Object owner) { + ClickGuiEditorManager.clearInlineText(); ClickGuiRenderer.waitingForKey = true; ClickGuiRenderer.keyBindOwner = owner; @@ -30,7 +34,8 @@ public final class ClickGuiKeyBindManager { ClickGuiSounds.bindingStart(); } - static void finishKeyBind() { + public static void finishKeyBind() { + ClickGuiRenderer.waitingForKey = false; ClickGuiRenderer.keyBindOwner = null; ClickGuiRenderer.pendingBindKeys.clear(); @@ -97,7 +102,8 @@ public final class ClickGuiKeyBindManager { } } - static String getPendingBindDisplay() { + public static String getPendingBindDisplay() { + if (!ClickGuiRenderer.waitingForKey) return null; return ClickGuiRenderer.pendingBindKeys.isEmpty() ? "..." : KeyUtil.comboToString(ClickGuiRenderer.pendingBindKeys); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyboardHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyboardHandler.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyboardHandler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyboardHandler.java index c742b8c..c3a8dc9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiKeyboardHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/input/ClickGuiKeyboardHandler.java @@ -1,31 +1,40 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.input; import dev.loki.lovisual.features.gui.clickgui.sections.settings.SettingsTabRuntime; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import net.minecraft.util.StringUtil; import org.lwjgl.glfw.GLFW; import java.nio.file.Path; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.input.ClickGuiKeyBindManager; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreenManager; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; public final class ClickGuiKeyboardHandler { private ClickGuiKeyboardHandler() { } - static boolean onEditorCharTyped(char c) { + public static boolean onEditorCharTyped(char c) { + return onCharTyped(c); } - static boolean onEditorKey(int key, int scancode, int action, int mods) { + public static boolean onEditorKey(int key, int scancode, int action, int mods) { + return onKey(key, scancode, action, mods); } - static void closeGuiEditor() { + public static void closeGuiEditor() { + SettingsTabRuntime.closeGuiEditor(); } - static boolean onCharTyped(char c) { + public static boolean onCharTyped(char c) { + if (!ModuleManager.isEnabled("clickgui")) return false; if (ClickGuiRenderer.textEditor != null) { ClickGuiRenderer.textEditor.insertChar(c); @@ -51,13 +60,15 @@ public final class ClickGuiKeyboardHandler { return ClickGuiTabState.getActiveSection().charTyped(c, 0); } - static boolean onFilesDrop(List paths) { + public static boolean onFilesDrop(List paths) { + if (!ModuleManager.isEnabled("clickgui")) return false; if (ClickGuiRenderer.textEditor != null || ClickGuiRenderer.picker != null || ClickGuiRenderer.protocolHeuristicsEditor != null) return false; return ClickGuiTabState.getActiveSection().onFilesDrop(paths); } - static boolean onKey(int key, int scancode, int action, int mods) { + public static boolean onKey(int key, int scancode, int action, int mods) { + if (!ModuleManager.isEnabled("clickgui")) return false; if (ClickGuiRenderer.textEditor != null) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuPanel.java index 17a0698..4f363f1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuPanel.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules; import org.lwjgl.glfw.GLFW; -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.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderContext; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderSurface; @@ -18,6 +18,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model.ModulesMenuCategory; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuResolver; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuScreen; public final class ModulesMenuPanel { final ModulesMenuCategory category; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuResolver.java index dfb065e..327df72 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuResolver.java @@ -7,15 +7,16 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module.ModuleComponent; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; -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.Comparator; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model.ModulesMenuCategory; public enum ModulesMenuResolver { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuScreen.java index a2002ef..c4fd209 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuScreen.java @@ -7,12 +7,12 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module.ModuleComponent; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; @@ -22,18 +22,23 @@ import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiHintOverlay; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ClipFunction; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ClipFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayList; import java.util.List; import dev.loki.lovisual.features.gui.hud.draggable.impl.panels.ModuleList; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model.ModulesMenuCategory; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuPanel; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuResolver; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model.ModulesMenuStyle; +import dev.loki.lovisual.features.module.modules.misc.ClickGui; public final class ModulesMenuScreen { private static final float INPUT_READY_PROGRESS = 0.72f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuCategory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuCategory.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuCategory.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuCategory.java index e551598..de9d6f0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuCategory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuCategory.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules; +package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model; -import dev.loki.lovisual.features.module.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleCategory; import java.util.Arrays; import java.util.List; @@ -37,7 +37,7 @@ public enum ModulesMenuCategory { return icon; } - boolean matches(ModuleCategory category) { + public boolean matches(ModuleCategory category) { if (category == null) return this == OTHER; String name = category.name().toLowerCase(Locale.ROOT); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuStyle.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuStyle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuStyle.java index 5803bf1..73ff8b9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/ModulesMenuStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/modules/model/ModulesMenuStyle.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules; +package dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; @@ -14,8 +14,8 @@ import dev.loki.lovisual.render.engine.animation.AnimationUtility; public enum ModulesMenuStyle { ; - static final int MODULE_LIST_ON = 0xFF5DE878; - static final int MODULE_LIST_OFF = 0xFFFF5E66; + public static final int MODULE_LIST_ON = 0xFF5DE878; + public static final int MODULE_LIST_OFF = 0xFFFF5E66; private static int text = 0xFFFFFFFF; private static int textMuted = 0xBFFFFFFF; @@ -27,7 +27,7 @@ public enum ModulesMenuStyle { private static int rowHoverGlow = 0x4DFFFFFF; private static int shadow = 0x42000000; - static void syncTheme() { + public static void syncTheme() { Themes.Theme theme = Theme.theme(); if (theme == null) return; @@ -49,75 +49,75 @@ public enum ModulesMenuStyle { shadow = withAlpha(0xFF000000, 72); } - static int text() { + public static int text() { return text; } - static int textMuted() { + public static int textMuted() { return textMuted; } - static int textFaint() { + public static int textFaint() { return textFaint; } - static int panelBgGlassDark() { + public static int panelBgGlassDark() { return panelBgGlassDark; } - static int panelStroke() { + public static int panelStroke() { return panelStroke; } - static int split() { + public static int split() { return split; } - static int rowHover() { + public static int rowHover() { return rowHover; } - static int rowHoverGlow(float alpha) { + public static int rowHoverGlow(float alpha) { return withAlpha(rowHoverGlow, alpha); } - static int shadow() { + public static int shadow() { return shadow; } - static int scrollTrackA(float alpha) { + public static int scrollTrackA(float alpha) { return withAlpha(SettingsGuiPalette.current().moduleScrollTrackA(), alpha); } - static int scrollTrackB(float alpha) { + public static int scrollTrackB(float alpha) { return withAlpha(SettingsGuiPalette.current().moduleScrollTrackB(), alpha); } - static int scrollHandleA(float alpha) { + public static int scrollHandleA(float alpha) { return withAlpha(SettingsGuiPalette.current().moduleScrollHandleA(), alpha); } - static int scrollHandleB(float alpha) { + public static int scrollHandleB(float alpha) { return withAlpha(SettingsGuiPalette.current().moduleScrollHandleB(), alpha); } - static int withAlpha(int color, float alpha) { + public static int withAlpha(int color, float alpha) { float a = AnimationUtility.clamp(alpha, 0.0f, 1.0f); int ca = (color >>> 24) & 0xFF; int na = Math.round(ca * a); return (color & 0x00FFFFFF) | ((na & 0xFF) << 24); } - static int withAlpha(int color, int alpha) { + public static int withAlpha(int color, int alpha) { int a = Math.max(0, Math.min(255, alpha)); return (color & 0x00FFFFFF) | (a << 24); } - static int forceAlpha(int color, int alpha) { + public static int forceAlpha(int color, int alpha) { return withAlpha(color, alpha); } - static int mix(int from, int to, float t) { + public static int mix(int from, int to, float t) { t = AnimationUtility.clamp(t, 0.0f, 1.0f); int a = Math.round(((from >>> 24) & 0xFF) * (1.0f - t) + ((to >>> 24) & 0xFF) * t); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuScreen.java index 8bb56b4..7d3d7b2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuScreen.java @@ -8,13 +8,13 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config.ConfigProfilesComponent; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.main.MainSettingsComponent; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module.ModuleComponent; @@ -30,13 +30,15 @@ import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiHintOverlay; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.theme.EditableClickGuiTheme; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuSettingsResolver; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; public final class MenuScreen { private static final float INPUT_READY_PROGRESS = 0.72f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolver.java index e47c092..d153009 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolver.java @@ -7,27 +7,29 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.SettingOwner; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.definition.SettingOwner; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module.ModuleComponent; 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.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.draggable.impl.BetterChat; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.DropESP; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorConfig; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorConfig; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.overlay.Watermark; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuScreen; public enum MenuSettingsResolver { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/category/CategoryComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/category/CategoryComponent.java index 00d80e8..651e5e4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/category/CategoryComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/category/CategoryComponent.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.category; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuScreen; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public final class CategoryComponent { private static final float PARALLAX_MAX_ANGLE = 5.5f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigDiffPanelComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigDiffPanelComponent.java index e2788b4..f52119c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigDiffPanelComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigDiffPanelComponent.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config; -import dev.loki.lovisual.config.profile.ConfigProfileDiff; -import dev.loki.lovisual.config.profile.ConfigProfileMeta; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.profile.diff.ConfigProfileDiff; +import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; public final class ConfigDiffPanelComponent { private float scroll; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfileCardComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfileCardComponent.java index b73978c..8381333 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfileCardComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfileCardComponent.java @@ -7,15 +7,15 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config; -import dev.loki.lovisual.config.profile.ConfigProfileDateFormatter; -import dev.loki.lovisual.config.profile.ConfigProfileMeta; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.profile.diff.ConfigProfileDateFormatter; +import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; public final class ConfigProfileCardComponent { public CardHit render(ConfigProfileMeta meta, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfilesComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfilesComponent.java index 3801e11..348746c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfilesComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/config/ConfigProfilesComponent.java @@ -7,10 +7,15 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config; -import dev.loki.lovisual.config.profile.*; +import dev.loki.lovisual.config.profile.codec.ConfigProfileType; +import dev.loki.lovisual.config.profile.diff.ConfigProfileDiff; +import dev.loki.lovisual.config.profile.service.ConfigProfileApplier; +import dev.loki.lovisual.config.profile.service.ConfigProfileService; +import dev.loki.lovisual.config.profile.service.ConfigProfileStorage; +import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config.ConfigProfileCardComponent.CardHit; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; @@ -18,9 +23,9 @@ import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.logging.DebugLog; import java.nio.file.Path; @@ -29,6 +34,9 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config.ConfigDiffPanelComponent; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.config.ConfigProfileCardComponent; +import dev.loki.lovisual.features.module.lifecycle.Modules; public final class ConfigProfilesComponent { private static final DateTimeFormatter GENERATED_NAME_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss"); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/main/MainSettingsComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/main/MainSettingsComponent.java index 3d0bbfd..066502a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/main/MainSettingsComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/main/MainSettingsComponent.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.main; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; @@ -20,8 +20,8 @@ import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderSurf import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import java.util.ArrayList; import java.util.EnumMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/ModuleComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/ModuleComponent.java index 8ba4cd8..dd09623 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/ModuleComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/ModuleComponent.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.other.StatusRender; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; @@ -16,16 +16,17 @@ import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.module.core.Module; public final class ModuleComponent { private static final float PARALLAX_MAX_ANGLE = 4.6f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/SettingsPanelComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/SettingsPanelComponent.java index a5a228e..fe7f0bf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/SettingsPanelComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/module/SettingsPanelComponent.java @@ -7,12 +7,12 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; @@ -25,8 +25,8 @@ import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/BackgroundComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/BackgroundComponent.java index 1eb07f3..938ec70 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/BackgroundComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/BackgroundComponent.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.other; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/SearchComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/SearchComponent.java index f26fff1..0c2c14d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/SearchComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/other/SearchComponent.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.other; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; public final class SearchComponent { public void render(float x, float y, float w, float h) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/OnlineRelationPlayerPickerComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/OnlineRelationPlayerPickerComponent.java index c8d6647..8a2cfa0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/OnlineRelationPlayerPickerComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/OnlineRelationPlayerPickerComponent.java @@ -8,26 +8,26 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations; import com.mojang.authlib.GameProfile; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiRichTextRenderer; import dev.loki.lovisual.features.module.modules.misc.DefineTarget; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.features.relations.PlayerRelations; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; -import dev.loki.lovisual.util.player.PlayerSkinResolver; -import dev.loki.lovisual.util.text.ChatNameUtil; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.multiplayer.PlayerInfo; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationPlayerCardComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationPlayerCardComponent.java index fe7dd59..15e810a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationPlayerCardComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationPlayerCardComponent.java @@ -8,16 +8,16 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations; import dev.loki.lovisual.features.account.SkinManager; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationsComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationsComponent.java index 05316c3..0ac9da8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationsComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/relations/RelationsComponent.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations.RelationPlayerCardComponent.CardHit; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; @@ -17,11 +17,11 @@ import dev.loki.lovisual.features.module.modules.misc.DefineTarget; import dev.loki.lovisual.features.relations.PlayerRelations; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; -import dev.loki.lovisual.util.text.ChatNameUtil; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import org.lwjgl.glfw.GLFW; @@ -29,6 +29,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Set; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations.OnlineRelationPlayerPickerComponent; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.relations.RelationPlayerCardComponent; public final class RelationsComponent { private static final long STATUS_DURATION_MS = 2200L; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeComponent.java index 5078500..2fd31b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeComponent.java @@ -8,17 +8,17 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.theme; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiMath; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; import java.util.ArrayList; import java.util.HashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeEditorPreviewComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeEditorPreviewComponent.java index 0109ac4..e0bd23f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeEditorPreviewComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/implement/theme/ThemeEditorPreviewComponent.java @@ -7,19 +7,19 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.theme; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.features.theme.EditableClickGuiTheme; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import net.minecraft.client.Minecraft; import java.util.Collections; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/render/LayoutRender2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/render/LayoutRender2D.java index 971c1f0..f06bccd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/render/LayoutRender2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/render/LayoutRender2D.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; public enum LayoutRender2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerIconManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerIconManager.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerIconManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerIconManager.java index 3f754a4..05965eb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerIconManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerIconManager.java @@ -1,18 +1,21 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.picker; -import dev.loki.lovisual.mixininterface.IGuiGraphics; +import dev.loki.lovisual.mixininterface.render.IGuiGraphics; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.PickerIcon; public final class ClickGuiPickerIconManager { private ClickGuiPickerIconManager() { } - static void processPickerIcons(GuiGraphicsExtractor ctx) { + public static void processPickerIcons(GuiGraphicsExtractor ctx) { + if (ClickGuiRenderer.pickerIcons.isEmpty()) { ClickGuiRenderer.pickerIconScissorActive = false; return; @@ -73,7 +76,8 @@ public final class ClickGuiPickerIconManager { ClickGuiRenderer.pickerIconScissorActive = false; } - static void beginPickerIconScissor(float x, float y, float w, float h) { + public static void beginPickerIconScissor(float x, float y, float w, float h) { + ClickGuiRenderer.pickerIconScissorActive = true; ClickGuiRenderer.pickerIconScissorX = x; ClickGuiRenderer.pickerIconScissorY = y; @@ -81,11 +85,13 @@ public final class ClickGuiPickerIconManager { ClickGuiRenderer.pickerIconScissorH = h; } - static void endPickerIconScissor() { + public static void endPickerIconScissor() { + ClickGuiRenderer.pickerIconScissorActive = false; } - static void queuePickerIcon(ItemStack stack, float x, float y, float scale) { + public static void queuePickerIcon(ItemStack stack, float x, float y, float scale) { + if (stack == null || stack.isEmpty()) return; ClickGuiRenderer.pickerIcons.add(new PickerIcon( stack, @@ -105,7 +111,8 @@ public final class ClickGuiPickerIconManager { )); } - static void queuePickerIcon(ItemStack stack, + public static void queuePickerIcon(ItemStack stack, + float x, float y, float scale, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerState.java index 01bf96c..3f1f1b7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/ClickGuiPickerState.java @@ -8,20 +8,28 @@ package dev.loki.lovisual.features.gui.clickgui.picker; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.render.engine.text.*; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.font.faces.FontFamily; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.glyph.CustomTextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.util.Util; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.render.LayoutRender2D; import dev.loki.lovisual.features.gui.clickgui.settings.owner.PickerDetailOwner; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import java.util.*; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerCatalog; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerCatalogFactory; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerEntryData; public final class ClickGuiPickerState { private static final float SCALE = 2f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalog.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalog.java similarity index 72% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalog.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalog.java index 74206d4..05984b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalog.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalog.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui.picker; +package dev.loki.lovisual.features.gui.clickgui.picker.catalog; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerEntryData; @FunctionalInterface public interface PickerCatalog { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalogFactory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalogFactory.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalogFactory.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalogFactory.java index d871b45..89d0e28 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerCatalogFactory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerCatalogFactory.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui.picker; +package dev.loki.lovisual.features.gui.clickgui.picker.catalog; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.component.DataComponents; @@ -19,11 +19,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.equipment.Equippable; import net.minecraft.world.level.block.Block; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.util.item.EnchantMeta; -import dev.loki.lovisual.util.item.EnchantRegistry; +import dev.loki.lovisual.util.item.enchant.EnchantMeta; +import dev.loki.lovisual.util.item.enchant.EnchantRegistry; import dev.loki.lovisual.util.screen.ScreenCatalog; import java.util.*; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerCatalog; +import dev.loki.lovisual.features.gui.clickgui.picker.catalog.PickerEntryData; public enum PickerCatalogFactory { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerEntryData.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerEntryData.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerEntryData.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerEntryData.java index aaaf47d..20fcf1b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/PickerEntryData.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/catalog/PickerEntryData.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui.picker; +package dev.loki.lovisual.features.gui.clickgui.picker.catalog; import net.minecraft.world.item.ItemStack; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/screen/ClickGuiPickerScreen.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerScreen.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/screen/ClickGuiPickerScreen.java index 3f531b8..f5f8cc0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiPickerScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/picker/screen/ClickGuiPickerScreen.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.picker.screen; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.network.chat.Component; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.module.modules.misc.ClickGui; public final class ClickGuiPickerScreen extends Screen { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/protocol/CombatProtocolHeuristicsEditorState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/protocol/CombatProtocolHeuristicsEditorState.java index 8ce092b..a2fee79 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/protocol/CombatProtocolHeuristicsEditorState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/protocol/CombatProtocolHeuristicsEditorState.java @@ -7,20 +7,20 @@ package dev.loki.lovisual.features.gui.clickgui.protocol; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.SettingsGuiPalette; import dev.loki.lovisual.features.gui.clickgui.settings.cooldown.ProtocolHeuristicsSetting; import dev.loki.lovisual.features.gui.clickgui.util.ClickGuiI18n; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; -import dev.loki.lovisual.util.combat.protocol.CombatProtocolHeuristicSource; -import dev.loki.lovisual.util.combat.protocol.CombatProtocolHeuristicsConfig; -import dev.loki.lovisual.util.text.ClipboardUtil; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristicSource; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristicsConfig; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import dev.loki.lovisual.util.text.edit.TextSelection; import org.lwjgl.glfw.GLFW; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiDrawHelpers.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiDrawHelpers.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiDrawHelpers.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiDrawHelpers.java index 76f1f09..00b9a17 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiDrawHelpers.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiDrawHelpers.java @@ -1,13 +1,15 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.render; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; public final class ClickGuiDrawHelpers { private ClickGuiDrawHelpers() { } - static int mixColor(int from, int to, float t) { + public static int mixColor(int from, int to, float t) { + t = Math.max(0f, Math.min(1f, t)); int a = (int) (((from >>> 24) & 0xFF) * (1 - t) + ((to >>> 24) & 0xFF) * t); int r = (int) (((from >>> 16) & 0xFF) * (1 - t) + ((to >>> 16) & 0xFF) * t); @@ -15,7 +17,8 @@ public final class ClickGuiDrawHelpers { int b = (int) (((from) & 0xFF) * (1 - t) + ((to) & 0xFF) * t); return (a << 24) | (r << 16) | (g << 8) | b; } - static int scaleAlpha(int color, float factor) { + public static int scaleAlpha(int color, float factor) { + int a = (color >>> 24) & 0xFF; int na = (int) (a * Math.max(0f, Math.min(1f, factor))); return (color & 0x00FFFFFF) | (na << 24); @@ -53,21 +56,24 @@ public final class ClickGuiDrawHelpers { if (((argb >>> 24) & 0xFF) <= 0) return; ClickGuiRenderer.renderer.roundedRectStroke(x, y, w, h, radius, 1.1f, thickness, argb); } - static void drawRoundedRectGlow(float x, float y, float w, float h, + public static void drawRoundedRectGlow(float x, float y, float w, float h, + float radius, float glow, int argb) { if (ClickGuiRenderer.renderer == null) return; argb = applyAlpha(argb); if (((argb >>> 24) & 0xFF) <= 0) return; ClickGuiRenderer.renderer.roundedRectGlow(x, y, w, h, radius, 1.1f, glow, argb); } - static void drawRoundedRectShadow(float x, float y, float w, float h, + public static void drawRoundedRectShadow(float x, float y, float w, float h, + float radius, float softness, float spread, int argb) { if (ClickGuiRenderer.renderer == null) return; argb = applyAlpha(argb); if (((argb >>> 24) & 0xFF) <= 0) return; ClickGuiRenderer.renderer.roundedRectShadow(x, y, w, h, radius, softness, spread, argb); } - static void drawRoundedRectGradient(float x, float y, float w, float h, float radius, + public static void drawRoundedRectGradient(float x, float y, float w, float h, float radius, + int startArgb, int endArgb, float angleDeg) { if (ClickGuiRenderer.renderer == null) return; startArgb = applyAlpha(startArgb); @@ -75,7 +81,8 @@ public final class ClickGuiDrawHelpers { if (((startArgb >>> 24) & 0xFF) <= 0 && ((endArgb >>> 24) & 0xFF) <= 0) return; ClickGuiRenderer.renderer.roundedRectGradient(x, y, w, h, radius, 1.1f, startArgb, endArgb, angleDeg); } - static void drawRoundedRectStrokeGradient(float x, float y, float w, float h, float radius, float thickness, + public static void drawRoundedRectStrokeGradient(float x, float y, float w, float h, float radius, float thickness, + int startArgb, int endArgb, float angleDeg) { if (ClickGuiRenderer.renderer == null) return; startArgb = applyAlpha(startArgb); @@ -91,7 +98,8 @@ public final class ClickGuiDrawHelpers { if (((argb >>> 24) & 0xFF) <= 0) return; ClickGuiRenderer.renderer.roundedRectCorners(x, y, w, h, radiusTL, radiusTR, radiusBR, radiusBL, 1.1f, argb); } - static void drawRect(float x, float y, float w, float h, int argb) { + public static void drawRect(float x, float y, float w, float h, int argb) { + if (ClickGuiRenderer.renderer == null) return; argb = applyAlpha(argb); if (((argb >>> 24) & 0xFF) <= 0) return; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderEngine.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderEngine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderEngine.java index e9a0a87..71efc26 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderEngine.java @@ -1,24 +1,32 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.render; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; -import dev.loki.lovisual.render.engine.profiler.TracyGpuProfiler; +import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase; +import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler2D; +import dev.loki.lovisual.render.engine.profiler.bridge.TracyGpuProfiler; 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.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import org.lwjgl.glfw.GLFW; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiLifecycle; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabBar; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; public final class ClickGuiRenderEngine { private ClickGuiRenderEngine() { } - static void renderEngine(Renderer2D rendererIn, TextRenderer fallback, GuiGraphicsExtractor ctx, float tickDelta) { + public static void renderEngine(Renderer2D rendererIn, TextRenderer fallback, GuiGraphicsExtractor ctx, float tickDelta) { + try (ProfilerPhase.Scope frameScope = ProfilerPhase.scope("2d:clickgui:render"); RenderProfiler2D.Section ignoredFrame = RenderProfiler2D.section("render")) { boolean enabled = ModuleManager.isEnabled("clickgui"); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderer.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderer.java index 6fae00b..b8777da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.render; import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiTextEditorState; import dev.loki.lovisual.features.gui.clickgui.picker.ClickGuiPickerState; @@ -18,33 +18,68 @@ import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; 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 net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; import java.nio.file.Path; import java.util.*; import java.util.concurrent.CompletableFuture; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.font.ClickGuiFonts; +import dev.loki.lovisual.features.gui.clickgui.input.ClickGuiInputHandler; +import dev.loki.lovisual.features.gui.clickgui.input.ClickGuiKeyBindManager; +import dev.loki.lovisual.features.gui.clickgui.input.ClickGuiKeyboardHandler; +import dev.loki.lovisual.features.gui.clickgui.picker.ClickGuiPickerIconManager; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiDrawHelpers; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderEngine; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiTextBatch; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiLifecycle; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreenManager; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiTopLayer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.PickerIcon; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextBatchItem; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextHeightKey; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextMeasureKey; public enum ClickGuiRenderer { ; - static final ModulesSection MODULES_SECTION = new ModulesSection(); - static final SettingsSection SETTINGS_SECTION = new SettingsSection(); - static final String MODULES_TAB_ID = "lovisual:modules"; - static final String SETTINGS_TAB_ID = "lovisual:settings"; - static final float TAB_HEIGHT = 34f; - static final float TAB_GAP = 0f; - static final float TAB_PAD_X = 18f; - static final float TAB_FONT = 17f; - static final float TAB_MIN_W = 96f; - static float[] tabX = new float[0]; - static float[] tabW = new float[0]; - static final float LIFECYCLE_OPEN_SPEED = 9.5f; - static final float LIFECYCLE_CLOSE_SPEED = 8.0f; - static final float INPUT_READY_PROGRESS = 0.72f; - static final Set pendingBindKeys = new LinkedHashSet<>(); - static final List pickerIcons = new ArrayList<>(); + public static final ModulesSection MODULES_SECTION = new ModulesSection(); + + public static final SettingsSection SETTINGS_SECTION = new SettingsSection(); + + public static final String MODULES_TAB_ID = "lovisual:modules"; + + public static final String SETTINGS_TAB_ID = "lovisual:settings"; + + public static final float TAB_HEIGHT = 34f; + + public static final float TAB_GAP = 0f; + + public static final float TAB_PAD_X = 18f; + + public static final float TAB_FONT = 17f; + + public static final float TAB_MIN_W = 96f; + + public static float[] tabX = new float[0]; + + public static float[] tabW = new float[0]; + + public static final float LIFECYCLE_OPEN_SPEED = 9.5f; + + public static final float LIFECYCLE_CLOSE_SPEED = 8.0f; + + public static final float INPUT_READY_PROGRESS = 0.72f; + + public static final Set pendingBindKeys = new LinkedHashSet<>(); + + public static final List pickerIcons = new ArrayList<>(); + static final ArrayList TEXT_BATCH = new ArrayList<>(); static final int TEXT_WIDTH_CACHE_LIMIT = 4096; static final int TEXT_HEIGHT_CACHE_LIMIT = 256; @@ -63,39 +98,71 @@ public enum ClickGuiRenderer { public static boolean waitingForKey = false; public static Object keyBindOwner = null; static int colorClipboard = 0xFFFFFFFF; - static boolean init = false; - static float mouseX, mouseY; - static boolean cursorShown = false; - static int fbWidth, fbHeight; - static TextRenderer interRegular; - static TextRenderer interMedium; - static TextRenderer onestMedium; - static TextRenderer onestBold; - static TextRenderer monsterratRegular; - static String activeTabId = MODULES_TAB_ID; - static float tabBarX, tabBarY, tabBarW, tabBarH; - static float tabTargetX, tabTargetW; - static float tabAnimX, tabAnimW; - static boolean tabAnimInit = false; - static long lastTabAnimNs = System.nanoTime(); - static float lifecycleAnim = 0.0f; - static boolean closingForExit = false; - static boolean finishingClose = false; - static long lastLifecycleAnimNs = System.nanoTime(); - static float modulesAreaX, modulesAreaY, modulesAreaW, modulesAreaH; - static CompletableFuture pendingSaveTask; - static ClickGuiTextEditorState textEditor = null; - static ClickGuiPickerState picker = null; - static CombatProtocolHeuristicsEditorState protocolHeuristicsEditor = null; - static TextSetting inlineTextOwner = null; - static StringBuilder inlineTextBuffer = null; - static float inlineTextX, inlineTextY, inlineTextW, inlineTextH; - static boolean pickerIconScissorActive = false; - static float pickerIconScissorX, pickerIconScissorY, pickerIconScissorW, pickerIconScissorH; - static Renderer2D renderer; + public static boolean init = false; + + public static float mouseX, mouseY; + + public static boolean cursorShown = false; + + public static int fbWidth, fbHeight; + + public static TextRenderer interRegular; + + public static TextRenderer interMedium; + + public static TextRenderer onestMedium; + + public static TextRenderer onestBold; + + public static TextRenderer monsterratRegular; + + public static String activeTabId = MODULES_TAB_ID; + + public static float tabBarX, tabBarY, tabBarW, tabBarH; + + public static float tabTargetX, tabTargetW; + + public static float tabAnimX, tabAnimW; + + public static boolean tabAnimInit = false; + + public static long lastTabAnimNs = System.nanoTime(); + + public static float lifecycleAnim = 0.0f; + + public static boolean closingForExit = false; + + public static boolean finishingClose = false; + + public static long lastLifecycleAnimNs = System.nanoTime(); + + public static float modulesAreaX, modulesAreaY, modulesAreaW, modulesAreaH; + + public static CompletableFuture pendingSaveTask; + + public static ClickGuiTextEditorState textEditor = null; + + public static ClickGuiPickerState picker = null; + + public static CombatProtocolHeuristicsEditorState protocolHeuristicsEditor = null; + + public static TextSetting inlineTextOwner = null; + + public static StringBuilder inlineTextBuffer = null; + + public static float inlineTextX, inlineTextY, inlineTextW, inlineTextH; + + public static boolean pickerIconScissorActive = false; + + public static float pickerIconScissorX, pickerIconScissorY, pickerIconScissorW, pickerIconScissorH; + + public static Renderer2D renderer; + static float renderAlphaMultiplier = 1.0f; - static ClickGuiScreen mainScreen; - static ClickGuiPickerScreen pickerScreen; + public static ClickGuiScreen mainScreen; + + public static ClickGuiPickerScreen pickerScreen; + static boolean textBatchActive; // ========================= diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTextBatch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiTextBatch.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTextBatch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiTextBatch.java index 6e2a800..a472efb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTextBatch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/render/ClickGuiTextBatch.java @@ -1,11 +1,17 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.render; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiDrawHelpers; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextBatchItem; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextBatchKey; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextHeightKey; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextMeasureKey; public final class ClickGuiTextBatch { @@ -16,7 +22,8 @@ public final class ClickGuiTextBatch { return size / 18.0f; } - static float textWidth(TextRenderer tr, String text, float size) { + public static float textWidth(TextRenderer tr, String text, float size) { + if (tr == null || text == null || text.isEmpty()) return 0f; TextMeasureKey key = new TextMeasureKey(tr, Float.floatToIntBits(size), text); Float cached = ClickGuiRenderer.TEXT_WIDTH_CACHE.get(key); @@ -32,7 +39,8 @@ public final class ClickGuiTextBatch { } } - static float textHeight(TextRenderer tr, float size) { + public static float textHeight(TextRenderer tr, float size) { + if (tr == null) return 0f; TextHeightKey key = new TextHeightKey(tr, Float.floatToIntBits(size)); Float cached = ClickGuiRenderer.TEXT_HEIGHT_CACHE.get(key); @@ -86,7 +94,8 @@ public final class ClickGuiTextBatch { ClickGuiRenderer.TEXT_BATCH.clear(); } - static void drawText(TextRenderer tr, String text, float x, float y, float size, int argb, boolean shadow) { + public static void drawText(TextRenderer tr, String text, float x, float y, float size, int argb, boolean shadow) { + if (tr == null || text == null || text.isEmpty()) return; argb = ClickGuiDrawHelpers.applyAlpha(argb); if (((argb >>> 24) & 0xFF) <= 0) return; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiLifecycle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiLifecycle.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiLifecycle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiLifecycle.java index 29eec6b..bdf7cea 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiLifecycle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiLifecycle.java @@ -1,19 +1,29 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.screen; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreenManager; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.ClickGuiTabEntry; public final class ClickGuiLifecycle { private ClickGuiLifecycle() { } - static void init() { + public static void init() { + if (ClickGuiRenderer.init) return; ClickGuiRenderer.init = true; ClickGuiRenderer.activeTabId = ClickGuiRenderer.MODULES_TAB_ID; @@ -26,7 +36,8 @@ public final class ClickGuiLifecycle { } } - static void beginOpenAnimation() { + public static void beginOpenAnimation() { + init(); ClickGuiRenderer.closingForExit = false; ClickGuiRenderer.finishingClose = false; @@ -34,7 +45,8 @@ public final class ClickGuiLifecycle { ClickGuiTabState.getActiveSection().onSelected(); } - static void beginCloseAnimation() { + public static void beginCloseAnimation() { + if (ClickGuiRenderer.finishingClose) return; init(); ClickGuiRenderer.closingForExit = true; @@ -62,26 +74,31 @@ public final class ClickGuiLifecycle { } } - static boolean isLifecycleActive() { + public static boolean isLifecycleActive() { + return ModuleManager.isEnabled("clickgui") || ClickGuiRenderer.closingForExit || ClickGuiRenderer.lifecycleAnim > 0.001f; } - static boolean isClosingForExit() { + public static boolean isClosingForExit() { + return ClickGuiRenderer.closingForExit; } - static boolean isInputReady() { + public static boolean isInputReady() { + return ModuleManager.isEnabled("clickgui") && !ClickGuiRenderer.closingForExit && ClickGuiRenderer.lifecycleAnim >= ClickGuiRenderer.INPUT_READY_PROGRESS; } - static void finishCloseImmediately() { + public static void finishCloseImmediately() { + ClickGuiRenderer.closingForExit = false; ClickGuiRenderer.lifecycleAnim = 0.0f; onClose(); ClickGuiScreenManager.clearScreens(); } - static void onClose() { + public static void onClose() { + if (!ClickGuiRenderer.cursorShown) return; long handle = Minecraft.getInstance().getWindow().handle(); @@ -97,7 +114,8 @@ public final class ClickGuiLifecycle { ClickGuiScreenManager.requestConfigSave(); } - static void releaseCursorForGameplay() { + public static void releaseCursorForGameplay() { + if (Minecraft.getInstance() == null || Minecraft.getInstance().getWindow() == null) return; if (ClientScreen.current() == null) { try { @@ -115,7 +133,8 @@ public final class ClickGuiLifecycle { DraggableHudElementRegistry.setForceVisible(false); } - static void ensureCursorShown() { + public static void ensureCursorShown() { + if (ClickGuiRenderer.cursorShown) return; if (Minecraft.getInstance() == null || Minecraft.getInstance().getWindow() == null) return; GLFW.glfwSetInputMode( @@ -127,7 +146,8 @@ public final class ClickGuiLifecycle { ClickGuiRenderer.cursorShown = true; } - static void updateLifecycleAnim(long now, boolean opening) { + public static void updateLifecycleAnim(long now, boolean opening) { + float dt = (now - ClickGuiRenderer.lastLifecycleAnimNs) / 1_000_000_000f; ClickGuiRenderer.lastLifecycleAnimNs = now; if (dt < 0f) dt = 0f; @@ -137,11 +157,13 @@ public final class ClickGuiLifecycle { ClickGuiRenderer.lifecycleAnim = AnimationUtility.snap(ClickGuiRenderer.lifecycleAnim, target, 0.002f); } - static boolean sectionsClosed() { + public static boolean sectionsClosed() { + return !ClickGuiTabState.getActiveSection().isVisible(); } - static void completeCloseAnimation() { + public static void completeCloseAnimation() { + if (ClickGuiRenderer.finishingClose) return; ClickGuiRenderer.finishingClose = true; ClickGuiRenderer.closingForExit = false; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreen.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreen.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreen.java index 8cbe520..f1da248 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreen.java @@ -5,16 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.screen; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.network.chat.Component; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import java.nio.file.Path; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.module.modules.misc.ClickGui; public final class ClickGuiScreen extends Screen { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreenManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreenManager.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreenManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreenManager.java index 1d3638e..11ccc68 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiScreenManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiScreenManager.java @@ -1,23 +1,29 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.screen; -import dev.loki.lovisual.config.ConfigSerializer; +import dev.loki.lovisual.config.io.ConfigSerializer; import dev.loki.lovisual.features.gui.clickgui.picker.ClickGuiPickerState; import dev.loki.lovisual.features.gui.clickgui.protocol.CombatProtocolHeuristicsEditorState; import dev.loki.lovisual.features.gui.clickgui.sections.settings.SettingsTabRuntime; import dev.loki.lovisual.features.gui.clickgui.settings.cooldown.ProtocolHeuristicsSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import dev.loki.lovisual.util.screen.ClientScreen; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import net.minecraft.client.Minecraft; import java.util.concurrent.CompletableFuture; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; public final class ClickGuiScreenManager { private ClickGuiScreenManager() { } - static void openClickGuiScreen() { + public static void openClickGuiScreen() { + if (Minecraft.getInstance() == null) return; if (ClientScreen.current() != null) return; if (ClickGuiRenderer.mainScreen == null) { @@ -27,13 +33,15 @@ public final class ClickGuiScreenManager { ClientScreen.show(Minecraft.getInstance(), ClickGuiRenderer.mainScreen); } - static void captureMainScreen() { + public static void captureMainScreen() { + if (Minecraft.getInstance() != null && ClientScreen.current() instanceof ClickGuiScreen cs) { ClickGuiRenderer.mainScreen = cs; } } - static ClickGuiScreen ensureMainScreen() { + public static ClickGuiScreen ensureMainScreen() { + if (ClickGuiRenderer.mainScreen == null) { ClickGuiRenderer.mainScreen = new ClickGuiScreen(); } @@ -51,13 +59,15 @@ public final class ClickGuiScreenManager { ClientScreen.show(Minecraft.getInstance(), ClickGuiRenderer.pickerScreen); } - static void clearScreens() { + public static void clearScreens() { + ClickGuiRenderer.mainScreen = null; ClickGuiRenderer.pickerScreen = null; SettingsTabRuntime.clearScreens(); } - static void openPicker(TextListSetting owner, String title, TextListSetting.PickerMode mode) { + public static void openPicker(TextListSetting owner, String title, TextListSetting.PickerMode mode) { + if (owner == null) return; ClickGuiEditorManager.clearInlineText(); ClickGuiSearch.deactivate(); @@ -66,7 +76,8 @@ public final class ClickGuiScreenManager { openPickerScreen(); } - static void openProtocolHeuristicsEditor(ProtocolHeuristicsSetting owner, String title) { + public static void openProtocolHeuristicsEditor(ProtocolHeuristicsSetting owner, String title) { + if (owner == null) return; ClickGuiEditorManager.clearInlineText(); ClickGuiSearch.deactivate(); @@ -75,15 +86,18 @@ public final class ClickGuiScreenManager { openPickerScreen(); } - static void closeProtocolHeuristicsEditor() { + public static void closeProtocolHeuristicsEditor() { + closePicker(); } - static void closePickerScreen() { + public static void closePickerScreen() { + closePicker(); } - static void closePicker() { + public static void closePicker() { + ClickGuiRenderer.picker = null; ClickGuiRenderer.protocolHeuristicsEditor = null; ClickGuiRenderer.textEditor = null; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTopLayer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiTopLayer.java similarity index 69% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTopLayer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiTopLayer.java index 579b6fa..b1deb81 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTopLayer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/screen/ClickGuiTopLayer.java @@ -1,31 +1,40 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.screen; import dev.loki.lovisual.features.gui.clickgui.sections.settings.SettingsTabRuntime; -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.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.math.HudScale; 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.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.ClickGuiPickerIconManager; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderEngine; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiLifecycle; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; public final class ClickGuiTopLayer { private ClickGuiTopLayer() { } - static boolean shouldRenderAsTopLayer() { + public static boolean shouldRenderAsTopLayer() { + return Minecraft.getInstance() != null && (ClickGuiLifecycle.isLifecycleActive() || ClientScreen.current() instanceof ClickGuiScreen || ClientScreen.current() instanceof ClickGuiPickerScreen || ClientScreen.current() instanceof ClickGuiEditorScreen); } - static void renderTopLayer(GuiGraphicsExtractor ctx, float tickDelta) { + public static void renderTopLayer(GuiGraphicsExtractor ctx, float tickDelta) { + if (!shouldRenderAsTopLayer()) return; LoVisualRenderSystem.ensureFrameContext(); @@ -50,7 +59,8 @@ public final class ClickGuiTopLayer { ViewportContext.end(ctx); } - static void renderEditor(Renderer2D rendererIn, TextRenderer fallback, GuiGraphicsExtractor ctx, float tickDelta) { + public static void renderEditor(Renderer2D rendererIn, TextRenderer fallback, GuiGraphicsExtractor ctx, float tickDelta) { + if (Minecraft.getInstance() == null || Minecraft.getInstance().getWindow() == null) return; ClickGuiLifecycle.init(); ClickGuiRenderer.renderer = rendererIn; @@ -68,7 +78,8 @@ public final class ClickGuiTopLayer { } } - static void renderModulesPreview(float x, float y, float w, float h) { + public static void renderModulesPreview(float x, float y, float w, float h) { + if (ClickGuiRenderer.renderer == null) return; ClickGuiLifecycle.init(); float pad = 8f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/ModulesSection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/ModulesSection.java index ffa8679..3632383 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/ModulesSection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/ModulesSection.java @@ -8,6 +8,7 @@ package dev.loki.lovisual.features.gui.clickgui.sections; import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuScreen; +import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection; public final class ModulesSection implements ClickGuiSection { private final ModulesMenuScreen screen = new ModulesMenuScreen(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/SettingsSection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/SettingsSection.java index cdc7274..cde839d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/SettingsSection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/SettingsSection.java @@ -12,6 +12,7 @@ import dev.loki.lovisual.features.gui.clickgui.sections.settings.SettingsTabRunt import java.nio.file.Path; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection; public final class SettingsSection implements ClickGuiSection { private float x; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/settings/SettingsTabRuntime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/settings/SettingsTabRuntime.java index caf2432..e53a41e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/settings/SettingsTabRuntime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/sections/settings/SettingsTabRuntime.java @@ -10,7 +10,7 @@ package dev.loki.lovisual.features.gui.clickgui.sections.settings; import net.minecraft.client.gui.GuiGraphicsExtractor; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuScreen; 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 java.nio.file.Path; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSetting.java index 5c525e0..74b00c4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSetting.java @@ -7,15 +7,16 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bind; -import dev.loki.lovisual.config.SettingOwner; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.KeyBindValue; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.color.KeyBindValue; import dev.loki.lovisual.util.input.KeyManager; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import java.util.function.BooleanSupplier; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; /** * Function bind without toggle(): listens to active state (PRESS/HOLD). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSettingRenderer.java index d82bcf2..e53b909 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/FunctionBindSettingRenderer.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bind; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.util.BindRendererUtil; +import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; public final class FunctionBindSettingRenderer { private FunctionBindSettingRenderer() { @@ -38,4 +38,4 @@ public final class FunctionBindSettingRenderer { String modeText = setting.mode() == BindMode.HOLD ? "Hold" : "Press"; return BindRendererUtil.bindHeight(setting.ui().lastW, setting.getDisplayName(), setting.get(), modeText); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSetting.java index 932eaff..d25d6e8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSetting.java @@ -7,12 +7,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bind; -import dev.loki.lovisual.config.SettingOwner; -import dev.loki.lovisual.config.values.KeyBindValue; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.values.color.KeyBindValue; import dev.loki.lovisual.util.input.KeyManager; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class KeyBindSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSettingRenderer.java index 08e725f..e4e00a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bind/KeyBindSettingRenderer.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bind; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.util.BindRendererUtil; +import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; public final class KeyBindSettingRenderer { private KeyBindSettingRenderer() { @@ -35,4 +35,4 @@ public final class KeyBindSettingRenderer { public static float getHeight(KeyBindSetting setting) { return BindRendererUtil.bindHeight(setting.ui().lastW, setting.getDisplayName(), setting.getValue().get(), null); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSetting.java index f21b7f4..4df7dc6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSetting.java @@ -7,9 +7,10 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bool; -import dev.loki.lovisual.config.values.BooleanValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class BooleanSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSettingRenderer.java index 86861ba..ffe5a00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/bool/BooleanSettingRenderer.java @@ -7,13 +7,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.bool; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.wav.ClickGuiSounds; -import dev.loki.lovisual.features.gui.clickgui.settings.bool.BooleanSetting; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.bool.BooleanSetting; public final class BooleanSettingRenderer { private BooleanSettingRenderer() { @@ -128,4 +128,4 @@ public final class BooleanSettingRenderer { } return new LayoutBoolean(ui.layoutLines, ui.layoutLineH, ui.layoutLabelY, ui.layoutControlY, ui.layoutRowH); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSetting.java index cfe0428..f855564 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSetting.java @@ -8,10 +8,11 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; -import dev.loki.lovisual.config.values.ColorValue; +import dev.loki.lovisual.config.values.color.ColorValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.util.text.edit.TextSelection; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class ColorSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingMath.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingMath.java index cead386..a2ce353 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingMath.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingMath.java @@ -20,4 +20,4 @@ public final class ColorSettingMath { public static int withAlpha(int argb, int a) { return (argb & 0x00FFFFFF) | ((Math.max(0, Math.min(255, a)) & 0xFF) << 24); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingNoAlpha.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingNoAlpha.java index c5df50d..1922782 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingNoAlpha.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ColorSettingNoAlpha.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; public class ColorSettingNoAlpha extends ColorSetting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ConfigColorSettingNoAlpha.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ConfigColorSettingNoAlpha.java index ea4bf46..c166d59 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ConfigColorSettingNoAlpha.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/ConfigColorSettingNoAlpha.java @@ -7,10 +7,11 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSettingNoAlpha; +import dev.loki.lovisual.features.module.core.Module; /** * Color setting that persists changes via a ConfigObject (non-Module owner). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexInput.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexInput.java index 7d571e8..bbe995f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexInput.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexInput.java @@ -7,21 +7,21 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.hex; -import dev.loki.lovisual.config.values.ColorValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.values.color.ColorValue; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import org.lwjgl.glfw.GLFW; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; -import dev.loki.lovisual.features.gui.clickgui.settings.color.hex.ColorSettingHexState; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingDrag; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; +import dev.loki.lovisual.features.gui.clickgui.settings.color.hex.ColorSettingHexState; public final class ColorSettingHexInput { private ColorSettingHexInput() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexState.java index 05e2083..6d56c6d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/hex/ColorSettingHexState.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.hex; -import dev.loki.lovisual.config.values.ColorValue; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.config.values.color.ColorValue; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorPresetStore.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorPresetStore.java index c2db154..b8f4a93 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorPresetStore.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorPresetStore.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.preset; import com.google.gson.*; -import dev.loki.lovisual.config.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigPaths; import dev.loki.lovisual.util.logging.DebugLog; import java.nio.file.Files; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetHandler.java index 931cd1d..c36b597 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetHandler.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.preset; -import dev.loki.lovisual.config.values.ColorValue; +import dev.loki.lovisual.config.values.color.ColorValue; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; -import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorPresetStore; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingDrag; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingLayout; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorPresetStore; public final class ColorSettingPresetHandler { private ColorSettingPresetHandler() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetRenderer.java index e0aa4c1..a01670d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/preset/ColorSettingPresetRenderer.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.preset; -import dev.loki.lovisual.config.values.ColorValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.values.color.ColorValue; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; -import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorPresetStore; -import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorSettingPresetHandler; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingLayout; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorPresetStore; +import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorSettingPresetHandler; public final class ColorSettingPresetRenderer { private ColorSettingPresetRenderer() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingDrag.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingDrag.java index 7221746..ba5eab0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingDrag.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingDrag.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.render; -import dev.loki.lovisual.config.values.ColorValue; +import dev.loki.lovisual.config.values.color.ColorValue; import java.awt.Color; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; @@ -98,4 +98,4 @@ public final class ColorSettingDrag { value.set(String.format("#%02X%02X%02X%02X", (argb >>> 24) & 0xFF, (argb >>> 16) & 0xFF, (argb >>> 8) & 0xFF, argb & 0xFF)); else value.set(String.format("#%02X%02X%02X", (argb >>> 16) & 0xFF, (argb >>> 8) & 0xFF, argb & 0xFF)); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingLayout.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingLayout.java index a75a98d..c8c4605 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingLayout.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingLayout.java @@ -152,4 +152,4 @@ public final class ColorSettingLayout { ui.rnbW = bw; ui.rnbH = bh; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingRenderer.java index bde5f4c..cb12f7f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingRenderer.java @@ -7,21 +7,21 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.render; -import dev.loki.lovisual.config.values.ColorValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.values.color.ColorValue; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; import dev.loki.lovisual.features.gui.clickgui.settings.color.hex.ColorSettingHexInput; import dev.loki.lovisual.features.gui.clickgui.settings.color.hex.ColorSettingHexState; import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorSettingPresetHandler; import dev.loki.lovisual.features.gui.clickgui.settings.color.preset.ColorSettingPresetRenderer; +import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; +import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingDrag; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingLayout; import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingSquareRenderer; -import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; -import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; public final class ColorSettingRenderer { private ColorSettingRenderer() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingSquareRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingSquareRenderer.java index 4d0e5ba..c453d0b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingSquareRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/color/render/ColorSettingSquareRenderer.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.gui.clickgui.settings.color.render; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSettingMath; -import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingLayout; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.color.render.ColorSettingLayout; public final class ColorSettingSquareRenderer { private ColorSettingSquareRenderer() { @@ -88,4 +88,4 @@ public final class ColorSettingSquareRenderer { ClickGuiRenderer.drawCircle(ui.alphaX + ui.alphaW * 0.5f, alphaY, SettingSkinUtil.m(3f, 3f), 0xFFFFFFFF); } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/CooldownRulesSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/CooldownRulesSetting.java index b898d29..9ec1fb3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/CooldownRulesSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/CooldownRulesSetting.java @@ -7,16 +7,21 @@ package dev.loki.lovisual.features.gui.clickgui.settings.cooldown; -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.SetValue; +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 net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import java.util.*; import dev.loki.lovisual.features.gui.clickgui.settings.bool.BooleanSetting; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/ProtocolHeuristicsSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/ProtocolHeuristicsSetting.java index e3e62f8..8ea2a7a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/ProtocolHeuristicsSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/cooldown/ProtocolHeuristicsSetting.java @@ -7,12 +7,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.cooldown; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.SetValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.SetValue; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; /** * Compact Edit entry backed by per-module source toggles. The actual regex diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/Setting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/Setting.java index 7c9a28e..e1bf495 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/Setting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/Setting.java @@ -8,9 +8,9 @@ package dev.loki.lovisual.features.gui.clickgui.settings.core; import net.minecraft.client.resources.language.I18n; -import dev.loki.lovisual.config.ConfigLang; -import dev.loki.lovisual.config.SettingOwner; -import dev.loki.lovisual.config.values.ConfigValue; +import dev.loki.lovisual.config.i18n.ConfigLang; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.values.collection.ConfigValue; import java.util.ArrayList; import java.util.HashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/SettingFactory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/SettingFactory.java index d086667..b3ab6dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/SettingFactory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/core/SettingFactory.java @@ -7,19 +7,31 @@ package dev.loki.lovisual.features.gui.clickgui.settings.core; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.definition.SettingDef; +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.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bool.BooleanSetting; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; import dev.loki.lovisual.features.gui.clickgui.settings.cooldown.CooldownRulesSetting; import dev.loki.lovisual.features.gui.clickgui.settings.cooldown.ProtocolHeuristicsSetting; -import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.group.GroupSetting; import dev.loki.lovisual.features.gui.clickgui.settings.mode.ModeSetting; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; +import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; /** * Builds GUI settings from GUI-neutral SettingDef. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSetting.java index 0d7c39a..76e7970 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSetting.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.clickgui.settings.group; -import dev.loki.lovisual.config.values.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; import java.util.ArrayList; import java.util.HashMap; @@ -16,6 +16,7 @@ import java.util.Map; import java.util.function.Predicate; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class GroupSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSettingRenderer.java index be0710d..fc32bb4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/group/GroupSettingRenderer.java @@ -7,16 +7,16 @@ package dev.loki.lovisual.features.gui.clickgui.settings.group; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import java.util.HashSet; import java.util.Set; -import dev.loki.lovisual.features.gui.clickgui.settings.group.GroupSetting; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.group.GroupSetting; public final class GroupSettingRenderer { private GroupSettingRenderer() { @@ -120,4 +120,4 @@ public final class GroupSettingRenderer { for (GroupSetting.OptionLayout opt : ui.optionLayouts) max = Math.max(max, opt.y() - SettingSkinUtil.m(19f, 9.7f) + SettingSkinUtil.m(16f, 8f)); return max; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/i18n/I18nPreflightContributors.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/i18n/I18nPreflightContributors.java index 705e472..5c571a9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/i18n/I18nPreflightContributors.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/i18n/I18nPreflightContributors.java @@ -7,27 +7,27 @@ package dev.loki.lovisual.features.gui.clickgui.settings.i18n; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.SettingOwner; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.definition.SettingOwner; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.player.I18nPreflightCollectEvent; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; +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.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.DropESP; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorConfig; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorConfig; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSetting.java index ca059f2..0c83c42 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSetting.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.clickgui.settings.mode; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.ModeValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.mode.ModeValue; import java.util.ArrayList; import java.util.HashMap; @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class ModeSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSettingRenderer.java index c32eb1f..1bea6c0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/mode/ModeSettingRenderer.java @@ -7,13 +7,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.mode; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.wav.ClickGuiSounds; -import dev.loki.lovisual.features.gui.clickgui.settings.mode.ModeSetting; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.mode.ModeSetting; public final class ModeSettingRenderer { private ModeSettingRenderer() { @@ -100,4 +100,4 @@ public final class ModeSettingRenderer { for (ModeSetting.OptionLayout opt : ui.optionLayouts) max = Math.max(max, opt.y() - SettingSkinUtil.m(19f, 9.7f) + SettingSkinUtil.m(16f, 8f)); return max; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/render/SettingRendererBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/render/SettingRendererBridge.java index 3b6c7d5..76a98be 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/render/SettingRendererBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/render/SettingRendererBridge.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.gui.clickgui.settings.render; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bool.BooleanSetting; @@ -19,11 +19,11 @@ import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSetting; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.group.GroupSetting; import dev.loki.lovisual.features.gui.clickgui.settings.mode.ModeSetting; -import dev.loki.lovisual.features.gui.clickgui.settings.render.UnifiedSettingRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; +import dev.loki.lovisual.features.gui.clickgui.settings.render.UnifiedSettingRenderer; public enum SettingRendererBridge { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/ModulesSettingsSkin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/ModulesSettingsSkin.java index ae92f2b..7c8c7a2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/ModulesSettingsSkin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/ModulesSettingsSkin.java @@ -8,13 +8,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.skin; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderContext; public enum ModulesSettingsSkin { @@ -142,4 +142,4 @@ public enum ModulesSettingsSkin { int argb = withAlpha(tint, alpha); Renderer2D.COLOR.svg("check", x, y, size, size, SvgRenderOptions.overrideColor(argb)); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/SettingSkinUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/SettingSkinUtil.java index 6e67949..714da52 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/SettingSkinUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/SettingSkinUtil.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.gui.clickgui.settings.skin; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.color.ColorSettingMath; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; @@ -141,4 +141,4 @@ public final class SettingSkinUtil { ClickGuiRenderer.drawText(font, text, x + offset + cycleDistance, y, fontSize, color, false); } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/UnifiedSettingsSkin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/UnifiedSettingsSkin.java index aff05f1..49c99e4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/UnifiedSettingsSkin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/skin/UnifiedSettingsSkin.java @@ -9,12 +9,12 @@ package dev.loki.lovisual.features.gui.clickgui.settings.skin; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.features.theme.Themes; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderContext; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRenderSurface; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSetting.java index a01715c..a0708c1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSetting.java @@ -7,10 +7,11 @@ package dev.loki.lovisual.features.gui.clickgui.settings.slider; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.text.edit.TextSelection; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class SliderSetting extends Setting { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSettingRenderer.java index 206a2aa..d53ebe7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderSettingRenderer.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.gui.clickgui.settings.slider; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderSetting; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderTextInputHandler; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderTextInputState; -import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; public final class SliderSettingRenderer { private SliderSettingRenderer() { @@ -194,4 +194,4 @@ public final class SliderSettingRenderer { public static float getHeight(SliderSetting setting) { return SettingSkinUtil.m(58f, 24f); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputHandler.java index 1ed685a..165a685 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputHandler.java @@ -7,17 +7,17 @@ package dev.loki.lovisual.features.gui.clickgui.settings.slider; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.text.ClipboardUtil; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import org.lwjgl.glfw.GLFW; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderSetting; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderTextInputState; -import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; public final class SliderTextInputHandler { private SliderTextInputHandler() { @@ -187,4 +187,4 @@ public final class SliderTextInputHandler { SliderTextInputState.pulseSliderError(ui); return true; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputState.java index ee4c1e1..b4b55e0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/slider/SliderTextInputState.java @@ -123,4 +123,4 @@ public final class SliderTextInputState { return; if (!sliderTextCanCommit(setting, ui.editBuffer)) pulseSliderError(ui); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSetting.java index 9c554be..d624dbd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSetting.java @@ -7,11 +7,12 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text; -import dev.loki.lovisual.config.values.StringValue; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.config.values.primitive.StringValue; +import dev.loki.lovisual.util.text.edit.TextSelection; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.owner.TextEditorOwner; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; public class TextSetting extends Setting implements TextEditorOwner { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingRenderer.java index 2b9dc4c..e78c9a9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingRenderer.java @@ -7,15 +7,15 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSettingTextInputHandler; -import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; public final class TextSettingRenderer { private TextSettingRenderer() { @@ -105,4 +105,4 @@ public final class TextSettingRenderer { public static float getHeight(TextSetting setting) { return SettingSkinUtil.m(50f, 28f); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingTextInputHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingTextInputHandler.java index 376653f..298746e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingTextInputHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/TextSettingTextInputHandler.java @@ -7,13 +7,13 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import org.lwjgl.glfw.GLFW; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; -import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; +import dev.loki.lovisual.features.gui.clickgui.settings.text.TextSetting; public final class TextSettingTextInputHandler { private TextSettingTextInputHandler() { @@ -172,4 +172,4 @@ public final class TextSettingTextInputHandler { insertTextText(setting, String.valueOf(chr)); return true; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSetting.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSetting.java index bec9600..70749b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSetting.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSetting.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text.list; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.util.text.TextSelection; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.util.text.edit.TextSelection; import java.util.Arrays; import java.util.LinkedHashSet; @@ -18,6 +18,7 @@ import java.util.stream.Collectors; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.owner.TextEditorOwner; import dev.loki.lovisual.features.gui.clickgui.settings.render.SettingRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; /** * Button + modal text editor or picker for editing Set-based values. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSettingRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSettingRenderer.java index 27f9cb4..8415a00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSettingRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListSettingRenderer.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text.list; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import java.util.List; import java.util.Set; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListTextEditHandler; -import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; public final class TextListSettingRenderer { private TextListSettingRenderer() { @@ -183,4 +183,4 @@ public final class TextListSettingRenderer { static String firstEntry(TextListSetting setting) { return firstTextListEntry(setting); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListTextEditHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListTextEditHandler.java index 26736e6..0ab7e98 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListTextEditHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/text/list/TextListTextEditHandler.java @@ -7,16 +7,16 @@ package dev.loki.lovisual.features.gui.clickgui.settings.text.list; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import org.lwjgl.glfw.GLFW; import java.util.LinkedHashSet; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; +import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSettingRenderer; -import dev.loki.lovisual.features.gui.clickgui.settings.util.SettingTextInputUtil; public final class TextListTextEditHandler { private TextListTextEditHandler() { @@ -163,4 +163,4 @@ public final class TextListTextEditHandler { insertTextListText(setting, String.valueOf(chr)); return true; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/BindRendererUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/BindRendererUtil.java index 0fafa1b..460a013 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/BindRendererUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/BindRendererUtil.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.clickgui.settings.util; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; @@ -193,4 +193,4 @@ public final class BindRendererUtil { ui.lastBx = chipX; ui.lastBy = chipY; ui.lastBw = chipW; ui.lastBh = chipH; } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/SettingTextInputUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/SettingTextInputUtil.java index 3ecc730..01a0c57 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/SettingTextInputUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/settings/util/SettingTextInputUtil.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.clickgui.settings.util; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.gui.clickgui.settings.skin.SettingSkinUtil; import dev.loki.lovisual.features.gui.clickgui.settings.skin.UnifiedSettingsSkin; @@ -44,4 +44,4 @@ public final class SettingTextInputUtil { float y = fieldY > 0f ? fieldY + (fieldH - h) * 0.5f : textY - SettingSkinUtil.m(1.5f, 0.7f); ClickGuiRenderer.drawRoundedRect(x0, y, Math.max(SettingSkinUtil.m(1f, 0.7f), x1 - x0), h, SettingSkinUtil.m(2f, 1.5f), UnifiedSettingsSkin.withAlpha(UnifiedSettingsSkin.ACCENT, 92)); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiSearch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiSearch.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiSearch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiSearch.java index 8420ea4..35d9af3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiSearch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiSearch.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.tabs; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabBar.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabBar.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabBar.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabBar.java index 60c2fb4..7139ba9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabBar.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabBar.java @@ -1,20 +1,30 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.tabs; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.DynamicIsland; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.DynamicIsland; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; 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 java.util.List; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorManager; +import dev.loki.lovisual.features.gui.clickgui.font.ClickGuiFonts; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiDrawHelpers; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiTextBatch; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiLifecycle; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiTabState; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.ClickGuiTabEntry; public final class ClickGuiTabBar { private ClickGuiTabBar() { } - static void layout(int fbw, int fbh) { + public static void layout(int fbw, int fbh) { + List tabs = ClickGuiTabState.currentTabs(); ClickGuiTabState.ensureActiveTab(tabs); float contentMarginX = 28f; @@ -66,7 +76,8 @@ public final class ClickGuiTabBar { } } - static void updateTabAnim(long now) { + public static void updateTabAnim(long now) { + float dt = (now - ClickGuiRenderer.lastTabAnimNs) / 1_000_000_000f; ClickGuiRenderer.lastTabAnimNs = now; if (dt < 0f) dt = 0f; @@ -76,7 +87,8 @@ public final class ClickGuiTabBar { ClickGuiRenderer.tabAnimW += (ClickGuiRenderer.tabTargetW - ClickGuiRenderer.tabAnimW) * step; } - static void drawTabs() { + public static void drawTabs() { + float eased = ClickGuiTabState.easeOutCubic(ClickGuiRenderer.lifecycleAnim); if (eased <= 0.001f) return; List tabs = ClickGuiTabState.currentTabs(); @@ -168,7 +180,8 @@ public final class ClickGuiTabBar { } } - static boolean handleTabClick(float mx, float my) { + public static boolean handleTabClick(float mx, float my) { + if (!ClickGuiLifecycle.isInputReady()) return false; if (mx < ClickGuiRenderer.tabBarX || mx > ClickGuiRenderer.tabBarX + ClickGuiRenderer.tabBarW || my < ClickGuiRenderer.tabBarY || my > ClickGuiRenderer.tabBarY + ClickGuiRenderer.tabBarH) return false; List tabs = ClickGuiTabState.currentTabs(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabState.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabState.java index 17a0daa..26ad5da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/ClickGuiTabState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/tabs/ClickGuiTabState.java @@ -1,18 +1,22 @@ -package dev.loki.lovisual.features.gui.clickgui; +package dev.loki.lovisual.features.gui.clickgui.tabs; -import dev.loki.lovisual.addon.ClickGuiSectionManager; +import dev.loki.lovisual.addon.manager.ClickGuiSectionManager; import dev.loki.lovisual.features.gui.clickgui.sections.ClickGuiSection; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.ClickGuiTabEntry; +import dev.loki.lovisual.features.module.lifecycle.Modules; public final class ClickGuiTabState { private ClickGuiTabState() { } - static ClickGuiSection getActiveSection() { + public static ClickGuiSection getActiveSection() { + List tabs = currentTabs(); ensureActiveTab(tabs); for (ClickGuiTabEntry tab : tabs) { @@ -24,11 +28,13 @@ public final class ClickGuiTabState { return ClickGuiRenderer.MODULES_SECTION; } - static boolean isSettingsTabActive() { + public static boolean isSettingsTabActive() { + return ClickGuiRenderer.SETTINGS_TAB_ID.equals(ClickGuiRenderer.activeTabId); } - static List currentTabs() { + public static List currentTabs() { + List addonSections = ClickGuiSectionManager.sections(); ArrayList out = new ArrayList<>(2 + addonSections.size()); out.add(new ClickGuiTabEntry(ClickGuiRenderer.MODULES_TAB_ID, "Modules", ClickGuiRenderer.MODULES_SECTION)); @@ -60,7 +66,8 @@ public final class ClickGuiTabState { return 1.0f - inv * inv * inv; } - static ClickGuiRenderer.ClickGuiIslandState islandState() { + public static ClickGuiRenderer.ClickGuiIslandState islandState() { + List tabs = currentTabs(); ensureActiveTab(tabs); String activeLabel = tabs.isEmpty() ? "" : tabs.get(0).label(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiHintOverlay.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiHintOverlay.java index 151e797..4a940a2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiHintOverlay.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiHintOverlay.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.gui.clickgui.util; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public enum ClickGuiHintOverlay { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiRichTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiRichTextRenderer.java index 6538527..1c2807e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiRichTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/clickgui/util/ClickGuiRichTextRenderer.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.gui.clickgui.util; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorX.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorX.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorX.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorX.java index 1a5fc53..e2c7219 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorX.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorX.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.anchor; public enum HudAnchorX { FREE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorY.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorY.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorY.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorY.java index e851ed3..1f5cc4c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudAnchorY.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudAnchorY.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.anchor; public enum HudAnchorY { FREE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderSpace.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudRenderSpace.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderSpace.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudRenderSpace.java index 534312e..14f2200 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderSpace.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/HudRenderSpace.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.anchor; public enum HudRenderSpace { UNSCALED, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/WidgetAnchorSide.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/WidgetAnchorSide.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/WidgetAnchorSide.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/WidgetAnchorSide.java index 9bf368e..fd90309 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/WidgetAnchorSide.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/anchor/WidgetAnchorSide.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.anchor; public enum WidgetAnchorSide { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/AbstractHudElement.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/AbstractHudElement.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/AbstractHudElement.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/AbstractHudElement.java index d24af3e..8673e4f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/AbstractHudElement.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/AbstractHudElement.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.base; +import dev.loki.lovisual.features.gui.hud.base.BaseHudElement; /** * Base class for non-draggable (vanilla/static) HUD elements with self-owned config. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/BaseHudElement.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/BaseHudElement.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/BaseHudElement.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/BaseHudElement.java index deea2a8..5b9214a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/BaseHudElement.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/BaseHudElement.java @@ -5,21 +5,49 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.base; -import dev.loki.lovisual.config.*; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.io.JsonConfigObject; +import dev.loki.lovisual.config.io.SettingDefProvider; +import dev.loki.lovisual.config.values.collection.ConfigValue; +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.events.impl.render.RenderPrewarmCollectEvent; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ConfigValue; +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 net.minecraft.client.gui.GuiGraphicsExtractor; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.resources.language.I18n; import java.util.*; import java.util.function.Supplier; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; public abstract class BaseHudElement implements JsonConfigObject, ConfigNameProvider, SettingOwner, SettingDefProvider { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/CooldownRender.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/CooldownRender.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/CooldownRender.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/CooldownRender.java index 3efb36a..f340016 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/CooldownRender.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/CooldownRender.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.base; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudTextEffects.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/HudTextEffects.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudTextEffects.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/HudTextEffects.java index 5ac4875..e2d529a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudTextEffects.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/base/HudTextEffects.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.base; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; /** * Lightweight animated gradient text effects for HUD labels/icons. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudGlobalConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudGlobalConfig.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudGlobalConfig.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudGlobalConfig.java index 2ec1daf..e27d0bd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudGlobalConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudGlobalConfig.java @@ -5,12 +5,20 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.config; -import dev.loki.lovisual.config.*; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.io.ConfigPaths; +import dev.loki.lovisual.config.io.JsonConfigObject; +import dev.loki.lovisual.config.io.SettingDefProvider; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.render.engine.math.HudScale; import java.io.IOException; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudRenderUtil.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudRenderUtil.java index e028fc2..c36ce31 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudRenderUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/config/HudRenderUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.config; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElement.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElement.java index 752ba72..31f40aa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElement.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElement.java @@ -7,14 +7,15 @@ package dev.loki.lovisual.features.gui.hud.draggable; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.features.gui.hud.BaseHudElement; -import dev.loki.lovisual.features.gui.hud.HudAnchorX; -import dev.loki.lovisual.features.gui.hud.HudAnchorY; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.features.gui.hud.base.BaseHudElement; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import lombok.Getter; import java.util.Map; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableLayoutValue; /** * Base draggable HUD element with self-owned config and layout. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElementRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElementRegistry.java index f38d689..aea710d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElementRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableHudElementRegistry.java @@ -11,11 +11,12 @@ import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryRenderPipeline; import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryWidgetRenderPath; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; 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 java.util.List; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; /** * Реестр HUD-виджетов + drag-and-drop при открытом чате. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableLayoutValue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableLayoutValue.java index 670e52f..798f9c5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableLayoutValue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/DraggableLayoutValue.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.hud.draggable; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.features.gui.hud.HudAnchorX; -import dev.loki.lovisual.features.gui.hud.HudAnchorY; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import java.util.LinkedHashMap; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/BetterChat.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/BetterChat.java index c6d7d36..d360939 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/BetterChat.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/BetterChat.java @@ -11,17 +11,17 @@ import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.ChatScreen; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; +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.color.RGBColorValue; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.math.HudScale; 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.Lifecycle; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/HudPanelLayoutModes.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/HudPanelLayoutModes.java index 37a6c32..573b44d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/HudPanelLayoutModes.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/HudPanelLayoutModes.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; public enum HudPanelLayoutModes { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/TimerIndicator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/TimerIndicator.java index 223655d..838c539 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/TimerIndicator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/TimerIndicator.java @@ -9,21 +9,21 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/Triangulator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/Triangulator.java index 3b8ee6b..50a12d3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/Triangulator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/Triangulator.java @@ -7,12 +7,17 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.impl.triangulator.model.CapturePolicy; @@ -26,10 +31,10 @@ import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.render.Tri import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.render.TriangulatorPainter; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.level.Level; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/CombatLogHud.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/CombatLogHud.java index 10310c8..322e3da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/CombatLogHud.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/CombatLogHud.java @@ -1,17 +1,17 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.combat; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLog; import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogEntry; import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogStats; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.gui.GuiGraphicsExtractor; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Inventory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Inventory.java index 8e06246..b0d9e2e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Inventory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Inventory.java @@ -7,25 +7,31 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.combat; -import dev.loki.lovisual.config.values.*; +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.ModeValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.util.Util; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.input.KeyManager; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Itemizer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Itemizer.java index b011822..3fae2d3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Itemizer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/Itemizer.java @@ -7,30 +7,30 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.combat; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.hud.HudAnchorX; -import dev.loki.lovisual.features.gui.hud.HudAnchorY; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; 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.script.HudScriptLayouts; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.ColorMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ClipFunction; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ClipFunction; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/MediaPlayer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/MediaPlayer.java index 896336c..01b6b63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/MediaPlayer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/combat/MediaPlayer.java @@ -7,7 +7,11 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.combat; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -15,23 +19,23 @@ import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.client.resources.language.I18n; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.definition.SettingDef; import dev.loki.lovisual.events.impl.render.RenderPrewarmCollectEvent; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.media.MediaInfo; -import dev.loki.lovisual.util.media.MediaSessionService; -import dev.loki.lovisual.util.media.RepeatMode; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.session.MediaSessionService; +import dev.loki.lovisual.util.media.info.RepeatMode; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/HudNotifier.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/HudNotifier.java index 9515700..0360514 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/HudNotifier.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/HudNotifier.java @@ -8,17 +8,15 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier; import com.mojang.blaze3d.platform.Window; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.impl.render.RenderPrewarmCollectEvent; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +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.DraggableHudElementRegistry; -import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastCardRenderer; -import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry.MessengerSide; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry.ToastMetrics; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry.ToastPosition; @@ -28,19 +26,19 @@ import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.Toast import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.ToastDraw; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.ToastVisual; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastStyle; -import dev.loki.lovisual.features.module.HudPhase; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.features.module.ModuleStateListener; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.phase.ModuleStateListener; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.screen.ClientScreen; -import dev.loki.lovisual.util.wav.CustomSoundEngine; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.ChatScreen; @@ -49,6 +47,8 @@ import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastCardRenderer; +import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry; @HudElementRegister(order = 80) public final class HudNotifier extends DraggableHudElement implements ModuleStateListener { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastCardRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastCardRenderer.java index 5f02c7a..8f50d3c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastCardRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastCardRenderer.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry.ToastMetrics; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.Toast; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.ToastVisual; @@ -15,10 +15,10 @@ import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.Toast import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastStyle; +import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; /** * Card drawing routines for HudNotifier toasts: glass pill background, progress bar diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastGeometry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastGeometry.java index 297d24c..6111b7a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastGeometry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/ToastGeometry.java @@ -7,17 +7,17 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier; -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.impl.hudnotifier.model.ToastModel.PreviewToast; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.Toast; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.ToastDraw; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.ToastVisual; 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 java.util.List; -import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastStyle; +import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; /** * Layout and measurement math for HudNotifier toasts: box metrics, text measurement, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastModel.java index 822fd1e..1960104 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastModel.java @@ -10,6 +10,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.ToastGeometry.ToastMetrics; import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.features.module.core.Module; /** * Toast state model for HudNotifier: lifecycle timing, preview rotation data, the diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastStyle.java index db2cb92..ec1367c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/hudnotifier/model/ToastStyle.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier.NotifyType; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.model.ToastModel.Toast; @@ -16,7 +16,7 @@ import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; /** * Color and icon styling for HudNotifier toasts: palettes, notification type colors, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/Coordinates.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/Coordinates.java index 50bbf5c..fe0e51f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/Coordinates.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/Coordinates.java @@ -7,17 +7,21 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.metrics; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.util.Util; import net.minecraft.world.level.Level; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -26,9 +30,9 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/GameTime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/GameTime.java index 4e921b6..ab5da69 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/GameTime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/GameTime.java @@ -7,16 +7,21 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.metrics; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.BlockPos; import net.minecraft.util.Util; import net.minecraft.world.level.biome.Biome; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -26,9 +31,9 @@ import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SpeedBps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SpeedBps.java index 83321bb..16282ff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SpeedBps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SpeedBps.java @@ -7,16 +7,21 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.metrics; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -25,10 +30,10 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.PlayerSpeedUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.movement.PlayerSpeedUtil; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SystemTime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SystemTime.java index 8621341..511038e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SystemTime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/metrics/SystemTime.java @@ -7,14 +7,19 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.metrics; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -23,9 +28,9 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.time.LocalTime; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Keybinds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Keybinds.java index 3ec5111..a334451 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Keybinds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Keybinds.java @@ -7,29 +7,35 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.panels; -import dev.loki.lovisual.config.values.*; +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.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.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.util.Util; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleManager; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.LinkedHashMap; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/ModuleList.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/ModuleList.java index dc2e18c..a001389 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/ModuleList.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/ModuleList.java @@ -10,24 +10,24 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.panels; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Util; -import dev.loki.lovisual.config.ConfigValueAliasProvider; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.i18n.ConfigValueAliasProvider; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -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.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.ArrayList; import java.util.Comparator; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Radar.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Radar.java index 1b29467..1ced787 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Radar.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Radar.java @@ -7,26 +7,30 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.panels; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Scoreboard.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Scoreboard.java index 0d103d7..9226f37 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Scoreboard.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/panels/Scoreboard.java @@ -7,8 +7,15 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.panels; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.features.module.Modules; +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.NumberValue; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -20,29 +27,29 @@ import net.minecraft.world.scores.DisplaySlot; import net.minecraft.world.scores.Objective; import net.minecraft.world.scores.PlayerScoreEntry; import net.minecraft.world.scores.PlayerTeam; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.input.KeyManager; import dev.loki.lovisual.util.logging.ServerDumpUtil; -import dev.loki.lovisual.util.text.LegacyTextUtil; -import dev.loki.lovisual.util.text.TextRenderUtil; -import dev.loki.lovisual.util.text.TextRenderUtil.Part; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.TextRenderUtil; +import dev.loki.lovisual.util.text.format.TextRenderUtil.Part; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedInventoryHudPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedInventoryHudPanel.java index 2df773e..93082e3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedInventoryHudPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedInventoryHudPanel.java @@ -14,13 +14,13 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.item.ItemStack; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedListHudPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedListHudPanel.java index 48ebc6d..65f6cdc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedListHudPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedListHudPanel.java @@ -13,13 +13,13 @@ import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedTriangulatorHudPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedTriangulatorHudPanel.java index d22f0f1..2f4f104 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedTriangulatorHudPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/scripted/ScriptedTriangulatorHudPanel.java @@ -10,13 +10,13 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.scripted; import java.util.LinkedHashMap; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Fps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Fps.java index aded3af..50a5475 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Fps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Fps.java @@ -7,15 +7,20 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.stats; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -24,9 +29,9 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.FastFps; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Memory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Memory.java index ab7606b..3709010 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Memory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Memory.java @@ -7,15 +7,19 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.stats; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -24,9 +28,9 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Ping.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Ping.java index caa1a39..f42c79b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Ping.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Ping.java @@ -7,15 +7,19 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.stats; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -24,10 +28,10 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.NetworkStatsUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Tps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Tps.java index fa60a3c..7c743d3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Tps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/stats/Tps.java @@ -7,15 +7,20 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.stats; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; 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.script.CompactHudStatModel; @@ -24,10 +29,10 @@ import dev.loki.lovisual.features.gui.hud.script.ScriptedCompactHudStatRenderer; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.NetworkStatsUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import static dev.loki.lovisual.features.theme.Theme.theme; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Admins.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Admins.java index 20469f2..37abd4c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Admins.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Admins.java @@ -7,7 +7,11 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.status; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -18,11 +22,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; import net.minecraft.world.entity.player.Player; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.relations.StaffData; @@ -31,14 +35,14 @@ import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; -import dev.loki.lovisual.util.player.PlayerSkinResolver; -import dev.loki.lovisual.util.text.LegacyTextUtil; -import dev.loki.lovisual.util.text.TextRenderUtil; -import dev.loki.lovisual.util.text.TextRenderUtil.Part; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.TextRenderUtil; +import dev.loki.lovisual.util.text.format.TextRenderUtil.Part; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Armor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Armor.java index d4e19eb..46ae5e1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Armor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Armor.java @@ -7,7 +7,9 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.status; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -15,14 +17,14 @@ import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import dev.loki.lovisual.features.gui.hud.HudElementInfo; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.math.HudScale; 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; //todo Description @HudElementInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Cooldowns.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Cooldowns.java index 3c63b91..d137bb4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Cooldowns.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Cooldowns.java @@ -7,7 +7,11 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.status; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -18,27 +22,27 @@ import net.minecraft.util.Util; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; import dev.loki.lovisual.mixins.accessors.inventory.ItemCooldownEntryAccessor; import dev.loki.lovisual.mixins.accessors.inventory.ItemCooldownManagerAccessor; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.pvp.CooldownRegistry; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.PvpState; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.state.PvpState; import dev.loki.lovisual.util.pvp.client.CooldownsState; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Potions.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Potions.java index faed4ba..cf08144 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Potions.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/status/Potions.java @@ -7,7 +7,11 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.status; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -18,20 +22,20 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.util.Util; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.effect.MobEffectInstance; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHud.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHud.java index 383415a..2967a48 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHud.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHud.java @@ -7,15 +7,19 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.config.definition.SettingDef; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.render.engine.math.HudScale; 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.util.pvp.opponents.TotemPopCounter; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.entity.Entity; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudFormatter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudFormatter.java index 670b3b3..7a167a0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudFormatter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudFormatter.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud; -import dev.loki.lovisual.util.player.effect.StatusEffectTracker; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; import net.minecraft.resources.Identifier; import net.minecraft.world.effect.MobEffectInstance; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudTargetResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudTargetResolver.java index 167f5cc..9df123c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudTargetResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/TargetHudTargetResolver.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import dev.loki.lovisual.util.pvp.opponents.TotemPopCounter; import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; import dev.loki.lovisual.util.screen.ClientScreen; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudContentRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudContentRenderer.java index 50d52ec..60f7301 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudContentRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudContentRenderer.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.LivingEntity; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudPanelRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudPanelRenderer.java index fcf5f4d..3cb97be 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudPanelRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudPanelRenderer.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud.PANEL_RADIUS; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudRenderer.java index b29dfa4..69207c1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudRenderer.java @@ -7,16 +7,16 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; +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.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -28,10 +28,10 @@ import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHudMode import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHudModel.EquipmentLayout; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHudTargetResolver; -import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.TargetHudContentRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts.TargetHudEffectsRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts.TargetHudEquipmentRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts.TargetHudFaceRenderer; +import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.TargetHudContentRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.TargetHudPanelRenderer; public final class TargetHudRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudTextRenderer.java index f76e7c1..455d251 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/TargetHudTextRenderer.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.util.Util; import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudArcRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudArcRenderer.java index a38bea1..cb2d39c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudArcRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudArcRenderer.java @@ -15,13 +15,13 @@ import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.Target import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud.CONTENT_Y_OFFSET; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud.*; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEffectsRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEffectsRenderer.java index be28287..ce5ffb1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEffectsRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEffectsRenderer.java @@ -7,13 +7,13 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.effect.StatusEffectView; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectView; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; import net.minecraft.world.effect.MobEffectInstance; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEquipmentRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEquipmentRenderer.java index b197c39..0e70a92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEquipmentRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudEquipmentRenderer.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; 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 net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudFaceRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudFaceRenderer.java index a35d3f1..2b3b5e3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudFaceRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/targethud/render/parts/TargetHudFaceRenderer.java @@ -7,15 +7,15 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.player.PlayerSkinResolver; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -31,8 +31,8 @@ import java.util.UUID; import static dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud.*; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHudFormatter; -import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts.TargetHudEquipmentRenderer; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.TargetHudTextRenderer; +import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.render.parts.TargetHudEquipmentRenderer; public final class TargetHudFaceRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/TriangulatorView.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/TriangulatorView.java index 933ddb2..475d58f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/TriangulatorView.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/TriangulatorView.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver.CachedThrow; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver.SolveResult; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.model.DisplayState; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorMeasure.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorMeasure.java index 5bf67b5..74563da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorMeasure.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorMeasure.java @@ -9,7 +9,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.render; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver.CachedThrow; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.List; import dev.loki.lovisual.features.gui.hud.draggable.impl.Triangulator; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorPainter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorPainter.java index f7ac342..000d039 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorPainter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/impl/triangulator/render/TriangulatorPainter.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.render; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.HudTextEffects; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.base.HudTextEffects; import dev.loki.lovisual.features.gui.hud.draggable.impl.scripted.ScriptedTriangulatorHudPanel; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver.CachedThrow; import dev.loki.lovisual.features.gui.hud.draggable.impl.triangulator.TriangulatorSolver.SolveResult; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragController.java index 77a3742..1fb02ed 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragController.java @@ -8,16 +8,17 @@ package dev.loki.lovisual.features.gui.hud.draggable.interaction; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.HudAnchorX; -import dev.loki.lovisual.features.gui.hud.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.ChatScreen; import org.lwjgl.glfw.GLFW; +import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; /** * Обработка ввода drag-and-drop виджетов при открытом чате / drag-редакторе. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragSession.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragSession.java index 1ecacee..894adb4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragSession.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/interaction/RegistryDragSession.java @@ -8,12 +8,12 @@ package dev.loki.lovisual.features.gui.hud.draggable.interaction; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistrySnapSupport; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import net.minecraft.client.Minecraft; import java.util.HashSet; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryAnchorLayout.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryAnchorLayout.java index 53debfd..ba9f6ba 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryAnchorLayout.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryAnchorLayout.java @@ -7,7 +7,14 @@ package dev.loki.lovisual.features.gui.hud.draggable.registry; -import dev.loki.lovisual.features.gui.hud.*; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableLayoutValue; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.DraggableLayoutValue; import dev.loki.lovisual.render.engine.math.HudScale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistrySnapSupport.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistrySnapSupport.java index 75d286d..f17b19e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistrySnapSupport.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistrySnapSupport.java @@ -7,7 +7,14 @@ package dev.loki.lovisual.features.gui.hud.draggable.registry; -import dev.loki.lovisual.features.gui.hud.*; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; +import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistrySnapSupport; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryState.java index 696f27a..9490119 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryState.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.gui.hud.draggable.registry; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.theme.Themes; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryWidgetStore.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryWidgetStore.java index e02bf40..b076983 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryWidgetStore.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/registry/RegistryWidgetStore.java @@ -8,9 +8,16 @@ package dev.loki.lovisual.features.gui.hud.draggable.registry; import dev.loki.lovisual.Lifecycle; -import dev.loki.lovisual.features.gui.hud.*; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; +import dev.loki.lovisual.features.gui.hud.registry.HudElements; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.util.input.KeyManager; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryOverlayRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryOverlayRenderer.java index 16b924b..50e5e93 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryOverlayRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryOverlayRenderer.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.gui.hud.draggable.render; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistrySnapSupport; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; @@ -18,8 +18,8 @@ import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -45,7 +45,7 @@ public final class RegistryOverlayRenderer { } if (RegistryState.dragging == null) return; - TextRenderer coordRenderer = Fonts.renderer("Comfortaa", dev.loki.lovisual.render.engine.text.FontInfo.Type.Regular, + TextRenderer coordRenderer = Fonts.renderer("Comfortaa", dev.loki.lovisual.render.engine.text.font.info.FontInfo.Type.Regular, fallbackTextRenderer != null ? fallbackTextRenderer : TextRenderer.get()); if (coordRenderer == null) return; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryRenderPipeline.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryRenderPipeline.java index 3f77de3..53279b4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryRenderPipeline.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryRenderPipeline.java @@ -9,19 +9,29 @@ package dev.loki.lovisual.features.gui.hud.draggable.render; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.hud.*; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragController; import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryOverlayRenderer; +import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryRenderPipeline; +import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryResizeHandler; +import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; +import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragController; +import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; +import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; +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.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.Minecraft; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryResizeHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryResizeHandler.java index 7383396..66ff684 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryResizeHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryResizeHandler.java @@ -8,9 +8,9 @@ package dev.loki.lovisual.features.gui.hud.draggable.render; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.HudAnchorX; -import dev.loki.lovisual.features.gui.hud.HudAnchorY; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorX; +import dev.loki.lovisual.features.gui.hud.anchor.HudAnchorY; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryWidgetRenderPath.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryWidgetRenderPath.java index a3c4a53..02c5dcc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryWidgetRenderPath.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/draggable/render/RegistryWidgetRenderPath.java @@ -9,22 +9,23 @@ package dev.loki.lovisual.features.gui.hud.draggable.render; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElement; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.gui.hud.WidgetAnchorSide; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.anchor.WidgetAnchorSide; import dev.loki.lovisual.features.gui.hud.draggable.interaction.RegistryDragSession; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryAnchorLayout; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryState; import dev.loki.lovisual.features.gui.hud.draggable.registry.RegistryWidgetStore; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; +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.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import java.util.HashSet; +import dev.loki.lovisual.features.gui.hud.draggable.render.RegistryResizeHandler; /** * Путь отрисовки одиночного виджета по id (превью в редакторе и запросы движка). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementBootstrap.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementBootstrap.java index 480074f..57b9a7b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementBootstrap.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementBootstrap.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.gui.hud.nondraggable; -import dev.loki.lovisual.features.gui.hud.HudElementAutoLoader; +import dev.loki.lovisual.features.gui.hud.registry.HudElementAutoLoader; public enum StaticHudElementBootstrap { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementRegistry.java index 23061bc..d608fc2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/StaticHudElementRegistry.java @@ -9,18 +9,19 @@ package dev.loki.lovisual.features.gui.hud.nondraggable; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.render.engine.math.HudScale; 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.Lifecycle; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementBootstrap; /** * Registry for non-draggable (vanilla/static) HUD elements. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBar.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBar.java similarity index 74% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBar.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBar.java index 91ce4bd..32170f9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBar.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBar.java @@ -5,13 +5,22 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.definition.SettingDef; +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.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.primitive.StringValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.input.KeyManager; @@ -24,61 +33,71 @@ import java.util.*; import java.util.List; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.jump.CustomJumpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorRenderer; @HudElementRegister(order = 40) public final class CustomBar extends AbstractHudElement { - static final String COLOR_THEME = "Theme"; - static final String COLOR_CUSTOM = "Custom"; + public static final String COLOR_THEME = "Theme"; + public static final String COLOR_CUSTOM = "Custom"; public static final CustomBar INSTANCE = new CustomBar(); - static final float XP_BAR_WIDTH = 182f; - static final double XP_TEXT_SCALE = 0.59; - static final int XP_BAR_OFFSET = 2; - static final int XP_TEXT_OFFSET = 0; - static final float XP_BAR_HEIGHT = 5.0f; - static final float XP_BAR_RADIUS = 2.5f; - static final float BAR_SOFTNESS = 1.0f; - static final float BAR_BLUR_ALPHA = 0.72f; - static final float BAR_GLASS_ALPHA = 0.58f; - static final float BAR_TRACK_ALPHA = 0.54f; - static final float BAR_FILL_ALPHA = 0.82f; - static final float BAR_STROKE_ALPHA = 0.48f; - static final Identifier XP_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/experience_bar_background"); - static final Identifier XP_PROGRESS = Identifier.fromNamespaceAndPath("minecraft", "hud/experience_bar_progress"); - static final Identifier LOCATOR_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_background"); - static final Identifier JUMP_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_background"); - static final Identifier JUMP_COOLDOWN = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_cooldown"); - static final Identifier JUMP_PROGRESS = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_progress"); - static final float LOCATOR_BAR_HEIGHT = XP_BAR_HEIGHT; - static final int LOCATOR_TICK_COUNT = 6; - static final float LOCATOR_HEAD_SIZE = 6.5f; - static final float LOCATOR_HEAD_RADIUS = 1.6f; - static final float LOCATOR_HEAD_GAP = 0f; - static final float LOCATOR_HEAD_RANGE = XP_BAR_WIDTH - LOCATOR_HEAD_SIZE; - static final float LOCATOR_ANGLE_RANGE = 60f; - static final float LOCATOR_HEAD_SCALE_START = 24f; - static final float LOCATOR_HEAD_SCALE_END = 96f; - static final float LOCATOR_HEAD_MIN_SCALE = 0.7f; - static final float LOCATOR_OUTLINE_DISTANCE = 64f; - static final float LOCATOR_OUTLINE_MIN = 0.6f; - static final float LOCATOR_OUTLINE_MAX = 1.6f; - static final Identifier LOCATOR_ARROW_UP = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_arrow_up"); - static final Identifier LOCATOR_ARROW_DOWN = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_arrow_down"); - static final int LOCATOR_ARROW_W = 6; - static final int LOCATOR_ARROW_H = 4; - static final int LOCATOR_ARROW_GAP = 1; - static final float LOCATOR_LABEL_SCALE = 0.285f; - static final float LOCATOR_LABEL_PADDING_X = 3.0f; - static final float LOCATOR_LABEL_PADDING_Y = 2.0f; - static final float LOCATOR_LABEL_RADIUS = 4.8f; - static final float LOCATOR_LABEL_OFFSET = 3.4f; - static final float LOCATOR_LABEL_ANIM_SPEED = 14f; - static final float LOCATOR_LABEL_ROW_GAP = 0.35f; - static final float LOCATOR_LABEL_CHIP_PAD_X = 3.1f; - static final float LOCATOR_LABEL_CHIP_PAD_Y = 1.35f; - static final float LOCATOR_LABEL_CHIP_RADIUS = 3.6f; - static final float LOCATOR_LABEL_ACCENT_W = 1.15f; - static final int LOCATOR_LABEL_MAX_ROWS = 4; + public static final float XP_BAR_WIDTH = 182f; + + public static final double XP_TEXT_SCALE = 0.59; + public static final int XP_BAR_OFFSET = 2; + + public static final int XP_TEXT_OFFSET = 0; + public static final float XP_BAR_HEIGHT = 5.0f; + public static final float XP_BAR_RADIUS = 2.5f; + public static final float BAR_SOFTNESS = 1.0f; + public static final float BAR_BLUR_ALPHA = 0.72f; + public static final float BAR_GLASS_ALPHA = 0.58f; + public static final float BAR_TRACK_ALPHA = 0.54f; + public static final float BAR_FILL_ALPHA = 0.82f; + public static final float BAR_STROKE_ALPHA = 0.48f; + public static final Identifier XP_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/experience_bar_background"); + public static final Identifier XP_PROGRESS = Identifier.fromNamespaceAndPath("minecraft", "hud/experience_bar_progress"); + public static final Identifier LOCATOR_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_background"); + + public static final Identifier JUMP_BACKGROUND = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_background"); + public static final Identifier JUMP_COOLDOWN = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_cooldown"); + public static final Identifier JUMP_PROGRESS = Identifier.fromNamespaceAndPath("minecraft", "hud/jump_bar_progress"); + public static final float LOCATOR_BAR_HEIGHT = XP_BAR_HEIGHT; + + public static final int LOCATOR_TICK_COUNT = 6; + public static final float LOCATOR_HEAD_SIZE = 6.5f; + public static final float LOCATOR_HEAD_RADIUS = 1.6f; + public static final float LOCATOR_HEAD_GAP = 0f; + public static final float LOCATOR_HEAD_RANGE = XP_BAR_WIDTH - LOCATOR_HEAD_SIZE; + + public static final float LOCATOR_ANGLE_RANGE = 60f; + + public static final float LOCATOR_HEAD_SCALE_START = 24f; + public static final float LOCATOR_HEAD_SCALE_END = 96f; + public static final float LOCATOR_HEAD_MIN_SCALE = 0.7f; + public static final float LOCATOR_OUTLINE_DISTANCE = 64f; + public static final float LOCATOR_OUTLINE_MIN = 0.6f; + public static final float LOCATOR_OUTLINE_MAX = 1.6f; + public static final Identifier LOCATOR_ARROW_UP = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_arrow_up"); + public static final Identifier LOCATOR_ARROW_DOWN = Identifier.fromNamespaceAndPath("minecraft", "hud/locator_bar_arrow_down"); + public static final int LOCATOR_ARROW_W = 6; + public static final int LOCATOR_ARROW_H = 4; + public static final int LOCATOR_ARROW_GAP = 1; + public static final float LOCATOR_LABEL_SCALE = 0.285f; + public static final float LOCATOR_LABEL_PADDING_X = 3.0f; + public static final float LOCATOR_LABEL_PADDING_Y = 2.0f; + public static final float LOCATOR_LABEL_RADIUS = 4.8f; + public static final float LOCATOR_LABEL_OFFSET = 3.4f; + public static final float LOCATOR_LABEL_ANIM_SPEED = 14f; + public static final float LOCATOR_LABEL_ROW_GAP = 0.35f; + public static final float LOCATOR_LABEL_CHIP_PAD_X = 3.1f; + public static final float LOCATOR_LABEL_CHIP_PAD_Y = 1.35f; + public static final float LOCATOR_LABEL_CHIP_RADIUS = 3.6f; + public static final float LOCATOR_LABEL_ACCENT_W = 1.15f; + public static final int LOCATOR_LABEL_MAX_ROWS = 4; private final NumberValue overlayAlpha = new NumberValue<>("overlay_alpha", 255, 30, 255); @@ -100,13 +119,13 @@ public final class CustomBar extends AbstractHudElement { new RGBColorValue("xp_bar_text_color", "#A0E5FF"); private final EnumValue xpBarStyle = new EnumValue<>("xp_bar_style", CustomBarModel.XpBarStyle.GRADIENT, CustomBarModel.XpBarStyle.values()); - final RGBAColorValue customBgColor = + public final RGBAColorValue customBgColor = new RGBAColorValue("custom_bg_color", "#88151515"); - final RGBAColorValue customFillColor = + public final RGBAColorValue customFillColor = new RGBAColorValue("custom_fill_color", "#CC4CB2FF"); private final BooleanValue customFillGradient = new BooleanValue("custom_fill_gradient", true); - final RGBAColorValue customFillGradientColor = + public final RGBAColorValue customFillGradientColor = new RGBAColorValue("custom_fill_gradient_color", "#CC76F0FF"); private final NumberValue customFillGradientAngle = new NumberValue<>("custom_fill_gradient_angle", 0.0f, 0.0f, 360.0f); @@ -339,18 +358,18 @@ public final class CustomBar extends AbstractHudElement { return xpBar.get() && isCustomMode(); } - float getXpTextScale() { + public float getXpTextScale() { return (float) XP_TEXT_SCALE; } - int getXpTextArgb() { + public int getXpTextArgb() { if (isCustomXpStyleEnabled()) { return customTextColor.getArgb(); } return HudRenderUtil.mixColor(theme().textPrimary(), theme().accent(), 0.32f); } - boolean isCustomMode() { + public boolean isCustomMode() { return COLOR_CUSTOM.equals(colorMode.get()); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBarModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBarModel.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBarModel.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBarModel.java index 0737afa..4a737ea 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomBarModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomBarModel.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import dev.loki.lovisual.render.engine.color.RenderColor; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.resources.Identifier; @@ -89,10 +89,12 @@ public final class CustomBarModel { } } - record LocatorLabel(String name, String distance, float alpha, boolean target, boolean active, String sort) { + public record LocatorLabel(String name, String distance, float alpha, boolean target, boolean active, String sort) { + } - record BarColors(int track, + public record BarColors(int track, + int fillStart, int fillEnd, int stroke, @@ -101,17 +103,27 @@ public final class CustomBarModel { int locatorTexture) { } - static final class LocatorCandidate { - final TrackedWaypoint waypoint; - final UUID uuid; - final float yaw; - final float dist; - final String name; - final String nameSort; - final String key; - final String keySort; + public static final class LocatorCandidate { + + public final TrackedWaypoint waypoint; + + public final UUID uuid; + + public final float yaw; + + public final float dist; + + public final String name; + + public final String nameSort; + + public final String key; + + public final String keySort; + + + public LocatorCandidate(TrackedWaypoint waypoint, UUID uuid, float yaw, float dist, String name, String key) { - LocatorCandidate(TrackedWaypoint waypoint, UUID uuid, float yaw, float dist, String name, String key) { this.waypoint = waypoint; this.uuid = uuid; this.yaw = yaw; @@ -123,7 +135,8 @@ public final class CustomBarModel { } } - record LocatorHead(float x, float y, float size, float radius, AbstractClientPlayer player, + public record LocatorHead(float x, float y, float size, float radius, AbstractClientPlayer player, + Identifier skin, RenderColor color, RenderColor outlineColor, float outlineThickness, boolean target) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHealthBar.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomHealthBar.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHealthBar.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomHealthBar.java index e1919dc..78b3083 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHealthBar.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomHealthBar.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars; import java.util.LinkedHashMap; import net.minecraft.client.Minecraft; @@ -13,24 +13,24 @@ import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; import net.minecraft.util.Mth; import net.minecraft.util.Util; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.math.RenderMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomXpBarRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomXpBarRenderer.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomXpBarRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomXpBarRenderer.java index 12ec4cd..96cee49 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomXpBarRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/CustomXpBarRenderer.java @@ -5,28 +5,29 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBarModel.BarColors; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBarModel.XpTextInfo; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel.BarColors; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel.XpTextInfo; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; 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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; public final class CustomXpBarRenderer { private CustomXpBarRenderer() { } - static void renderXpBarBackground(Renderer2D r2d, Minecraft mc) { + public static void renderXpBarBackground(Renderer2D r2d, Minecraft mc) { if (mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; @@ -43,12 +44,12 @@ public final class CustomXpBarRenderer { drawVanillaGlassTrack(r2d, x, y, scale, progress, bm, false); } - static void drawXpBar(Renderer2D r2d, float barX, float barY, float scale, float progress, CustomBar bm) { + public static void drawXpBar(Renderer2D r2d, float barX, float barY, float scale, float progress, CustomBar bm) { if (r2d == null || bm == null) return; drawVanillaGlassTrack(r2d, barX, barY, scale, progress, bm, false); } - static void renderXpBarTexture(GuiGraphicsExtractor ctx, Minecraft mc) { + public static void renderXpBarTexture(GuiGraphicsExtractor ctx, Minecraft mc) { if (ctx == null || mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; @@ -67,7 +68,8 @@ public final class CustomXpBarRenderer { } } - static void drawVanillaGlassTrack(Renderer2D r2d, float barX, float barY, float scale, + public static void drawVanillaGlassTrack(Renderer2D r2d, float barX, float barY, float scale, + float progress, CustomBar bm, boolean locator) { if (r2d == null || bm == null) return; @@ -114,7 +116,8 @@ public final class CustomXpBarRenderer { r2d.roundedRectStroke(x, y, w, h, radius, BAR_SOFTNESS * scale, Math.max(0.65f, 0.72f * scale), stroke); } - static BarColors colors(CustomBar bm) { + public static BarColors colors(CustomBar bm) { + if (bm != null && bm.isCustomMode()) { int track = HudRenderUtil.scaleAlpha(bm.customBgColor.getArgb(), BAR_TRACK_ALPHA); @@ -141,10 +144,10 @@ public final class CustomXpBarRenderer { return new BarColors(track, fillStart, fillEnd, stroke, textureTrack, textureFill, locator); } - static int forceOpaque(int argb) { + public static int forceOpaque(int argb) { return 0xFF000000 | (argb & 0x00FFFFFF); } - static void renderXpBarText(GuiGraphicsExtractor ctx, Minecraft mc) { + public static void renderXpBarText(GuiGraphicsExtractor ctx, Minecraft mc) { if (mc == null || mc.player == null || ctx == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled() || !bm.isHotbarXpBarShowLevel()) return; @@ -161,13 +164,13 @@ public final class CustomXpBarRenderer { ctx.text(mc.font, text, x, y, color, false); } - static void renderPreview(Renderer2D r2d, float x, float y, float scale, float progress) { + public static void renderPreview(Renderer2D r2d, float x, float y, float scale, float progress) { CustomBar bm = CustomBar.get(); if (bm == null) return; drawXpBar(r2d, x, y, scale, progress, bm); } - static XpTextInfo buildPreviewText(float barX, float barY, float scale, int level) { + public static XpTextInfo buildPreviewText(float barX, float barY, float scale, int level) { CustomBar bm = CustomBar.get(); if (bm == null) return new XpTextInfo("", 0, 0, 0, (float) XP_TEXT_SCALE * scale); if (level <= 0) return new XpTextInfo("", 0, 0, 0, bm.getXpTextScale() * scale); @@ -188,7 +191,8 @@ public final class CustomXpBarRenderer { return new XpTextInfo(text, tx, ty, color, textScale); } - static int applyBarAlpha(int argb, CustomBar bm) { + public static int applyBarAlpha(int argb, CustomBar bm) { + if (bm == null) return argb; int a = (argb >>> 24) & 0xFF; int na = (int) (a * bm.getHudOverlayAlphaFactor()); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomJumpBarRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/jump/CustomJumpBarRenderer.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomJumpBarRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/jump/CustomJumpBarRenderer.java index 9ebcb4e..034f26c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomJumpBarRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/bars/jump/CustomJumpBarRenderer.java @@ -5,29 +5,33 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.jump; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBarModel.BarColors; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel.BarColors; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; public final class CustomJumpBarRenderer { private CustomJumpBarRenderer() { } - static boolean shouldUseJumpBar(Minecraft mc) { + public static boolean shouldUseJumpBar(Minecraft mc) { + if (mc == null || mc.player == null) return false; var mount = mc.player.jumpableVehicle(); return mount != null && (mc.player.getJumpRidingScale() > 0.0f || mount.getJumpCooldown() > 0); } - static void renderJumpBarBackground(Renderer2D r2d, Minecraft mc) { + public static void renderJumpBarBackground(Renderer2D r2d, Minecraft mc) { + if (mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; @@ -40,7 +44,8 @@ public final class CustomJumpBarRenderer { CustomXpBarRenderer.drawVanillaGlassTrack(r2d, x, y, scale, progress, bm, false); } - static void renderJumpBarTexture(GuiGraphicsExtractor ctx, Minecraft mc) { + public static void renderJumpBarTexture(GuiGraphicsExtractor ctx, Minecraft mc) { + if (ctx == null || mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterButtons.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/BetterButtons.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterButtons.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/BetterButtons.java index 3bf5d1b..88dea00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterButtons.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/BetterButtons.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -20,31 +20,32 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Util; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.mixininterface.IRoundedHitbox; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.mixininterface.entity.IRoundedHitbox; import dev.loki.lovisual.mixins.accessors.widget.ClickableWidgetAccessor; import dev.loki.lovisual.mixins.accessors.hud.TextIconButtonWidgetAccessor; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.util.text.LegacyTextUtil; -import dev.loki.lovisual.util.text.TextRenderUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.TextRenderUtil; import java.util.*; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; @HudElementRegister(order = 10) public final class BetterButtons extends AbstractHudElement { @@ -965,7 +966,7 @@ public final class BetterButtons extends AbstractHudElement { } private interface RenderCall { - void render(GuiGraphicsExtractor ctx); + public void render(GuiGraphicsExtractor ctx); } private record ButtonParallax(float yawDeg, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/SwapTooltip.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/SwapTooltip.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/SwapTooltip.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/SwapTooltip.java index 232af97..9695ca8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/SwapTooltip.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/buttons/SwapTooltip.java @@ -5,21 +5,21 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.Minecraft; import net.minecraft.util.Util; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/DynamicIsland.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/DynamicIsland.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/DynamicIsland.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/DynamicIsland.java index 61957ad..70bfbec 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/DynamicIsland.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/DynamicIsland.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -15,44 +15,44 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.resources.Identifier; import net.minecraft.util.Util; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandBoundsPatches; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandRuntimePatches; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandUiUtil; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls.IslandUiUtil; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls.IslandControls; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; -import dev.loki.lovisual.features.module.HudPhase; +import dev.loki.lovisual.features.module.phase.HudPhase; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -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.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.math.HudScale; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptProps; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptProps; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.Lifecycle; -import dev.loki.lovisual.util.media.MediaSessionService; -import dev.loki.lovisual.util.pvp.PvpState; +import dev.loki.lovisual.util.media.session.MediaSessionService; +import dev.loki.lovisual.util.pvp.state.PvpState; import java.time.LocalTime; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandBoundsPatches.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandBoundsPatches.java index 1cace62..d7b01a1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandBoundsPatches.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandBoundsPatches.java @@ -9,13 +9,14 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls.IslandControls; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiBoundsPatchSet; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch.UiBoundsPatchSet; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptProps; import net.minecraft.util.Util; import java.util.Map; import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandPatchOps.*; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandPatchOps; /** * Bounds-патчи узлов UI-скрипта Dynamic Island по режимам (time/pvp/music/clickgui). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandPatchOps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandPatchOps.java index 9a87d2b..047a867 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandPatchOps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandPatchOps.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiBoundsPatchSet; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptColor; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptPatchSet; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch.UiBoundsPatchSet; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch.UiScriptColor; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch.UiScriptPatchSet; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptProps; /** * Примитивы патчинга UI-скрипта: текст, изображения, формы и bounds-патчи. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandRuntimePatches.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandRuntimePatches.java index 35d35bb..c3f3ac1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandRuntimePatches.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandRuntimePatches.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptPatchSet; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch.UiScriptPatchSet; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptProps; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandControls.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandControls.java index 637fec8..7908fcf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandControls.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandControls.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.IslandUiUtil; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls.IslandUiUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.media.MediaSessionService; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.media.session.MediaSessionService; import net.minecraft.client.Minecraft; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandUiUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandUiUtil.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandUiUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandUiUtil.java index fac6da2..817e74b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/IslandUiUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/dynamicisland/controls/IslandUiUtil.java @@ -5,17 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.controls; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.misc.ClickGui; import dev.loki.lovisual.mixins.accessors.hud.BossHealthOverlayAccessor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.media.MediaSessionService; -import dev.loki.lovisual.util.media.RepeatMode; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.media.session.MediaSessionService; +import dev.loki.lovisual.util.media.info.RepeatMode; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.BossHealthOverlay; import net.minecraft.client.gui.components.LerpingBossEvent; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHotbar.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/hotbar/CustomHotbar.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHotbar.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/hotbar/CustomHotbar.java index b92be44..3a2c35a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomHotbar.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/hotbar/CustomHotbar.java @@ -5,22 +5,27 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.hotbar; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; import net.minecraft.util.Util; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.player.Animations; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.mixins.accessors.inventory.PlayerInventoryAccessor; import dev.loki.lovisual.render.engine.animation.AnimationUtility; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorCollector.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorCollector.java similarity index 68% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorCollector.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorCollector.java index e9b1404..b948bbf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorCollector.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorCollector.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -19,13 +19,17 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorResolver; public final class CustomLocatorCollector { private CustomLocatorCollector() { } - static List collect(Minecraft mc, CustomBar bm, TrackedWaypoint.Camera yawProvider, + public static List collect(Minecraft mc, CustomBar bm, TrackedWaypoint.Camera yawProvider, + PartialTickSupplier tickProgress, Set mapPlayers, ClientWaypointManager handler) { List candidates = new ArrayList<>(); @@ -55,36 +59,38 @@ public final class CustomLocatorCollector { return candidates; } - static boolean isSourcePlayer(LocalPlayer player, TrackedWaypoint waypoint) { + public static boolean isSourcePlayer(LocalPlayer player, TrackedWaypoint waypoint) { if (player == null || waypoint == null) return false; return waypoint.id().left() .map(uuid -> uuid.equals(player.getUUID())) .orElse(false); } - static String locatorLabelKey(TrackedWaypoint waypoint, UUID uuid) { + public static String locatorLabelKey(TrackedWaypoint waypoint, UUID uuid) { if (uuid != null) return uuid.toString(); return waypoint.id().right().orElse(null); } - static final class Pass { - final GuiGraphicsExtractor ctx; - final Minecraft mc; - final CustomBar bm; - final PartialTickSupplier tickProgress; - final float barY; - final int startX; - final boolean drawArrows; - final boolean drawHeads; - final boolean labelsEnabled; - final CustomBarModel.LocatorLabelMode labelMode; - final float labelAngle; - final float dt; - final Set seenLabels; - final List labels; - final List heads; + public static final class Pass { + + public final GuiGraphicsExtractor ctx; + public final Minecraft mc; + public final CustomBar bm; + public final PartialTickSupplier tickProgress; + public final float barY; + public final int startX; + public final boolean drawArrows; + public final boolean drawHeads; + public final boolean labelsEnabled; + public final CustomBarModel.LocatorLabelMode labelMode; + public final float labelAngle; + public final float dt; + public final Set seenLabels; + public final List labels; + public final List heads; + + public Pass(GuiGraphicsExtractor ctx, Minecraft mc, CustomBar bm, PartialTickSupplier tickProgress, - Pass(GuiGraphicsExtractor ctx, Minecraft mc, CustomBar bm, PartialTickSupplier tickProgress, float barY, int startX, boolean drawArrows, boolean drawHeads, boolean labelsEnabled, CustomBarModel.LocatorLabelMode labelMode, float labelAngle, float dt, Set seenLabels, List labels, List heads) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorHeads.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorHeads.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorHeads.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorHeads.java index 53ab683..2308164 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorHeads.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorHeads.java @@ -5,21 +5,26 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; import net.minecraft.client.gui.GuiGraphicsExtractor; import java.util.List; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorRenderer; public final class CustomLocatorHeads { private CustomLocatorHeads() { } - static void render(GuiGraphicsExtractor ctx, CustomBar bm, List heads, float scale) { + public static void render(GuiGraphicsExtractor ctx, CustomBar bm, List heads, float scale) { + boolean startedHeadsBatch = CustomLocatorRenderer.beginOwnedColorBatch(); try { for (int i = heads.size() - 1; i >= 0; i--) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabelCache.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelCache.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabelCache.java index eba516b..26c7b49 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabelCache.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator; import dev.loki.lovisual.render.engine.animation.AnimationUtility; @@ -14,7 +14,8 @@ import java.util.List; import java.util.Map; import java.util.Set; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; public final class CustomLocatorLabelCache { @@ -24,7 +25,8 @@ public final class CustomLocatorLabelCache { private CustomLocatorLabelCache() { } - static float updateAnim(String key, float target, float dt) { + public static float updateAnim(String key, float target, float dt) { + float current = ANIM.getOrDefault(key, 0f); float next = AnimationUtility.approach(current, target, dt, LOCATOR_LABEL_ANIM_SPEED); next = AnimationUtility.snap(next, target, 0.01f); @@ -32,11 +34,13 @@ public final class CustomLocatorLabelCache { return next; } - static void cache(String key, CustomBarModel.LocatorLabel label) { + public static void cache(String key, CustomBarModel.LocatorLabel label) { + CACHE.put(key, label); } - static void decay(Set seen, float dt) { + public static void decay(Set seen, float dt) { + if (ANIM.isEmpty()) return; var it = ANIM.entrySet().iterator(); while (it.hasNext()) { @@ -53,7 +57,8 @@ public final class CustomLocatorLabelCache { } } - static void appendCached(List labels) { + public static void appendCached(List labels) { + if (labels == null || CACHE.isEmpty()) return; for (Map.Entry entry : CACHE.entrySet()) { float alpha = ANIM.getOrDefault(entry.getKey(), 0f); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabels.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabels.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabels.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabels.java index 099966e..9a4e36c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabels.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/CustomLocatorLabels.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.ColorMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; @@ -20,15 +20,21 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorLabelPanel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorRenderer; public final class CustomLocatorLabels { private CustomLocatorLabels() { } - static void render(GuiGraphicsExtractor ctx, CustomBar bm, float screenW, float barY, float scale, + public static void render(GuiGraphicsExtractor ctx, CustomBar bm, float screenW, float barY, float scale, + List labels) { TextRenderer tr = Fonts.renderer("Iosevka"); Renderer2D r2d = Renderer2D.COLOR; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorLabelPanel.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelPanel.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorLabelPanel.java index eecc79e..6b1291a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorLabelPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorLabelPanel.java @@ -5,21 +5,25 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel; import dev.loki.lovisual.render.engine.math.ColorMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import net.minecraft.util.Mth; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; public final class CustomLocatorLabelPanel { private CustomLocatorLabelPanel() { } - static void drawPanel(Renderer2D r2d, CustomBar bm, float x, float y, float w, float h, + public static void drawPanel(Renderer2D r2d, CustomBar bm, float x, float y, float w, float h, + float radius, float scale, float alpha, boolean hasTarget) { if (r2d == null || alpha <= 0.001f || w <= 0f || h <= 0f) return; @@ -68,7 +72,8 @@ public final class CustomLocatorLabelPanel { ); } - static void drawRow(Renderer2D r2d, CustomBar bm, CustomBarModel.LocatorLabel label, + public static void drawRow(Renderer2D r2d, CustomBar bm, CustomBarModel.LocatorLabel label, + float x, float y, float w, float h, float radius, float scale, float alpha) { if (r2d == null || label == null || alpha <= 0.001f || w <= 0f || h <= 0f) return; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorMarkers.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorMarkers.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorMarkers.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorMarkers.java index 1670e3c..f28b106 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorMarkers.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorMarkers.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; @@ -18,14 +18,20 @@ import net.minecraft.world.waypoints.TrackedWaypoint; import java.util.Locale; import java.util.UUID; -import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar.*; +import static dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar.*; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorCollector; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorLabelCache; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorResolver; public final class CustomLocatorMarkers { private CustomLocatorMarkers() { } - static void process(CustomLocatorCollector.Pass pass, CustomBarModel.LocatorCandidate candidate) { + public static void process(CustomLocatorCollector.Pass pass, CustomBarModel.LocatorCandidate candidate) { CustomBar bm = pass.bm; Minecraft mc = pass.mc; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorRenderer.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorRenderer.java index c4ab01a..30cd6bc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorRenderer.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.map.MapPlayersCache; @@ -26,13 +26,22 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBarModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomXpBarRenderer; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorCollector; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorHeads; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorLabelCache; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.CustomLocatorLabels; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel.CustomLocatorMarkers; public final class CustomLocatorRenderer { private CustomLocatorRenderer() { } - static void renderLocatorBackground(Renderer2D r2d, Minecraft mc) { + public static void renderLocatorBackground(Renderer2D r2d, Minecraft mc) { + if (mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; @@ -46,7 +55,8 @@ public final class CustomLocatorRenderer { CustomXpBarRenderer.drawVanillaGlassTrack(r2d, x, y, scale, 1.0f, bm, true); } - static void renderLocatorTexture(GuiGraphicsExtractor ctx, Minecraft mc) { + public static void renderLocatorTexture(GuiGraphicsExtractor ctx, Minecraft mc) { + if (ctx == null || mc == null || mc.player == null) return; CustomBar bm = CustomBar.get(); if (bm == null || !bm.isHudBarEnabled() || !bm.isHotbarXpBarEnabled()) return; @@ -56,19 +66,22 @@ public final class CustomLocatorRenderer { CustomXpBarRenderer.applyBarAlpha(CustomXpBarRenderer.colors(bm).locatorTexture(), bm)); } - static void renderLocatorArrows(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + public static void renderLocatorArrows(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + renderLocatorMarkers(ctx, tickCounter, mc, true, false); } - static void renderLocatorHeads(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + public static void renderLocatorHeads(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + renderLocatorMarkers(ctx, tickCounter, mc, false, true); } - static void renderLocatorMarkers(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + public static void renderLocatorMarkers(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc) { + renderLocatorMarkers(ctx, tickCounter, mc, true, true); } - static void renderLocatorMarkers(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc, + public static void renderLocatorMarkers(GuiGraphicsExtractor ctx, DeltaTracker tickCounter, Minecraft mc, boolean drawArrows, boolean drawHeads) { if (ctx == null || mc == null || mc.player == null || mc.level == null) return; CustomBar bm = CustomBar.get(); @@ -154,7 +167,8 @@ public final class CustomLocatorRenderer { } } - static boolean beginOwnedColorBatch() { + public static boolean beginOwnedColorBatch() { + if (Renderer2D.UI_BATCHER.isActive()) { return false; } @@ -162,7 +176,8 @@ public final class CustomLocatorRenderer { return true; } - static void renderOwnedColorBatch(boolean owned) { + public static void renderOwnedColorBatch(boolean owned) { + if (owned) { Renderer2D.COLOR.render(); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorResolver.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorResolver.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorResolver.java index 3fbfbe2..7ad88bd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/CustomLocatorResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/locator/panel/CustomLocatorResolver.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.locator.panel; import com.mojang.authlib.GameProfile; -import dev.loki.lovisual.util.player.PlayerSkinResolver; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.player.AbstractClientPlayer; @@ -19,13 +19,14 @@ import net.minecraft.world.waypoints.TrackedWaypoint; import java.nio.charset.StandardCharsets; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; public final class CustomLocatorResolver { private CustomLocatorResolver() { } - static int resolveWaypointColor(TrackedWaypoint waypoint) { + public static int resolveWaypointColor(TrackedWaypoint waypoint) { CustomBar bm = CustomBar.get(); UUID wpUuid = waypoint.id().left().orElse(null); @@ -53,13 +54,13 @@ public final class CustomLocatorResolver { return 0xFF000000 | (rgb & 0x00FFFFFF); } - static AbstractClientPlayer resolveWaypointPlayer(Minecraft mc, UUID uuid) { + public static AbstractClientPlayer resolveWaypointPlayer(Minecraft mc, UUID uuid) { if (mc == null || mc.level == null || uuid == null) return null; var player = mc.level.getPlayerByUUID(uuid); return player instanceof AbstractClientPlayer clientPlayer ? clientPlayer : null; } - static Identifier resolveWaypointSkin(Minecraft mc, UUID uuid, TrackedWaypoint waypoint) { + public static Identifier resolveWaypointSkin(Minecraft mc, UUID uuid, TrackedWaypoint waypoint) { GameProfile profile = null; if (mc != null && mc.getConnection() != null && uuid != null) { PlayerInfo entry = mc.getConnection().getPlayerInfo(uuid); @@ -82,7 +83,8 @@ public final class CustomLocatorResolver { return PlayerSkinResolver.resolveProfileSkin(profile); } - static String getWaypointName(Minecraft mc, TrackedWaypoint waypoint, UUID uuid) { + public static String getWaypointName(Minecraft mc, TrackedWaypoint waypoint, UUID uuid) { + if (mc != null && mc.getConnection() != null && uuid != null) { PlayerInfo entry = mc.getConnection().getPlayerInfo(uuid); if (entry != null && entry.getProfile() != null) { @@ -96,27 +98,27 @@ public final class CustomLocatorResolver { return uuid != null ? uuid.toString() : null; } - static boolean isLocatorTarget(UUID wpUuid, CustomBar bm) { + public static boolean isLocatorTarget(UUID wpUuid, CustomBar bm) { if (bm == null || wpUuid == null || !bm.isLocatorSearchEnabled()) return false; Set targets = bm.getLocatorSearchPlayers(); if (targets == null || targets.isEmpty()) return false; return isPlayerInTargets(wpUuid, targets); } - static boolean isLocatorDimmed(UUID wpUuid, CustomBar bm) { + public static boolean isLocatorDimmed(UUID wpUuid, CustomBar bm) { if (bm == null || wpUuid == null || !bm.isLocatorSearchEnabled()) return false; Set targets = bm.getLocatorSearchPlayers(); if (targets == null || targets.isEmpty()) return false; return !isPlayerInTargets(wpUuid, targets); } - static UUID offlineUuid(String name) { + public static UUID offlineUuid(String name) { if (name == null || name.isBlank()) return new UUID(0L, 0L); String key = "OfflinePlayer:" + name; return UUID.nameUUIDFromBytes(key.getBytes(StandardCharsets.UTF_8)); } - static boolean isPlayerInTargets(UUID wpUuid, Set targets) { + public static boolean isPlayerInTargets(UUID wpUuid, Set targets) { Minecraft mc = Minecraft.getInstance(); if (mc == null || mc.getConnection() == null) return false; @@ -139,7 +141,7 @@ public final class CustomLocatorResolver { return false; } - static PlayerInfo findEntryByName(Minecraft mc, String name) { + public static PlayerInfo findEntryByName(Minecraft mc, String name) { for (PlayerInfo e : mc.getConnection().getOnlinePlayers()) { if (e.getProfile() != null && e.getProfile().name().equalsIgnoreCase(name)) { @@ -149,17 +151,17 @@ public final class CustomLocatorResolver { return null; } - static int colorFromUuid(UUID uuid) { + public static int colorFromUuid(UUID uuid) { if (uuid == null) return 0xFFFFFFFF; return colorFromHash(uuid.hashCode()); } - static int colorFromName(String name) { + public static int colorFromName(String name) { if (name == null) return 0xFFFFFFFF; return colorFromHash(name.hashCode()); } - static int colorFromHash(int hash) { + public static int colorFromHash(int hash) { float hue = (hash & 0xFFFF) / 65535.0f; int rgb = Mth.hsvToRgb(hue, 0.9f, 0.9f); return rgb & 0x00FFFFFF; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/ReachDisplay.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/ReachDisplay.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/ReachDisplay.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/ReachDisplay.java index 5e1a400..45c951a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/ReachDisplay.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/ReachDisplay.java @@ -5,22 +5,22 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.overlay; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.combat.ReachMeter; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.combat.tracking.ReachMeter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/Watermark.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/Watermark.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/Watermark.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/Watermark.java index bbe5f6a..eaa6653 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/Watermark.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/overlay/Watermark.java @@ -5,23 +5,23 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.overlay; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.HudScale; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.FastFps; -import dev.loki.lovisual.util.player.NetworkStatsUtil; +import dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -67,7 +67,7 @@ public final class Watermark extends AbstractHudElement { return INSTANCE; } - static String brandLine() { + public static String brandLine() { return FabricLoader.getInstance().getModContainer("lovisual") .map(container -> container.getMetadata().getVersion().getFriendlyString()) .orElse(""); @@ -159,7 +159,7 @@ public final class Watermark extends AbstractHudElement { height = boxH; } - static String joinMeta(String... parts) { + public static String joinMeta(String... parts) { StringBuilder sb = new StringBuilder(); for (String part : parts) { if (part == null || part.isBlank()) continue; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/CustomTabList.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/CustomTabList.java index fa674e3..894a906 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/CustomTabList.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/CustomTabList.java @@ -7,26 +7,26 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderSpace; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.module.HudPhase; -import dev.loki.lovisual.features.relations.CategoryType; -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.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.anchor.HudRenderSpace; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.relations.category.CategoryType; +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.math.HudScale; -import dev.loki.lovisual.render.helpers.TickDelta; +import dev.loki.lovisual.render.helpers.util.TickDelta; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; import dev.loki.lovisual.Lifecycle; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -39,6 +39,10 @@ import net.minecraft.util.Util; import java.util.List; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab.TabListAnimator; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab.TabListModel; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab.TabRichTextRenderer; @HudElementRegister(order = 95) public final class CustomTabList extends AbstractHudElement { @@ -156,7 +160,7 @@ public final class CustomTabList extends AbstractHudElement { @Override public void renderEngineForeground(Renderer2D renderer, - dev.loki.lovisual.render.engine.text.TextRenderer textRenderer, + dev.loki.lovisual.render.engine.text.render.TextRenderer textRenderer, GuiGraphicsExtractor ctx, float tickDelta, int screenW, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListAnimator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListAnimator.java index 6222994..ca8edda 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListAnimator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListAnimator.java @@ -19,18 +19,18 @@ public final class TabListAnimator { private final Map rows = new HashMap<>(); private float panelPresence; - float updatePanel(boolean visible) { + public float updatePanel(boolean visible) { float dt = AnimationUtility.deltaTime(); panelPresence = AnimationUtility.approach(panelPresence, visible ? 1f : 0f, dt, 11f); panelPresence = AnimationUtility.snap(panelPresence, visible ? 1f : 0f, 0.002f); return panelPresence; } - RowState row(UUID id) { + public RowState row(UUID id) { return rows.computeIfAbsent(id, ignored -> new RowState()); } - void updateRows(Set visibleIds) { + public void updateRows(Set visibleIds) { float dt = AnimationUtility.deltaTime(); Set live = visibleIds != null ? visibleIds : Set.of(); for (UUID id : live) { @@ -52,14 +52,14 @@ public final class TabListAnimator { } } - boolean hasVisibleRows() { + public boolean hasVisibleRows() { for (RowState state : rows.values()) { if (state.presence > 0.01f) return true; } return false; } - static final class RowState { - float presence; + public static final class RowState { + public float presence; } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListModel.java index 1fe72f4..39bcf4c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabListModel.java @@ -8,11 +8,11 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab; import com.mojang.authlib.GameProfile; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.mixins.accessors.hud.PlayerTabOverlayAccessor; -import dev.loki.lovisual.util.player.PlayerSkinResolver; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.PlayerTabOverlay; import net.minecraft.client.multiplayer.PlayerInfo; @@ -35,6 +35,7 @@ import java.util.List; import java.util.Locale; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab.TabRichTextRenderer; public final class TabListModel { private static final int MAX_PLAYERS = 80; @@ -62,15 +63,15 @@ public final class TabListModel { private TabListModel() { } - static int maxPlayers() { + public static int maxPlayers() { return MAX_PLAYERS; } - static int maxRowsPerColumn() { + public static int maxRowsPerColumn() { return MAX_ROWS_PER_COLUMN; } - static Snapshot collect(Minecraft mc, int screenW) { + public static Snapshot collect(Minecraft mc, int screenW) { if (mc == null || mc.getConnection() == null) return Snapshot.empty(); PlayerTabOverlay overlay = mc.gui != null && mc.gui.hud != null ? mc.gui.hud.getTabList() : null; @@ -160,7 +161,7 @@ public final class TabListModel { columnGap, rowTop, headerTop, headerHeight, footerTop, footerHeight, width, height); } - static Snapshot refreshDynamic(Minecraft mc, Snapshot previous) { + public static Snapshot refreshDynamic(Minecraft mc, Snapshot previous) { if (mc == null || mc.getConnection() == null || previous == null || previous.entries().isEmpty()) return previous; Objective listObjective = listObjective(mc); List entries = new ArrayList<>(previous.entries().size()); @@ -180,7 +181,7 @@ public final class TabListModel { return previous.withEntries(entries); } - static long structureSignature(Minecraft mc, int screenW) { + public static long structureSignature(Minecraft mc, int screenW) { if (mc == null || mc.getConnection() == null) return 0L; long h = 0x6A09E667F3BCC909L; h = mix(h, screenW); @@ -441,7 +442,7 @@ public final class TabListModel { return mix(h, value != null ? value.getString() : ""); } - record Entry(UUID id, + public record Entry(UUID id, String name, Component displayName, Identifier skin, @@ -494,7 +495,7 @@ public final class TabListModel { } } - record Snapshot(List entries, + public record Snapshot(List entries, Set visibleIds, Component header, Component footer, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabRichTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabRichTextRenderer.java index eeb7230..c0fa088 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabRichTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tab/TabRichTextRenderer.java @@ -9,11 +9,11 @@ package dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextGlyphFallback; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.glyph.TextGlyphFallback; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.WeakHashMap; +import dev.loki.lovisual.features.gui.clickgui.ClickGuiModel.TextHeightKey; public final class TabRichTextRenderer { private static final RenderColor TMP = new RenderColor(255, 255, 255, 255); @@ -35,7 +36,7 @@ public final class TabRichTextRenderer { private TabRichTextRenderer() { } - static void draw(Renderer2D renderer, + public static void draw(Renderer2D renderer, Component component, float x, float y, @@ -59,7 +60,7 @@ public final class TabRichTextRenderer { } } - static float width(Component component, float size) { + public static float width(Component component, float size) { float out = 0f; for (Segment segment : flatten(component)) { out += width(font(segment.style()), segment.text(), size); @@ -67,11 +68,11 @@ public final class TabRichTextRenderer { return out; } - static float widthPlain(String text, float size) { + public static float widthPlain(String text, float size) { return width(font(Style.EMPTY), text, size); } - static void drawPlain(Renderer2D renderer, + public static void drawPlain(Renderer2D renderer, String text, float x, float y, @@ -86,7 +87,7 @@ public final class TabRichTextRenderer { drawString(renderer, font, fitted, x, y, size, color, true); } - static float height(float size) { + public static float height(float size) { return height(font(Style.EMPTY), size); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterTooltips.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tooltips/BetterTooltips.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterTooltips.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tooltips/BetterTooltips.java index 08c57ef..88364db 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/BetterTooltips.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/nondraggable/impl/tooltips/BetterTooltips.java @@ -5,10 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud.nondraggable.impl; +package dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.color.KeyBindValue; +import dev.loki.lovisual.config.values.mode.BindMode; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipPositioner; @@ -21,33 +27,34 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.ItemContainerContents; import net.minecraft.world.level.block.ShulkerBoxBlock; import org.joml.Vector2ic; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.features.gui.hud.AbstractHudElement; -import dev.loki.lovisual.features.gui.hud.HudElementRegister; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.input.KeyManager; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import java.util.LinkedHashMap; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; @HudElementRegister(order = 20) public final class BetterTooltips extends AbstractHudElement { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoader.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementAutoLoader.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoader.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementAutoLoader.java index f8c1e7c..607d70e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoader.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementAutoLoader.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.registry; import io.github.classgraph.ClassGraph; import io.github.classgraph.ClassInfo; @@ -21,6 +21,9 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.features.gui.hud.base.AbstractHudElement; +import dev.loki.lovisual.features.gui.hud.registry.HudElementInfo; +import dev.loki.lovisual.features.gui.hud.registry.HudElementRegister; public enum HudElementAutoLoader { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementInfo.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementInfo.java index 7f961d3..3f70c8a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementInfo.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.registry; import dev.loki.lovisual.events.meta.UsedImplicitly; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementRegister.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementRegister.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementRegister.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementRegister.java index f614f1b..1037cb9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElementRegister.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElementRegister.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.registry; import dev.loki.lovisual.events.meta.UsedImplicitly; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElements.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElements.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElements.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElements.java index 2307a2e..08a4b22 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/HudElements.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/registry/HudElements.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.gui.hud; +package dev.loki.lovisual.features.gui.hud.registry; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.features.gui.hud.config.HudGlobalConfig; +import dev.loki.lovisual.features.gui.hud.registry.HudElementAutoLoader; /** * HUD widget bootstrapper. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/CompactHudStatModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/CompactHudStatModel.java index ea3e874..937f36b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/CompactHudStatModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/CompactHudStatModel.java @@ -9,6 +9,7 @@ package dev.loki.lovisual.features.gui.hud.script; import java.util.LinkedHashMap; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; +import dev.loki.lovisual.render.engine.text.font.Font; /** * Mutable frame snapshot for compact stat widgets such as FPS, TPS, ping, and game time. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/HudScriptLayouts.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/HudScriptLayouts.java index b7af562..5a3058e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/HudScriptLayouts.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/HudScriptLayouts.java @@ -11,10 +11,19 @@ import net.minecraft.client.Minecraft; import net.minecraft.server.packs.resources.ResourceManager; import org.lwjgl.glfw.GLFW; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.*; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry.UiScriptModuleRegistry; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; import dev.loki.lovisual.util.logging.DebugLog; import java.util.LinkedHashMap; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry.UiScriptModuleRegistry; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; public enum HudScriptLayouts { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptableHudStatWidget.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptableHudStatWidget.java index 154bf31..7f58fcf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptableHudStatWidget.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptableHudStatWidget.java @@ -6,6 +6,7 @@ */ package dev.loki.lovisual.features.gui.hud.script; +import dev.loki.lovisual.features.gui.hud.script.CompactHudStatModel; public interface ScriptableHudStatWidget { CompactHudStatModel compactStatModel(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptedCompactHudStatRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptedCompactHudStatRenderer.java index cc45ae9..527ae26 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptedCompactHudStatRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/hud/script/ScriptedCompactHudStatRenderer.java @@ -10,13 +10,15 @@ package dev.loki.lovisual.features.gui.hud.script; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiProjectionMode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.CachedUiScriptRuntime; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModule; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.UiScriptModuleHandle; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.CachedUiScriptRuntime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.features.gui.hud.script.CompactHudStatModel; +import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; public final class ScriptedCompactHudStatRenderer { public static final ScriptedCompactHudStatRenderer INSTANCE = new ScriptedCompactHudStatRenderer(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAddonManagerScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAddonManagerScreen.java index 8484458..e433346 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAddonManagerScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAddonManagerScreen.java @@ -8,23 +8,23 @@ package dev.loki.lovisual.features.gui.mainmenu; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.addon.AddonIssue; -import dev.loki.lovisual.addon.AddonManager; -import dev.loki.lovisual.addon.AddonSnapshot; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +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.config.i18n.MainConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.postprocess.MenuBackgroundRenderer; +import dev.loki.lovisual.render.engine.postprocess.render.MenuBackgroundRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import dev.loki.lovisual.util.screen.ClientScreen; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAltManagerScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAltManagerScreen.java deleted file mode 100644 index 3e2860a..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualAltManagerScreen.java +++ /dev/null @@ -1,1113 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.features.gui.mainmenu; - -import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.util.screen.ClientScreen; -import dev.loki.lovisual.util.session.MicrosoftSessionResult; -import dev.loki.lovisual.util.session.microsoft.MicrosoftAuthService; -import dev.loki.lovisual.util.session.microsoft.MicrosoftDeviceCode; -import dev.loki.lovisual.util.text.ClipboardUtil; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphicsExtractor; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.input.CharacterEvent; -import net.minecraft.client.input.KeyEvent; -import net.minecraft.client.input.MouseButtonEvent; -import net.minecraft.client.resources.language.I18n; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.Identifier; -import net.minecraft.util.Mth; -import net.minecraft.util.Util; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.features.account.AccountConfig; -import dev.loki.lovisual.features.account.AccountEntry; -import dev.loki.lovisual.features.account.SkinManager; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.theme.Themes; -import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.postprocess.MenuBackgroundRenderer; -import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.CompletionException; -import java.util.concurrent.ExecutionException; - -public final class LoVisualAltManagerScreen extends Screen { - private static final float SCALE = 2.28f; - private static final float TEXT_SCALE = 1.30f; - private static final DateTimeFormatter ACCOUNT_DATE = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); - - private static final float LEFT_W = 100f * SCALE; - private static final float LEFT_TOP_H = 137f * SCALE; - private static final float LEFT_BOTTOM_H = 58f * SCALE; - private static final float RIGHT_W = 300f * SCALE; - private static final float RIGHT_H = 165f * SCALE; - private static final float GAP = 5f * SCALE; - - private static final float PANEL_R = 6f * SCALE; - private static final float PANEL_SHADOW = 12f * SCALE; - private static final float LEFT_CARD_R = 4f * SCALE; - private static final float CARD_MARKER_W = 2.2f * SCALE; - - private static final float TITLE_FONT = 0.84f * TEXT_SCALE; - private static final float LABEL_FONT = 0.58f * TEXT_SCALE; - private static final float FIELD_FONT = 0.60f * TEXT_SCALE; - private static final float BUTTON_FONT = 0.58f * TEXT_SCALE; - private static final float ACTION_ICON_FONT = 1.02f * TEXT_SCALE; - private static final float CARD_NAME_FONT = 0.72f * TEXT_SCALE; - private static final float CARD_DATE_FONT = 0.61f * TEXT_SCALE; - private static final float ACTIVE_NAME_FONT = 0.66f * TEXT_SCALE; - private static final float ACTIVE_DATE_FONT = 0.50f * TEXT_SCALE; - private static final float EMPTY_FONT = 0.56f * TEXT_SCALE; - private static final float BADGE_FONT = 0.45f * TEXT_SCALE; - private static final float PIN_ICON_FONT = 0.93f * TEXT_SCALE; - private static final float DELETE_ICON_FONT = 1.05f * TEXT_SCALE; - - private static final float FIELD_H = 14f * SCALE; - private static final float ADD_SIZE = 14f * SCALE; - private static final float TOP_BUTTON_H = 16f * SCALE; - private static final float CARD_H = 40f * SCALE; - private static final float CARD_GAP = 5f * SCALE; - private static final float CARD_BTN = 12f * SCALE; - private static final float ACTIVE_HEAD = 24f * SCALE; - private static final float CARD_HEAD = 25f * SCALE; - - private final Screen parent; - private final AccountConfig accountConfig = AccountConfig.get(); - private final Map cardHoverAnims = new HashMap<>(); - private final Map cardActiveAnims = new HashMap<>(); - private final Map cardPressAnims = new HashMap<>(); - private final Map pinHoverAnims = new HashMap<>(); - private final Map pinPressAnims = new HashMap<>(); - private final Map deleteHoverAnims = new HashMap<>(); - private final Map deletePressAnims = new HashMap<>(); - private float fixedWidth; - private float fixedHeight; - private String nicknameText = ""; - private boolean nicknameFieldFocused; - private float scrollOffset; - private float targetScrollOffset; - private float openAnim; - private float fieldHoverAnim; - private float fieldFocusAnim; - private float addHoverAnim; - private float addPressAnim; - private boolean microsoftMode; - private boolean microsoftAuthPending; - private String microsoftStatus = ""; - private String microsoftUserCode = ""; - private String microsoftVerificationUrl = ""; - private float offlineModeHoverAnim; - private float microsoftModeHoverAnim; - private float offlineModePressAnim; - private float microsoftModePressAnim; - private float randomHoverAnim; - private float randomPressAnim; - private float openSiteHoverAnim; - private float openSitePressAnim; - private float clearHoverAnim; - private float clearPressAnim; - private TextRenderer titleRenderer; - private TextRenderer bodyRenderer; - private TextRenderer menuIconRenderer; - private TextRenderer guiIconRenderer; - private TextRenderer iconRenderer; - - public LoVisualAltManagerScreen(Screen parent) { - this(parent, false); - } - - public LoVisualAltManagerScreen(Screen parent, boolean microsoftMode) { - super(Component.translatable("screen.lovisual.alt_manager.title")); - this.parent = parent; - this.microsoftMode = microsoftMode; - } - - private static float animate(float current, float target, float dt, float speed) { - float next = AnimationUtility.approach(current, target, dt, speed); - return AnimationUtility.snap(next, target, 0.001f); - } - - private static void prune(Map map, Set keys) { - map.keySet().removeIf(key -> !keys.contains(key)); - } - - private static boolean inside(float mx, float my, float x, float y, float w, float h) { - return mx >= x && mx <= x + w && my >= y && my <= y + h; - } - - private static String normalize(String s) { - return s == null ? "" : s.trim(); - } - - private static int withAlpha(int rgb, int alpha) { - return (rgb & 0x00FFFFFF) | (Mth.clamp(alpha, 0, 255) << 24); - } - - private static String tr(String key, Object... args) { - return I18n.get(key, args); - } - - @Override - protected void init() { - titleRenderer = Fonts.renderer("Inter", FontInfo.Type.Bold, TextRenderer.get()); - bodyRenderer = Fonts.renderer("InterMedium", FontInfo.Type.Regular, titleRenderer); - menuIconRenderer = Fonts.renderer("MainMenuIcons", FontInfo.Type.Regular, TextRenderer.get()); - guiIconRenderer = Fonts.renderer("GuiIcons", FontInfo.Type.Regular, menuIconRenderer); - iconRenderer = Fonts.renderer("RichIcons", FontInfo.Type.Regular, menuIconRenderer); - } - - @Override - public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { - updateUiMetrics(); - clampScroll(); - renderShaderBackground(context); - - float fx = toFixedX(mouseX); - float fy = toFixedY(mouseY); - updateAnimations(fx, fy); - - ViewportContext.beginUnscaledLogical(context); - Renderer2D.COLOR.begin(); - try { - drawDimmer(); - renderAltUi(context, fx, fy); - } finally { - Renderer2D.COLOR.render(); - ViewportContext.end(context); - } - } - - @Override - public void extractBackground(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { - } - - @Override - public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { - if (click.button() != 0) return true; - return handleClick(toFixedX((float) click.x()), toFixedY((float) click.y())); - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmount, double verticalAmount) { - float fx = toFixedX((float) mouseX); - float fy = toFixedY((float) mouseY); - Layout layout = layout(); - if (!inside(fx, fy, layout.rightX, layout.topY, RIGHT_W, RIGHT_H)) return false; - targetScrollOffset -= (float) verticalAmount * (25f * SCALE); - clampScroll(); - return true; - } - - @Override - public boolean keyPressed(KeyEvent input) { - if (nicknameFieldFocused) { - int key = input.key(); - if (key == 259) { - if (!nicknameText.isEmpty()) nicknameText = nicknameText.substring(0, nicknameText.length() - 1); - return true; - } - if (key == 257 || key == 335) { - commitNickname(); - nicknameFieldFocused = false; - return true; - } - if (key == 256) { - nicknameFieldFocused = false; - return true; - } - } - - if (input.key() == 256) { - closeToParent(); - return true; - } - return super.keyPressed(input); - } - - @Override - public boolean charTyped(CharacterEvent input) { - if (nicknameFieldFocused) { - int cp = input.codepoint(); - if ((Character.isLetterOrDigit(cp) || cp == '_') && nicknameText.length() < 16) { - nicknameText += Character.toString(cp); - return true; - } - } - return super.charTyped(input); - } - - @Override - public boolean isPauseScreen() { - return false; - } - - @Override - public boolean shouldCloseOnEsc() { - return false; - } - - private void renderAltUi(GuiGraphicsExtractor context, float mouseX, float mouseY) { - Layout l = layout(); - float open = AnimationUtility.easeOutCubic(openAnim); - PanelColors c = colors(open); - - renderPanel(l.leftX, l.topY, LEFT_W, LEFT_TOP_H, c, open); - renderPanel(l.leftX, l.bottomY, LEFT_W, LEFT_BOTTOM_H, c, open); - renderPanel(l.rightX, l.topY, RIGHT_W, RIGHT_H, c, open); - - renderTopPanel(mouseX, mouseY, l.leftX, l.topY, c); - renderActivePanel(context, l.leftX, l.bottomY, c); - renderAccountsPanel(context, mouseX, mouseY, l.rightX, l.topY, c); - } - - private void renderTopPanel(float mouseX, float mouseY, float x, float y, PanelColors c) { - drawCentered(titleRenderer, tr("screen.lovisual.alt_manager.account_panel"), x + LEFT_W * 0.5f - 8f * SCALE, y + 7f * SCALE, TITLE_FONT, c.title); - renderModeToggle(mouseX, mouseY, x + 5f * SCALE, y + 27f * SCALE, LEFT_W - 10f * SCALE, 13f * SCALE, c); - - draw(bodyRenderer, microsoftMode ? tr("screen.lovisual.alt_manager.microsoft_login") : tr("screen.lovisual.alt_manager.nickname"), x + 5f * SCALE, y + 47f * SCALE, LABEL_FONT, c.label); - - float fieldX = x + 5f * SCALE; - float fieldY = y + 57f * SCALE; - float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; - if (microsoftMode) { - renderMicrosoftField(fieldX, fieldY, fieldW, FIELD_H, c); - } else { - renderField(fieldX, fieldY, fieldW, FIELD_H, c, inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H)); - } - - float addX = fieldX + fieldW + 3f * SCALE; - renderAddButton(addX, fieldY, c); - - float buttonX = x + 5f * SCALE; - float buttonW = LEFT_W - 10f * SCALE; - float randomY = fieldY + FIELD_H + 5f * SCALE; - float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; - float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; - - String authAction = microsoftMode - ? (microsoftUserCode.isBlank() - ? (microsoftAuthPending ? tr("screen.lovisual.alt_manager.waiting") : tr("screen.lovisual.alt_manager.authorize")) - : tr("screen.lovisual.alt_manager.copy_code")) - : tr("screen.lovisual.alt_manager.random"); - if (microsoftMode) { - renderSvgAction(buttonX, randomY, buttonW, TOP_BUTTON_H, c, false, authAction, "user-check", randomHoverAnim, randomPressAnim); - } else { - renderAction(buttonX, randomY, buttonW, TOP_BUTTON_H, c, false, authAction, iconRenderer, "R", randomHoverAnim, randomPressAnim); - } - if (microsoftMode) { - renderSvgAction(buttonX, openSiteY, buttonW, TOP_BUTTON_H, c, false, tr("screen.lovisual.alt_manager.open_site"), "external-link", openSiteHoverAnim, openSitePressAnim); - } - renderAction(buttonX, clearY, buttonW, TOP_BUTTON_H, c, true, tr("screen.lovisual.alt_manager.clear_all"), guiIconRenderer, "O", clearHoverAnim, clearPressAnim); - } - - private void renderActivePanel(GuiGraphicsExtractor context, float x, float y, PanelColors c) { - drawCentered(titleRenderer, tr("screen.lovisual.alt_manager.active_session"), x + LEFT_W * 0.5f - 15f * SCALE, y + 6f * SCALE, TITLE_FONT, c.title); - - float cardX = x + 5f * SCALE; - float cardY = y + 24f * SCALE; - float cardW = LEFT_W - 10f * SCALE; - float cardH = 29f * SCALE; - Renderer2D.COLOR.roundedRectCornersQuad(cardX, cardY, cardW, cardH, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 1f, - withAlpha(c.surface, 154), withAlpha(c.surfaceHover, 166), withAlpha(0xFF0D1118, 176), withAlpha(0xFF0D1118, 176)); - Renderer2D.COLOR.roundedRectStrokeCorners(cardX, cardY, cardW, cardH, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 0.55f, HudRenderUtil.mixColor(c.stroke, c.strokeSoft, 0.34f)); - - String activeName = accountConfig.getActiveAccountName(); - if (activeName == null || activeName.isBlank()) { - drawCentered(bodyRenderer, tr("screen.lovisual.alt_manager.no_account_selected"), cardX + cardW * 0.5f, cardY + 10.2f * SCALE, EMPTY_FONT, c.mutedLabel); - return; - } - float faceX = cardX + 5f * SCALE; - float faceY = cardY + 2.5f * SCALE; - Identifier skin = accountConfig.getActiveAccountSkin(); - if (skin == null) skin = SkinManager.getSkin(activeName); - - PlayerHeadRenderer.drawRounded(context, faceX, faceY, ACTIVE_HEAD, 3f * SCALE, skin, - new RenderColor(c.title), true, new RenderColor(c.stroke), 0.7f, false); - - float textX = faceX + ACTIVE_HEAD + 6f * SCALE; - float textW = Math.max(1f, cardX + cardW - textX - 6f * SCALE); - draw(bodyRenderer, ellipsize(activeName, ACTIVE_NAME_FONT, textW), textX, faceY + 4f * SCALE, ACTIVE_NAME_FONT, c.title); - draw(bodyRenderer, ellipsize(accountConfig.getActiveAccountDate(), ACTIVE_DATE_FONT, textW), textX, faceY + 14f * SCALE, ACTIVE_DATE_FONT, c.muted); - } - - private void renderAccountsPanel(GuiGraphicsExtractor context, float mouseX, float mouseY, float x, float y, PanelColors c) { - draw(titleRenderer, tr("screen.lovisual.alt_manager.accounts_list"), x + 8f * SCALE, y + 7f * SCALE, TITLE_FONT, c.title); - - List accounts = accountConfig.getSortedAccounts(); - if (accounts.isEmpty()) { - drawCentered(bodyRenderer, tr("screen.lovisual.alt_manager.no_accounts_added"), x + RIGHT_W * 0.5f, y + RIGHT_H * 0.5f + 2f * SCALE, EMPTY_FONT, c.mutedLabel); - return; - } - - float listX = x + 5f * SCALE; - float listY = y + 28f * SCALE; - float listW = RIGHT_W - 10f * SCALE; - float listH = RIGHT_H - 31f * SCALE; - float cardW = (listW - CARD_GAP) * 0.5f; - - boolean clipped = ScissorFunction.pushRaw(listX, listY - 3f * SCALE, listW, listH + 6f * SCALE); - try { - for (int i = 0; i < accounts.size(); i++) { - int col = i % 2; - int row = i / 2; - float cardX = listX + col * (cardW + CARD_GAP); - float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; - if (cardY + CARD_H < listY - 10f || cardY > listY + listH + 10f) continue; - renderCard(context, accounts.get(i), mouseX, mouseY, cardX, cardY, cardW, listY, listH, c); - } - } finally { - if (clipped) ScissorFunction.pop(); - } - } - - private void renderCard(GuiGraphicsExtractor context, AccountEntry entry, float mouseX, float mouseY, float x, float y, float w, float listY, float listH, PanelColors c) { - String key = entry.getName(); - boolean inList = mouseY >= listY && mouseY <= listY + listH; - float hoverAnim = AnimationUtility.easeOutCubic(cardHoverAnims.getOrDefault(key, 0f)); - float activeAnim = AnimationUtility.easeOutCubic(cardActiveAnims.getOrDefault(key, 0f)); - float pressAnim = AnimationUtility.easeOutCubic(cardPressAnims.getOrDefault(key, 0f)); - Themes.Theme theme = Theme.theme(); - int activeAccent = withAlpha(theme.accent(), Math.round(165f * activeAnim)); - - int fillBase = HudRenderUtil.mixColor(c.surface, c.surfaceHover, 0.38f * hoverAnim + 0.10f * pressAnim); - int fillTop = HudRenderUtil.mixColor(fillBase, c.surfaceHover, 0.03f * pressAnim); - int fillBottom = HudRenderUtil.mixColor(fillBase, 0xFF05070A, 0.18f); - int stroke = HudRenderUtil.mixColor(c.stroke, c.strokeSoft, 0.45f * hoverAnim); - stroke = HudRenderUtil.mixColor(stroke, activeAccent, 0.38f * activeAnim + 0.10f * pressAnim); - Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, CARD_H, 4f * SCALE, 8f * SCALE, 0.018f + hoverAnim * 0.018f + activeAnim * 0.010f, c.shadow); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, CARD_H, 4f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - renderActiveCardMarker(x, y, w, CARD_H, activeAnim, theme); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, CARD_H, 4f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f + hoverAnim * 0.03f), stroke, 90f); - - PlayerHeadRenderer.drawRounded(context, x + 7f * SCALE, y + 7f * SCALE, CARD_HEAD, 3f * SCALE, SkinManager.getSkin(entry.getName()), - new RenderColor(c.title), true, null, 0f, false); - - draw(bodyRenderer, ellipsize(entry.getName(), CARD_NAME_FONT, w - CARD_HEAD - 45f * SCALE), x + 37f * SCALE, y + 9f * SCALE, CARD_NAME_FONT, c.title); - draw(bodyRenderer, entry.getDate(), x + 37f * SCALE, y + 20f * SCALE, CARD_DATE_FONT, c.muted); - renderAuthBadge(entry, x + 37f * SCALE, y + 30f * SCALE, c); - - float btnY = y + CARD_H - CARD_BTN - 5f * SCALE; - float pinX = x + w - CARD_BTN * 2f - 8f * SCALE; - float delX = x + w - CARD_BTN - 5f * SCALE; - boolean pinHover = inList && inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN); - boolean delHover = inList && inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN); - - float pinHoverAnim = AnimationUtility.easeOutCubic(pinHoverAnims.getOrDefault(key, pinHover ? 1f : 0f)); - float pinPressAnim = AnimationUtility.easeOutBack(pinPressAnims.getOrDefault(key, 0f), 0.95f); - int pinFill = entry.isPinned() - ? HudRenderUtil.mixColor(withAlpha(c.accentSoft, 190), withAlpha(c.accent, 72), 0.18f + pinHoverAnim * 0.12f) - : HudRenderUtil.mixColor(withAlpha(c.surface, 170), withAlpha(c.surfaceHover, 196), pinHoverAnim * 0.65f); - int pinStroke = entry.isPinned() - ? HudRenderUtil.mixColor(c.accent, 0xFFFFFFFF, pinHoverAnim * 0.12f) - : HudRenderUtil.mixColor(c.stroke, c.strokeSoft, pinHoverAnim * 0.70f); - Renderer2D.COLOR.roundedRectGradientQuad(pinX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, pinFill, pinFill, pinFill, pinFill); - Renderer2D.COLOR.roundedRectStrokeGradient(pinX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(pinStroke, 0xFFFFFFFF, 0.04f), pinStroke, 90f); - float pinContentLift = (pinHoverAnim * 0.35f + pinPressAnim * 0.6f) * SCALE; - drawCentered(menuIconRenderer, "c", pinX + CARD_BTN * 0.5f, btnY + 1.5f * SCALE - pinContentLift, PIN_ICON_FONT, entry.isPinned() ? c.accent : withAlpha(0xC0C8D4, 255)); - - float delHoverAnim = AnimationUtility.easeOutCubic(deleteHoverAnims.getOrDefault(key, delHover ? 1f : 0f)); - float delPressAnim = AnimationUtility.easeOutBack(deletePressAnims.getOrDefault(key, 0f), 0.95f); - int delFillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 150), withAlpha(0x5A2424, 210), 0.30f + delHoverAnim * 0.45f); - int delFillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 140), withAlpha(0x2E1212, 220), 0.20f + delHoverAnim * 0.55f); - int delStroke = HudRenderUtil.mixColor(c.stroke, withAlpha(0xA24E4E, 230), 0.25f + delHoverAnim * 0.65f); - Renderer2D.COLOR.roundedRectGradientQuad(delX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, delFillTop, delFillTop, delFillBottom, delFillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(delX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(delStroke, 0xFFFFFFFF, 0.04f), delStroke, 90f); - float delContentLift = (delHoverAnim * 0.35f + delPressAnim * 0.6f) * SCALE; - drawCentered(guiIconRenderer, "O", delX + CARD_BTN * 0.5f, btnY + 0.5f * SCALE - delContentLift, DELETE_ICON_FONT, - HudRenderUtil.mixColor(withAlpha(0xC0C8D4, 255), withAlpha(0xFFB0B0, 255), 0.45f + delHoverAnim * 0.45f)); - } - - private void renderActiveCardMarker(float x, float y, float w, float h, float active, Themes.Theme theme) { - float reveal = AnimationUtility.clamp01(active); - if (reveal <= 0.001f) return; - - float markerW = CARD_MARKER_W * reveal; - if (markerW <= 0.01f) return; - - int accent = withAlpha(theme.accent(), Math.round(255f * reveal)); - boolean clipped = ScissorFunction.pushRaw(x, y, markerW, h); - if (!clipped) return; - try { - Renderer2D.COLOR.roundedRectCornersQuad(x, y, w, h, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 1f, accent, accent, accent, accent); - } finally { - ScissorFunction.pop(); - } - } - - private void renderAuthBadge(AccountEntry entry, float x, float y, PanelColors c) { - boolean microsoft = entry != null && entry.isMicrosoft(); - String label = microsoft ? tr("screen.lovisual.alt_manager.badge.microsoft") : tr("screen.lovisual.alt_manager.badge.offline"); - float padX = 3.2f * SCALE; - float badgeW = width(bodyRenderer, label, BADGE_FONT) + padX * 2f; - float badgeH = 7f * SCALE; - int fillTop = microsoft ? withAlpha(0x20394A, 172) : withAlpha(c.surface, 150); - int fillBottom = microsoft ? withAlpha(0x132732, 184) : withAlpha(0x11151B, 160); - int stroke = microsoft ? withAlpha(0x527A8A, 190) : c.stroke; - int text = microsoft ? withAlpha(0xDDEEFF, 235) : c.muted; - Renderer2D.COLOR.roundedRectGradientQuad(x, y, badgeW, badgeH, 2.2f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, badgeW, badgeH, 2.2f * SCALE, 1f, 0.45f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.05f), stroke, 90f); - draw(bodyRenderer, label, x + padX, y + 1.9f * SCALE, BADGE_FONT, text); - } - - private void renderModeToggle(float mouseX, float mouseY, float x, float y, float w, float h, PanelColors c) { - float gap = 2f * SCALE; - float itemW = (w - gap) * 0.5f; - renderModeButton(x, y, itemW, h, c, tr("screen.lovisual.alt_manager.mode.offline"), !microsoftMode, - inside(mouseX, mouseY, x, y, itemW, h), offlineModeHoverAnim, offlineModePressAnim); - renderModeButton(x + itemW + gap, y, itemW, h, c, tr("screen.lovisual.alt_manager.mode.microsoft"), microsoftMode, - inside(mouseX, mouseY, x + itemW + gap, y, itemW, h), microsoftModeHoverAnim, microsoftModePressAnim); - } - - private void renderModeButton(float x, float y, float w, float h, PanelColors c, String label, boolean selected, - boolean hovered, float hoverValue, float pressValue) { - float hoverAnim = AnimationUtility.easeOutCubic(hoverValue); - float pressAnim = AnimationUtility.easeOutCubic(pressValue); - float activeAnim = selected ? 1f : 0f; - int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 170), withAlpha(c.surfaceHover, 210), hoverAnim * 0.42f + activeAnim * 0.38f + pressAnim * 0.10f); - int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 158), withAlpha(0x1A2418, 210), activeAnim * 0.24f + hoverAnim * 0.16f); - int stroke = HudRenderUtil.mixColor(c.stroke, selected ? c.accentSoft : c.strokeSoft, activeAnim * 0.70f + hoverAnim * 0.30f + pressAnim * 0.10f); - int text = selected - ? HudRenderUtil.mixColor(c.title, c.accent, 0.28f) - : HudRenderUtil.mixColor(c.muted, c.title, hoverAnim * 0.35f); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); - float lift = (hovered ? hoverAnim : 0f) * 0.35f * SCALE + pressAnim * 0.35f * SCALE; - drawCentered(bodyRenderer, label, x + w * 0.5f, y + 4.1f * SCALE - lift, BUTTON_FONT, text); - } - - private void renderMicrosoftField(float x, float y, float w, float h, PanelColors c) { - float hoverAnim = AnimationUtility.easeOutCubic(fieldHoverAnim); - int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 188), withAlpha(c.surfaceHover, 208), hoverAnim * 0.45f); - int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 176), withAlpha(0xFF0D1118, 196), 0.18f); - int stroke = HudRenderUtil.mixColor(c.stroke, microsoftAuthPending ? c.accentSoft : c.strokeSoft, microsoftAuthPending ? 0.45f : hoverAnim * 0.60f); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); - if (microsoftAuthPending) { - float pulse = 0.5f + 0.5f * (float) Math.sin(System.currentTimeMillis() / 180.0); - int glow = withAlpha(c.accentSoft, Math.round(22f + 32f * pulse)); - Renderer2D.COLOR.roundedRectGradientQuad(x + 1.2f * SCALE, y + h - 1.6f * SCALE, w - 2.4f * SCALE, 1.1f * SCALE, 0.6f * SCALE, 1f, - glow, withAlpha(c.accent, Math.round(20f + 24f * pulse)), withAlpha(c.accent, Math.round(20f + 24f * pulse)), glow); - } - - String display; - int color; - if (!microsoftUserCode.isBlank()) { - display = tr("screen.lovisual.alt_manager.code", microsoftUserCode); - color = c.title; - } else if (!microsoftStatus.isBlank()) { - display = microsoftStatus; - color = microsoftAuthPending ? c.title : c.muted; - } else { - display = tr("screen.lovisual.alt_manager.ready_to_sign_in"); - color = c.mutedLabel; - } - draw(bodyRenderer, ellipsize(display, FIELD_FONT, w - 8f * SCALE), x + 4f * SCALE, y + 4.3f * SCALE, FIELD_FONT, color); - } - - private void renderField(float x, float y, float w, float h, PanelColors c, boolean hovered) { - float hoverAnim = AnimationUtility.easeOutCubic(fieldHoverAnim); - float focusAnim = AnimationUtility.easeOutCubic(fieldFocusAnim); - int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 188), withAlpha(c.surfaceHover, 208), hoverAnim * 0.45f + focusAnim * 0.16f); - int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 176), withAlpha(0xFF0D1118, 196), 0.18f); - int stroke = nicknameFieldFocused - ? HudRenderUtil.mixColor(c.strokeSoft, c.accentSoft, 0.55f) - : HudRenderUtil.mixColor(c.stroke, c.strokeSoft, hoverAnim * 0.72f); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); - if (focusAnim > 0.01f) { - int glowLeft = withAlpha(c.accentSoft, Math.round(48f * focusAnim)); - int glowRight = withAlpha(c.accent, Math.round(28f * focusAnim)); - Renderer2D.COLOR.roundedRectGradientQuad(x + 1.2f * SCALE, y + h - 1.6f * SCALE, w - 2.4f * SCALE, 1.1f * SCALE, 0.6f * SCALE, 1f, - glowLeft, glowRight, glowRight, glowLeft); - } - - boolean caretOn = nicknameFieldFocused && AnimationUtility.blink(500L); - String display = nicknameText.isEmpty() && !nicknameFieldFocused ? tr("screen.lovisual.alt_manager.enter_nick") : nicknameText + (caretOn ? "|" : ""); - draw(bodyRenderer, display, x + 4f * SCALE, y + 4.3f * SCALE, FIELD_FONT, nicknameText.isEmpty() && !nicknameFieldFocused ? c.mutedLabel : c.title); - } - - private void renderAddButton(float x, float y, PanelColors c) { - float hoverAnim = AnimationUtility.easeOutCubic(addHoverAnim); - float pressAnim = AnimationUtility.easeOutCubic(addPressAnim); - int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 172), withAlpha(c.surfaceHover, 202), hoverAnim * 0.72f); - int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 162), withAlpha(0xFF0D1118, 186), 0.20f); - int stroke = HudRenderUtil.mixColor(c.stroke, c.strokeSoft, hoverAnim * 0.65f + pressAnim * 0.20f); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, ADD_SIZE, ADD_SIZE, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, ADD_SIZE, ADD_SIZE, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); - - float cx = x + ADD_SIZE * 0.5f; - float cy = y + ADD_SIZE * 0.5f; - float plusLift = (hoverAnim * 0.18f + pressAnim * 0.32f) * SCALE; - float plusStretch = 1f + hoverAnim * 0.04f + pressAnim * 0.08f; - Renderer2D.COLOR.roundedRect(cx - 2.5f * SCALE * plusStretch, cy - 0.6f * SCALE - plusLift, 5f * SCALE * plusStretch, 1.2f * SCALE, 0.5f * SCALE, 1f, c.title); - Renderer2D.COLOR.roundedRect(cx - 0.6f * SCALE, cy - 2.5f * SCALE * plusStretch - plusLift, 1.2f * SCALE, 5f * SCALE * plusStretch, 0.5f * SCALE, 1f, c.title); - } - - private void renderAction(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, TextRenderer iconRenderer, String glyph, float hoverValue, float pressValue) { - renderAction(x, y, w, h, c, destructive, label, iconRenderer, glyph, null, hoverValue, pressValue); - } - - private void renderSvgAction(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, String svgName, float hoverValue, float pressValue) { - renderAction(x, y, w, h, c, destructive, label, null, "", svgName, hoverValue, pressValue); - } - - private void renderAction(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, TextRenderer iconRenderer, String glyph, String svgName, float hoverValue, float pressValue) { - float hoverAnim = AnimationUtility.easeOutCubic(hoverValue); - float pressAnim = AnimationUtility.easeOutCubic(pressValue); - int fillTop; - int fillBottom; - int stroke; - int text; - if (destructive) { - fillTop = HudRenderUtil.mixColor(withAlpha(0x1A1416, 170), withAlpha(0x4B2224, 212), 0.25f + hoverAnim * 0.45f + pressAnim * 0.12f); - fillBottom = HudRenderUtil.mixColor(withAlpha(0x120E10, 165), withAlpha(0x261012, 220), 0.20f + hoverAnim * 0.40f + pressAnim * 0.10f); - stroke = HudRenderUtil.mixColor(withAlpha(0x352A2A, 215), withAlpha(0x8C5054, 235), 0.22f + hoverAnim * 0.58f + pressAnim * 0.12f); - text = HudRenderUtil.mixColor(withAlpha(0xD0A0A0, 255), withAlpha(0xFFB2B2, 255), 0.24f + hoverAnim * 0.56f + pressAnim * 0.08f); - } else { - fillTop = HudRenderUtil.mixColor(withAlpha(c.surface, 176), withAlpha(0x223746, 212), 0.20f + hoverAnim * 0.44f + pressAnim * 0.10f); - fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface, 166), withAlpha(0x13292F, 220), 0.16f + hoverAnim * 0.40f + pressAnim * 0.08f); - stroke = HudRenderUtil.mixColor(c.stroke, withAlpha(0x466A76, 228), 0.18f + hoverAnim * 0.50f + pressAnim * 0.10f); - text = HudRenderUtil.mixColor(withAlpha(0xD0D8E4, 255), withAlpha(0xEEF8FF, 255), 0.18f + hoverAnim * 0.38f + pressAnim * 0.08f); - } - - Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, h, 3f * SCALE, 7f * SCALE, 0.018f + hoverAnim * 0.015f, c.shadow); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); - float contentLift = hoverAnim * 0.65f * SCALE + pressAnim * 0.55f * SCALE; - draw(bodyRenderer, label, x + 6f * SCALE, y + 5f * SCALE - contentLift, BUTTON_FONT, text); - if (svgName != null && !svgName.isBlank()) { - float iconSize = 7.2f * SCALE; - Renderer2D.COLOR.svg(svgName, x + w - 11.3f * SCALE, y + (h - iconSize) * 0.5f - contentLift, iconSize, iconSize, SvgRenderOptions.overrideColor(text)); - } else { - draw(iconRenderer, glyph, x + (destructive ? 77f : 75f) * SCALE, y + (destructive ? 2.2f : 3.1f) * SCALE - contentLift, ACTION_ICON_FONT, text); - } - } - - private boolean handleClick(float mouseX, float mouseY) { - Layout l = layout(); - - float modeY = l.topY + 27f * SCALE; - float modeX = l.leftX + 5f * SCALE; - float modeW = LEFT_W - 10f * SCALE; - float modeGap = 2f * SCALE; - float modeItemW = (modeW - modeGap) * 0.5f; - if (inside(mouseX, mouseY, modeX, modeY, modeItemW, 13f * SCALE)) { - offlineModePressAnim = 1f; - microsoftMode = false; - nicknameFieldFocused = false; - return true; - } - if (inside(mouseX, mouseY, modeX + modeItemW + modeGap, modeY, modeItemW, 13f * SCALE)) { - microsoftModePressAnim = 1f; - microsoftMode = true; - nicknameFieldFocused = false; - return true; - } - - float fieldX = l.leftX + 5f * SCALE; - float fieldY = l.topY + 57f * SCALE; - float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; - if (!microsoftMode && inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H)) { - nicknameFieldFocused = true; - return true; - } - nicknameFieldFocused = false; - if (microsoftMode && inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H)) { - copyMicrosoftAuthData(); - return true; - } - - float addX = fieldX + fieldW + 3f * SCALE; - if (inside(mouseX, mouseY, addX, fieldY, ADD_SIZE, ADD_SIZE)) { - addPressAnim = 1f; - if (microsoftMode) startMicrosoftAuthorization(); - else commitNickname(); - return true; - } - - float buttonX = l.leftX + 5f * SCALE; - float buttonW = LEFT_W - 10f * SCALE; - float randomY = fieldY + FIELD_H + 5f * SCALE; - float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; - float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; - if (inside(mouseX, mouseY, buttonX, randomY, buttonW, TOP_BUTTON_H)) { - randomPressAnim = 1f; - if (microsoftMode) { - if (microsoftUserCode.isBlank()) startMicrosoftAuthorization(); - else copyMicrosoftAuthData(); - } else { - addAccount(generateRandomNickname()); - nicknameText = ""; - } - return true; - } - if (microsoftMode && inside(mouseX, mouseY, buttonX, openSiteY, buttonW, TOP_BUTTON_H)) { - openSitePressAnim = 1f; - openMicrosoftLoginSite(); - return true; - } - if (inside(mouseX, mouseY, buttonX, clearY, buttonW, TOP_BUTTON_H)) { - clearPressAnim = 1f; - accountConfig.clearAllAccounts(); - SkinManager.clearCache(); - scrollOffset = 0f; - targetScrollOffset = 0f; - return true; - } - - float listX = l.rightX + 5f * SCALE; - float listY = l.topY + 28f * SCALE; - float listW = RIGHT_W - 10f * SCALE; - float listH = RIGHT_H - 31f * SCALE; - if (!inside(mouseX, mouseY, listX, listY, listW, listH)) return true; - - List accounts = accountConfig.getSortedAccounts(); - float cardW = (listW - CARD_GAP) * 0.5f; - for (int i = 0; i < accounts.size(); i++) { - int col = i % 2; - int row = i / 2; - float cardX = listX + col * (cardW + CARD_GAP); - float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; - if (cardY + CARD_H < listY || cardY > listY + listH) continue; - - float btnY = cardY + CARD_H - CARD_BTN - 5f * SCALE; - float pinX = cardX + cardW - CARD_BTN * 2f - 8f * SCALE; - float delX = cardX + cardW - CARD_BTN - 5f * SCALE; - AccountEntry entry = accounts.get(i); - - if (inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN)) { - pinPressAnims.put(entry.getName(), 1f); - entry.togglePinned(); - if (entry.isPinned()) accountConfig.setActiveAccount(entry); - else accountConfig.save(); - return true; - } - if (inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN)) { - deletePressAnims.put(entry.getName(), 1f); - accountConfig.removeAccountBySortedIndex(i); - clampScroll(); - return true; - } - if (inside(mouseX, mouseY, cardX, cardY, cardW, CARD_H)) { - cardPressAnims.put(entry.getName(), 1f); - accountConfig.setActiveAccount(entry); - return true; - } - } - - return true; - } - - private void renderPanel(float x, float y, float w, float h, PanelColors c, float open) { - Renderer2D.COLOR.blurRect(x, y, w, h, PANEL_R, 15f, 1.0f, 0.30f, 0xFFFFFF); - Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, h, PANEL_R, PANEL_SHADOW, 0.022f + open * 0.012f, c.shadow); - Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, PANEL_R, 1f, c.bgTopLeft, c.bgTopRight, c.bgBottomRight, c.bgBottomLeft); - Renderer2D.COLOR.roundedRectMaskedQuad(x, y, w, 22f * SCALE, x, y, w, h, PANEL_R, 1f, - c.headerTopLeft, c.headerTopRight, c.headerBottomRight, c.headerBottomLeft); - Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, PANEL_R, 1f, 1f, HudRenderUtil.mixColor(c.stroke, 0xFFFFFFFF, 0.04f), c.stroke, 90f); - } - - private PanelColors colors(float alpha) { - int bgAlpha = Math.round(alpha * 120f); - int headerAlpha = Math.round(alpha * 150f); - int strokeAlpha = Math.round(alpha * 100f); - int shadowAlpha = Math.round(alpha * 80f); - int titleAlpha = Math.round(alpha * 255f); - int labelAlpha = Math.round(alpha * 155f); - - Themes.Theme theme = Theme.theme(); - int themeAccent = theme != null ? theme.accent() : 0xFFFFFFFF; - int themeAccentSoft = theme != null ? theme.accentSoft() : themeAccent; - - int bgTopLeft = withAlpha(0x0D0F14, bgAlpha); - int bgTopRight = withAlpha(0x101218, bgAlpha); - int bgBottomLeft = withAlpha(0x08090C, bgAlpha); - int bgBottomRight = withAlpha(0x0D0F14, bgAlpha); - int headerTopLeft = withAlpha(0x14171F, headerAlpha); - int headerTopRight = withAlpha(0x181B24, headerAlpha); - int headerBottomLeft = withAlpha(0x10131A, headerAlpha); - int headerBottomRight = withAlpha(0x14171F, headerAlpha); - int stroke = withAlpha(0x252A36, strokeAlpha); - int strokeSoft = withAlpha(0x3A4A5A, Math.round(alpha * 150f)); - int surface = withAlpha(0x1A1D24, Math.round(alpha * 160f)); - int surfaceHover = withAlpha(0x1A1F28, Math.round(alpha * 200f)); - int accent = withAlpha(themeAccent, titleAlpha); - int accentSoft = withAlpha(themeAccentSoft, Math.round(alpha * 180f)); - return new PanelColors( - bgTopLeft, bgTopRight, bgBottomRight, bgBottomLeft, - headerTopLeft, headerTopRight, headerBottomRight, headerBottomLeft, - stroke, strokeSoft, - withAlpha(0x060810, shadowAlpha), - withAlpha(0xFFFFFF, titleAlpha), - withAlpha(0xFFFFFF, labelAlpha), - withAlpha(0x808890, titleAlpha), - withAlpha(0x606878, labelAlpha), - surface, surfaceHover, accent, accentSoft - ); - } - - private void renderShaderBackground(GuiGraphicsExtractor context) { - Minecraft mc = this.minecraft; - if (mc == null) return; - MainConfig cfg = MainConfig.get(); - String mode = cfg != null ? cfg.getMenuBackgroundMode() : "off"; - if (mode == null || mode.equalsIgnoreCase("off")) { - context.fill(0, 0, width, height, 0xFF000000); - return; - } - MenuBackgroundRenderer.render(mc, mode.equalsIgnoreCase("aurora")); - } - - private void drawDimmer() { - Themes.Theme t = Theme.theme(); - int soft = withAlpha(HudRenderUtil.mixColor(t.windowBg(), 0xFF000000, 0.46f), 140); - int deep = withAlpha(HudRenderUtil.mixColor(t.windowBg(), 0xFF000000, 0.68f), 180); - Renderer2D.COLOR.quad(0, 0, fixedWidth, fixedHeight, soft, soft, deep, deep); - } - - private void updateUiMetrics() { - Minecraft mc = minecraft; - if (mc == null) { - fixedWidth = width; - fixedHeight = height; - return; - } - int fbw = mc.getWindow().getWidth(); - int fbh = mc.getWindow().getHeight(); - fixedWidth = Math.max(1f, HudScale.virtualWidth(fbw, fbh)); - fixedHeight = Math.max(1f, HudScale.virtualHeight(fbw, fbh)); - } - - private float toFixedX(float screenX) { - Minecraft mc = minecraft; - if (mc == null) return screenX; - float hudScale = HudScale.scale(mc.getWindow().getWidth(), mc.getWindow().getHeight()); - if (hudScale <= 0f) return screenX; - return screenX * mc.getWindow().getGuiScale() / hudScale; - } - - private float toFixedY(float screenY) { - Minecraft mc = minecraft; - if (mc == null) return screenY; - float hudScale = HudScale.scale(mc.getWindow().getWidth(), mc.getWindow().getHeight()); - if (hudScale <= 0f) return screenY; - return screenY * mc.getWindow().getGuiScale() / hudScale; - } - - private Layout layout() { - float totalW = LEFT_W + GAP + RIGHT_W; - float totalH = LEFT_TOP_H + GAP + LEFT_BOTTOM_H; - return new Layout( - fixedWidth * 0.5f - totalW * 0.5f, - fixedHeight * 0.5f - totalH * 0.5f, - fixedWidth * 0.5f - totalW * 0.5f + LEFT_W + GAP, - fixedHeight * 0.5f - totalH * 0.5f + LEFT_TOP_H + GAP - ); - } - - private void commitNickname() { - if (!nicknameText.isBlank()) { - addAccount(nicknameText); - nicknameText = ""; - } - } - - private void addAccount(String nickname) { - String clean = normalize(nickname); - if (clean.isEmpty()) return; - AccountEntry entry = accountConfig.addAccount(clean, LocalDateTime.now().format(ACCOUNT_DATE), null); - if (entry != null) { - accountConfig.setActiveAccount(entry); - SkinManager.getSkin(clean); - } - } - - private void startMicrosoftAuthorization() { - if (microsoftAuthPending) { - copyMicrosoftAuthData(); - return; - } - - microsoftAuthPending = true; - microsoftUserCode = ""; - microsoftVerificationUrl = ""; - microsoftStatus = tr("screen.lovisual.alt_manager.status.requesting_code"); - - MicrosoftAuthService.requestDeviceCode() - .thenCompose(code -> { - dispatchToClient(() -> showMicrosoftDeviceCode(code)); - return MicrosoftAuthService.loginWithDeviceCode(code); - }) - .whenComplete((session, throwable) -> dispatchToClient(() -> { - if (throwable != null) { - finishMicrosoftAuthorization(null, throwable); - } else { - finishMicrosoftAuthorization(session, null); - } - })); - } - - private void showMicrosoftDeviceCode(MicrosoftDeviceCode code) { - if (code == null) { - return; - } - microsoftUserCode = code.userCode(); - microsoftVerificationUrl = code.verificationUri().toString(); - microsoftStatus = tr("screen.lovisual.alt_manager.status.use_link"); - copyMicrosoftAuthData(); - } - - private void finishMicrosoftAuthorization(MicrosoftSessionResult session, Throwable throwable) { - microsoftAuthPending = false; - if (throwable != null) { - microsoftStatus = tr("screen.lovisual.alt_manager.status.auth_failed"); - microsoftUserCode = ""; - microsoftVerificationUrl = ""; - Throwable root = unwrap(throwable); - if (root != null && root.getMessage() != null && !root.getMessage().isBlank()) { - microsoftStatus = ellipsizeStatus(root.getMessage()); - } - return; - } - - AccountEntry entry = accountConfig.addMicrosoftAccount(session); - if (entry == null) { - microsoftStatus = tr("screen.lovisual.alt_manager.status.auth_failed"); - microsoftUserCode = ""; - microsoftVerificationUrl = ""; - return; - } - - accountConfig.setActiveAccount(entry); - SkinManager.getSkin(entry.getName()); - microsoftStatus = tr("screen.lovisual.alt_manager.status.authorized", entry.getName()); - microsoftUserCode = ""; - microsoftVerificationUrl = ""; - clampScroll(); - } - - private void copyMicrosoftAuthData() { - if (!microsoftUserCode.isBlank()) { - ClipboardUtil.copy(microsoftUserCode); - microsoftStatus = tr("screen.lovisual.alt_manager.status.code_copied"); - } else if (!microsoftVerificationUrl.isBlank()) { - ClipboardUtil.copy(microsoftVerificationUrl); - microsoftStatus = tr("screen.lovisual.alt_manager.status.link_copied"); - } - } - - private void openMicrosoftLoginSite() { - String target = microsoftVerificationUrl.isBlank() ? "https://www.microsoft.com/link" : microsoftVerificationUrl; - Util.getPlatform().openUri(target); - } - - private void dispatchToClient(Runnable runnable) { - if (runnable == null) { - return; - } - Minecraft mc = minecraft != null ? minecraft : Minecraft.getInstance(); - if (mc == null) { - runnable.run(); - return; - } - if (mc.isSameThread()) { - runnable.run(); - } else { - mc.execute(runnable); - } - } - - private static Throwable unwrap(Throwable throwable) { - Throwable current = throwable; - while ((current instanceof CompletionException || current instanceof ExecutionException) && current.getCause() != null) { - current = current.getCause(); - } - return current; - } - - private static String ellipsizeStatus(String text) { - String clean = normalize(text); - return clean.length() <= 34 ? clean : clean.substring(0, 31) + "..."; - } - - private void clampScroll() { - float max = Math.max(0f, (float) Math.ceil(accountConfig.getSortedAccounts().size() / 2.0) * (CARD_H + CARD_GAP) - (RIGHT_H - 31f * SCALE)); - if (scrollOffset > max) scrollOffset = max; - if (targetScrollOffset > max) targetScrollOffset = max; - if (scrollOffset < 0f) scrollOffset = 0f; - if (targetScrollOffset < 0f) targetScrollOffset = 0f; - } - - private void updateAnimations(float mouseX, float mouseY) { - float dt = AnimationUtility.deltaTime(); - openAnim = animate(openAnim, 1f, dt, 7f); - scrollOffset = animate(scrollOffset, targetScrollOffset, dt, 14f); - scrollOffset = AnimationUtility.snap(scrollOffset, targetScrollOffset, 0.25f); - - Layout l = layout(); - float fieldX = l.leftX + 5f * SCALE; - float fieldY = l.topY + 57f * SCALE; - float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; - float addX = fieldX + fieldW + 3f * SCALE; - float buttonX = l.leftX + 5f * SCALE; - float buttonW = LEFT_W - 10f * SCALE; - float randomY = fieldY + FIELD_H + 5f * SCALE; - float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; - float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; - float modeX = l.leftX + 5f * SCALE; - float modeY = l.topY + 27f * SCALE; - float modeW = LEFT_W - 10f * SCALE; - float modeGap = 2f * SCALE; - float modeItemW = (modeW - modeGap) * 0.5f; - - fieldHoverAnim = animate(fieldHoverAnim, inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H) ? 1f : 0f, dt, 11f); - fieldFocusAnim = animate(fieldFocusAnim, !microsoftMode && nicknameFieldFocused ? 1f : 0f, dt, 10f); - addHoverAnim = animate(addHoverAnim, inside(mouseX, mouseY, addX, fieldY, ADD_SIZE, ADD_SIZE) ? 1f : 0f, dt, 12f); - offlineModeHoverAnim = animate(offlineModeHoverAnim, inside(mouseX, mouseY, modeX, modeY, modeItemW, 13f * SCALE) ? 1f : 0f, dt, 11f); - microsoftModeHoverAnim = animate(microsoftModeHoverAnim, inside(mouseX, mouseY, modeX + modeItemW + modeGap, modeY, modeItemW, 13f * SCALE) ? 1f : 0f, dt, 11f); - offlineModePressAnim = animate(offlineModePressAnim, 0f, dt, 8f); - microsoftModePressAnim = animate(microsoftModePressAnim, 0f, dt, 8f); - randomHoverAnim = animate(randomHoverAnim, inside(mouseX, mouseY, buttonX, randomY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); - openSiteHoverAnim = animate(openSiteHoverAnim, microsoftMode && inside(mouseX, mouseY, buttonX, openSiteY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); - clearHoverAnim = animate(clearHoverAnim, inside(mouseX, mouseY, buttonX, clearY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); - addPressAnim = animate(addPressAnim, 0f, dt, 8f); - randomPressAnim = animate(randomPressAnim, 0f, dt, 7f); - openSitePressAnim = animate(openSitePressAnim, 0f, dt, 7f); - clearPressAnim = animate(clearPressAnim, 0f, dt, 7f); - - float listX = l.rightX + 5f * SCALE; - float listY = l.topY + 28f * SCALE; - float listW = RIGHT_W - 10f * SCALE; - float listH = RIGHT_H - 31f * SCALE; - float cardW = (listW - CARD_GAP) * 0.5f; - String active = accountConfig.getActiveAccountName(); - List accounts = accountConfig.getSortedAccounts(); - Set keys = new HashSet<>(); - for (int i = 0; i < accounts.size(); i++) { - AccountEntry entry = accounts.get(i); - String key = entry.getName(); - keys.add(key); - int col = i % 2; - int row = i / 2; - float cardX = listX + col * (cardW + CARD_GAP); - float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; - float btnY = cardY + CARD_H - CARD_BTN - 5f * SCALE; - float pinX = cardX + cardW - CARD_BTN * 2f - 8f * SCALE; - float delX = cardX + cardW - CARD_BTN - 5f * SCALE; - boolean inList = mouseY >= listY && mouseY <= listY + listH; - boolean cardHover = inList && inside(mouseX, mouseY, cardX, cardY, cardW, CARD_H); - boolean pinHover = inList && inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN); - boolean delHover = inList && inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN); - cardHoverAnims.put(key, animate(cardHoverAnims.getOrDefault(key, 0f), cardHover ? 1f : 0f, dt, 10f)); - cardActiveAnims.put(key, animate(cardActiveAnims.getOrDefault(key, 0f), key.equals(active) ? 1f : 0f, dt, 8f)); - cardPressAnims.put(key, animate(cardPressAnims.getOrDefault(key, 0f), 0f, dt, 7f)); - pinHoverAnims.put(key, animate(pinHoverAnims.getOrDefault(key, 0f), pinHover ? 1f : 0f, dt, 11f)); - pinPressAnims.put(key, animate(pinPressAnims.getOrDefault(key, 0f), 0f, dt, 8f)); - deleteHoverAnims.put(key, animate(deleteHoverAnims.getOrDefault(key, 0f), delHover ? 1f : 0f, dt, 11f)); - deletePressAnims.put(key, animate(deletePressAnims.getOrDefault(key, 0f), 0f, dt, 8f)); - } - prune(cardHoverAnims, keys); - prune(cardActiveAnims, keys); - prune(cardPressAnims, keys); - prune(pinHoverAnims, keys); - prune(pinPressAnims, keys); - prune(deleteHoverAnims, keys); - prune(deletePressAnims, keys); - } - - private String generateRandomNickname() { - Random random = new Random(); - StringBuilder username = new StringBuilder(); - char[] vowels = {'a', 'e', 'i', 'o', 'u'}; - char[] consonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'}; - for (int attempts = 0; attempts < 10; attempts++) { - username.setLength(0); - int length = 6 + random.nextInt(5); - boolean startVowel = random.nextBoolean(); - for (int i = 0; i < length; i++) { - username.append((i & 1) == 0 ? (startVowel ? vowels[random.nextInt(vowels.length)] : consonants[random.nextInt(consonants.length)]) : (startVowel ? consonants[random.nextInt(consonants.length)] : vowels[random.nextInt(vowels.length)])); - } - if (random.nextInt(100) < 30) username.append(random.nextInt(100)); - String candidate = Character.toUpperCase(username.charAt(0)) + username.substring(1); - if (accountConfig.findByName(candidate) == null) return candidate; - } - return "User" + (System.currentTimeMillis() % 1000L); - } - - private void closeToParent() { - if (minecraft != null) ClientScreen.show(minecraft, parent); - } - - private void draw(TextRenderer renderer, String text, float x, float y, float size, int argb) { - if (renderer == null || text == null || text.isEmpty()) return; - renderer.setAlpha(1.0); - renderer.begin(size, false, false); - renderer.render(text, x, y, new RenderColor(argb), false); - renderer.end(); - } - - private void drawCentered(TextRenderer renderer, String text, float centerX, float y, float size, int argb) { - draw(renderer, text, centerX - width(renderer, text, size) * 0.5f, y, size, argb); - } - - private float width(TextRenderer renderer, String text, float size) { - if (renderer == null || text == null) return 0f; - renderer.begin(size, true, false); - float w = (float) renderer.getWidth(text, false); - renderer.end(); - return w; - } - - private String ellipsize(String text, float size, float maxWidth) { - if (text == null || text.isEmpty()) return ""; - if (width(bodyRenderer, text, size) <= maxWidth) return text; - String out = text; - while (out.length() > 3 && width(bodyRenderer, out + "...", size) > maxWidth) - out = out.substring(0, out.length() - 1); - return out + "..."; - } - - private record Layout(float leftX, float topY, float rightX, float bottomY) { - } - - private record PanelColors( - int bgTopLeft, - int bgTopRight, - int bgBottomRight, - int bgBottomLeft, - int headerTopLeft, - int headerTopRight, - int headerBottomRight, - int headerBottomLeft, - int stroke, - int strokeSoft, - int shadow, - int title, - int label, - int muted, - int mutedLabel, - int surface, - int surfaceHover, - int accent, - int accentSoft - ) { - } -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualMainMenuScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualMainMenuScreen.java index 2ea2453..6b1094b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualMainMenuScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualMainMenuScreen.java @@ -7,6 +7,7 @@ package dev.loki.lovisual.features.gui.mainmenu; +import dev.loki.lovisual.features.gui.mainmenu.alt.LoVisualAltManagerScreen; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.account.AccountConfig; import dev.loki.lovisual.features.account.AccountEntry; @@ -25,21 +26,21 @@ import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.util.Util; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.animation.AnimatedClockText; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.postprocess.MenuBackgroundRenderer; +import dev.loki.lovisual.render.engine.postprocess.render.MenuBackgroundRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; import dev.loki.lovisual.util.logging.DebugLog; import java.time.LocalDate; @@ -127,7 +128,7 @@ public final class LoVisualMainMenuScreen extends Screen { @Override public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { if (shouldUseVanillaTitleScreen()) { - switchToVanillaTitleScreen(null); + switchToVanillaTitleScreen(null, false); return; } @@ -162,7 +163,7 @@ public final class LoVisualMainMenuScreen extends Screen { } Renderer2D.COLOR.render(); } catch (Throwable t) { - switchToVanillaTitleScreen(t); + switchToVanillaTitleScreen(t, true); } finally { try { ViewportContext.end(context); @@ -223,17 +224,19 @@ public final class LoVisualMainMenuScreen extends Screen { MainConfig cfg = MainConfig.get(); String mode = cfg != null ? cfg.getMenuBackgroundMode() : "off"; if (mode == null || mode.equalsIgnoreCase("off")) { - switchToVanillaTitleScreen(null); + switchToVanillaTitleScreen(null, false); return; } MenuBackgroundRenderer.render(mc, mode.equalsIgnoreCase("aurora")); } - private void switchToVanillaTitleScreen(Throwable t) { - forceVanillaTitleScreen = true; + private void switchToVanillaTitleScreen(Throwable t, boolean sticky) { + if (sticky) { + forceVanillaTitleScreen = true; + } if (t != null) { DebugLog.errorOnce("main_menu_vanilla_fallback", "Main menu failed, switching to vanilla title screen", t); - } else { + } else if (sticky) { DebugLog.warnOnce("main_menu_vanilla_fallback", "Main menu switched to vanilla title screen"); } Minecraft mc = minecraft != null ? minecraft : Minecraft.getInstance(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualProxyManagerScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualProxyManagerScreen.java index 2a8775e..d3e9727 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualProxyManagerScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/LoVisualProxyManagerScreen.java @@ -8,21 +8,21 @@ package dev.loki.lovisual.features.gui.mainmenu; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.math.HudScale; -import dev.loki.lovisual.render.engine.postprocess.MenuBackgroundRenderer; +import dev.loki.lovisual.render.engine.postprocess.render.MenuBackgroundRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.util.proxy.ProxyBackend; -import dev.loki.lovisual.util.proxy.ProxyEntry; -import dev.loki.lovisual.util.proxy.ProxyType; +import dev.loki.lovisual.util.proxy.model.ProxyEntry; +import dev.loki.lovisual.util.proxy.model.ProxyType; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltAccountOps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltAccountOps.java new file mode 100644 index 0000000..f17a10d --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltAccountOps.java @@ -0,0 +1,59 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt; + +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.account.AccountEntry; +import dev.loki.lovisual.features.account.SkinManager; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Random; + +/** + * Account mutation helpers for the alt manager screen. + */ +public final class AltAccountOps { + private static final DateTimeFormatter ACCOUNT_DATE = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); + + private AltAccountOps() { + } + + public static void addAccount(AccountConfig config, String nickname) { + String clean = normalize(nickname); + if (clean.isEmpty()) return; + AccountEntry entry = config.addAccount(clean, LocalDateTime.now().format(ACCOUNT_DATE), null); + if (entry != null) { + config.setActiveAccount(entry); + SkinManager.getSkin(clean); + } + } + + public static String normalize(String s) { + return s == null ? "" : s.trim(); + } + + public static String generateRandomNickname(AccountConfig config) { + Random random = new Random(); + StringBuilder username = new StringBuilder(); + char[] vowels = {'a', 'e', 'i', 'o', 'u'}; + char[] consonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'}; + for (int attempts = 0; attempts < 10; attempts++) { + username.setLength(0); + int length = 6 + random.nextInt(5); + boolean startVowel = random.nextBoolean(); + for (int i = 0; i < length; i++) { + username.append((i & 1) == 0 ? (startVowel ? vowels[random.nextInt(vowels.length)] : consonants[random.nextInt(consonants.length)]) : (startVowel ? consonants[random.nextInt(consonants.length)] : vowels[random.nextInt(vowels.length)])); + } + if (random.nextInt(100) < 30) username.append(random.nextInt(100)); + String candidate = Character.toUpperCase(username.charAt(0)) + username.substring(1); + if (config.findByName(candidate) == null) return candidate; + } + return "User" + (System.currentTimeMillis() % 1000L); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltManagerController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltManagerController.java new file mode 100644 index 0000000..7130fba --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltManagerController.java @@ -0,0 +1,200 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt; + +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.account.SkinManager; +import dev.loki.lovisual.features.gui.mainmenu.alt.auth.AltMicrosoftAuth; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.Layout; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.math.HudScale; +import net.minecraft.client.Minecraft; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Input/state controller for the alt manager screen: nickname entry, mode toggling, scrolling and left-panel click routing. + */ +public final class AltManagerController { + private final AccountConfig accountConfig; + private final AltMicrosoftAuth auth; + private final AltPanelAnims anims = new AltPanelAnims(); + private boolean microsoftMode; + private String nicknameText = ""; + private boolean nicknameFieldFocused; + private float fixedWidth; + private float fixedHeight; + private float scrollOffset; + private float targetScrollOffset; + + public AltManagerController(AccountConfig accountConfig, AltMicrosoftAuth auth) { + this.accountConfig = accountConfig; + this.auth = auth; + } + + public final AltPanelAnims getAnims() { return anims; } + + public final boolean isMicrosoftMode() { return microsoftMode; } + + public final void setMicrosoftMode(boolean microsoftMode) { this.microsoftMode = microsoftMode; } + + public final String getNickname() { return nicknameText; } + + public final boolean isNicknameFocused() { return nicknameFieldFocused; } + + public final float getScrollOffset() { return scrollOffset; } + + public final float getFixedWidth() { return fixedWidth; } + + public final float getFixedHeight() { return fixedHeight; } + + public void updateUiMetrics(Minecraft mc, int width, int height) { + if (mc == null) { + fixedWidth = width; + fixedHeight = height; + return; + } + int fbw = mc.getWindow().getWidth(); + int fbh = mc.getWindow().getHeight(); + fixedWidth = Math.max(1f, HudScale.virtualWidth(fbw, fbh)); + fixedHeight = Math.max(1f, HudScale.virtualHeight(fbw, fbh)); + } + + public void clampScroll() { + float max = Math.max(0f, (float) Math.ceil(accountConfig.getSortedAccounts().size() / 2.0) * (CARD_H + CARD_GAP) - (RIGHT_H - 31f * SCALE)); + scrollOffset = Math.min(Math.max(scrollOffset, 0f), max); + targetScrollOffset = Math.min(Math.max(targetScrollOffset, 0f), max); + } + + public boolean scrollBy(float mouseX, float mouseY, float amount) { + Layout l = layout(); + if (!inside(mouseX, mouseY, l.rightX(), l.topY(), RIGHT_W, RIGHT_H)) return false; + targetScrollOffset -= amount * (25f * SCALE); + clampScroll(); + return true; + } + + public void updateScroll() { + float dt = AnimationUtility.deltaTime(); + scrollOffset = animate(scrollOffset, targetScrollOffset, dt, 14f); + scrollOffset = AnimationUtility.snap(scrollOffset, targetScrollOffset, 0.25f); + } + + public Layout layout() { + float totalW = LEFT_W + GAP + RIGHT_W; + float totalH = LEFT_TOP_H + GAP + LEFT_BOTTOM_H; + return new Layout( + fixedWidth * 0.5f - totalW * 0.5f, + fixedHeight * 0.5f - totalH * 0.5f, + fixedWidth * 0.5f - totalW * 0.5f + LEFT_W + GAP, + fixedHeight * 0.5f - totalH * 0.5f + LEFT_TOP_H + GAP + ); + } + + public boolean handleClick(float mouseX, float mouseY) { + Layout l = layout(); + float modeY = l.topY() + 27f * SCALE; + float modeX = l.leftX() + 5f * SCALE; + float modeW = LEFT_W - 10f * SCALE; + float modeGap = 2f * SCALE; + float modeItemW = (modeW - modeGap) * 0.5f; + if (inside(mouseX, mouseY, modeX, modeY, modeItemW, 13f * SCALE)) { + anims.pressOfflineMode(); + microsoftMode = false; + nicknameFieldFocused = false; + return true; + } + if (inside(mouseX, mouseY, modeX + modeItemW + modeGap, modeY, modeItemW, 13f * SCALE)) { + anims.pressMicrosoftMode(); + microsoftMode = true; + nicknameFieldFocused = false; + return true; + } + float fieldX = l.leftX() + 5f * SCALE; + float fieldY = l.topY() + 57f * SCALE; + float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; + if (!microsoftMode && inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H)) { + nicknameFieldFocused = true; + return true; + } + nicknameFieldFocused = false; + if (microsoftMode && inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H)) { + auth.copyAuthData(); + return true; + } + float addX = fieldX + fieldW + 3f * SCALE; + if (inside(mouseX, mouseY, addX, fieldY, ADD_SIZE, ADD_SIZE)) { + anims.pressAdd(); + if (microsoftMode) auth.start(); + else commitNickname(); + return true; + } + float buttonX = l.leftX() + 5f * SCALE; + float buttonW = LEFT_W - 10f * SCALE; + float randomY = fieldY + FIELD_H + 5f * SCALE; + float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; + float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; + if (inside(mouseX, mouseY, buttonX, randomY, buttonW, TOP_BUTTON_H)) { + anims.pressRandom(); + if (microsoftMode) { + if (auth.getUserCode().isBlank()) auth.start(); + else auth.copyAuthData(); + } else { + AltAccountOps.addAccount(accountConfig, AltAccountOps.generateRandomNickname(accountConfig)); + nicknameText = ""; + } + return true; + } + if (microsoftMode && inside(mouseX, mouseY, buttonX, openSiteY, buttonW, TOP_BUTTON_H)) { + anims.pressOpenSite(); + auth.openLoginSite(); + return true; + } + if (inside(mouseX, mouseY, buttonX, clearY, buttonW, TOP_BUTTON_H)) { + anims.pressClear(); + accountConfig.clearAllAccounts(); + SkinManager.clearCache(); + scrollOffset = 0f; + targetScrollOffset = 0f; + return true; + } + return false; + } + + public void commitNickname() { + if (!nicknameText.isBlank()) { + AltAccountOps.addAccount(accountConfig, nicknameText); + nicknameText = ""; + } + } + + public boolean handleKey(int key) { + if (key == 259) { + if (!nicknameText.isEmpty()) nicknameText = nicknameText.substring(0, nicknameText.length() - 1); + return true; + } + if (key == 257 || key == 335) { + commitNickname(); + nicknameFieldFocused = false; + return true; + } + if (key == 256) { + nicknameFieldFocused = false; + return true; + } + return false; + } + + public boolean handleChar(int codepoint) { + if ((Character.isLetterOrDigit(codepoint) || codepoint == '_') && nicknameText.length() < 16) { + nicknameText += Character.toString(codepoint); + return true; + } + return false; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltPanelAnims.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltPanelAnims.java new file mode 100644 index 0000000..16dc87f --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/AltPanelAnims.java @@ -0,0 +1,108 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt; + +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Hover/press animation state for the left control panel of the alt manager. + */ +public final class AltPanelAnims { + private float fieldHoverAnim; + private float fieldFocusAnim; + private float addHoverAnim; + private float addPressAnim; + private float offlineModeHoverAnim; + private float microsoftModeHoverAnim; + private float offlineModePressAnim; + private float microsoftModePressAnim; + private float randomHoverAnim; + private float randomPressAnim; + private float openSiteHoverAnim; + private float openSitePressAnim; + private float clearHoverAnim; + private float clearPressAnim; + + public float fieldHover() { return fieldHoverAnim; } + + public float fieldFocus() { return fieldFocusAnim; } + + public float addHover() { return addHoverAnim; } + + public float addPress() { return addPressAnim; } + + public float offlineModeHover() { return offlineModeHoverAnim; } + + public float microsoftModeHover() { return microsoftModeHoverAnim; } + + public float offlineModePress() { return offlineModePressAnim; } + + public float microsoftModePress() { return microsoftModePressAnim; } + + public float randomHover() { return randomHoverAnim; } + + public float randomPress() { return randomPressAnim; } + + public float openSiteHover() { return openSiteHoverAnim; } + + public float openSitePress() { return openSitePressAnim; } + + public float clearHover() { return clearHoverAnim; } + + public float clearPress() { return clearPressAnim; } + + public void pressOfflineMode() { offlineModePressAnim = 1f; } + + public void pressMicrosoftMode() { microsoftModePressAnim = 1f; } + + public void pressAdd() { addPressAnim = 1f; } + + public void pressRandom() { randomPressAnim = 1f; } + + public void pressOpenSite() { openSitePressAnim = 1f; } + + public void pressClear() { clearPressAnim = 1f; } + + public void updateHover(float mouseX, float mouseY, AltUiMetrics.Layout l, AltManagerController controller) { + float dt = AnimationUtility.deltaTime(); + boolean microsoftMode = controller.isMicrosoftMode(); + + float fieldX = l.leftX() + 5f * SCALE; + float fieldY = l.topY() + 57f * SCALE; + float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; + float addX = fieldX + fieldW + 3f * SCALE; + float buttonX = l.leftX() + 5f * SCALE; + float buttonW = LEFT_W - 10f * SCALE; + float randomY = fieldY + FIELD_H + 5f * SCALE; + float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; + float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; + float modeX = l.leftX() + 5f * SCALE; + float modeY = l.topY() + 27f * SCALE; + float modeW = LEFT_W - 10f * SCALE; + float modeGap = 2f * SCALE; + float modeItemW = (modeW - modeGap) * 0.5f; + + fieldHoverAnim = animate(fieldHoverAnim, inside(mouseX, mouseY, fieldX, fieldY, fieldW, FIELD_H) ? 1f : 0f, dt, 11f); + fieldFocusAnim = animate(fieldFocusAnim, !microsoftMode && controller.isNicknameFocused() ? 1f : 0f, dt, 10f); + addHoverAnim = animate(addHoverAnim, inside(mouseX, mouseY, addX, fieldY, ADD_SIZE, ADD_SIZE) ? 1f : 0f, dt, 12f); + offlineModeHoverAnim = animate(offlineModeHoverAnim, inside(mouseX, mouseY, modeX, modeY, modeItemW, 13f * SCALE) ? 1f : 0f, dt, 11f); + microsoftModeHoverAnim = animate(microsoftModeHoverAnim, inside(mouseX, mouseY, modeX + modeItemW + modeGap, modeY, modeItemW, 13f * SCALE) ? 1f : 0f, dt, 11f); + offlineModePressAnim = animate(offlineModePressAnim, 0f, dt, 8f); + microsoftModePressAnim = animate(microsoftModePressAnim, 0f, dt, 8f); + randomHoverAnim = animate(randomHoverAnim, inside(mouseX, mouseY, buttonX, randomY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); + openSiteHoverAnim = animate(openSiteHoverAnim, microsoftMode && inside(mouseX, mouseY, buttonX, openSiteY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); + clearHoverAnim = animate(clearHoverAnim, inside(mouseX, mouseY, buttonX, clearY, buttonW, TOP_BUTTON_H) ? 1f : 0f, dt, 11f); + addPressAnim = animate(addPressAnim, 0f, dt, 8f); + randomPressAnim = animate(randomPressAnim, 0f, dt, 7f); + openSitePressAnim = animate(openSitePressAnim, 0f, dt, 7f); + clearPressAnim = animate(clearPressAnim, 0f, dt, 7f); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/LoVisualAltManagerScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/LoVisualAltManagerScreen.java new file mode 100644 index 0000000..d9dac19 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/LoVisualAltManagerScreen.java @@ -0,0 +1,132 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt; + +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.gui.mainmenu.alt.auth.AltMicrosoftAuth; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltManagerRenderer; +import dev.loki.lovisual.render.engine.postprocess.render.MenuBackgroundRenderer; +import dev.loki.lovisual.util.screen.ClientScreen; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.network.chat.Component; +import dev.loki.lovisual.render.engine.math.HudScale; + +/** + * Account manager screen facade: wires the controller, Microsoft auth flow and renderer together. + */ +public final class LoVisualAltManagerScreen extends Screen { + private final Screen parent; + private final AltMicrosoftAuth auth = new AltMicrosoftAuth(AccountConfig.get()); + private final AltManagerController controller = new AltManagerController(AccountConfig.get(), auth); + private AltManagerRenderer renderer; + + public LoVisualAltManagerScreen(Screen parent) { + this(parent, false); + } + + public LoVisualAltManagerScreen(Screen parent, boolean microsoftMode) { + super(Component.translatable("screen.lovisual.alt_manager.title")); + this.parent = parent; + controller.setMicrosoftMode(microsoftMode); + } + + @Override + protected void init() { + renderer = AltManagerRenderer.create(); + } + + @Override + public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { + controller.updateUiMetrics(minecraft, width, height); + renderShaderBackground(context); + renderer.drawFrame(context, controller, auth, toFixedX(mouseX), toFixedY(mouseY)); + } + + @Override + public void extractBackground(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { + } + + @Override + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { + if (click.button() != 0) return true; + float mx = toFixedX((float) click.x()); + float my = toFixedY((float) click.y()); + if (controller.handleClick(mx, my)) return true; + renderer.handleCardClick(mx, my, controller); + return true; + } + + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmount, double verticalAmount) { + return controller.scrollBy(toFixedX((float) mouseX), toFixedY((float) mouseY), (float) verticalAmount); + } + + @Override + public boolean keyPressed(KeyEvent input) { + if (controller.isNicknameFocused() && controller.handleKey(input.key())) return true; + if (input.key() == 256) { + closeToParent(); + return true; + } + return super.keyPressed(input); + } + + @Override + public boolean charTyped(CharacterEvent input) { + if (controller.isNicknameFocused() && controller.handleChar(input.codepoint())) return true; + return super.charTyped(input); + } + + @Override + public boolean isPauseScreen() { + return false; + } + + @Override + public boolean shouldCloseOnEsc() { + return false; + } + + private void closeToParent() { + if (minecraft != null) ClientScreen.show(minecraft, parent); + } + + private float toFixedX(float screenX) { + Minecraft mc = minecraft; + if (mc == null) return screenX; + float hudScale = HudScale.scale(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + if (hudScale <= 0f) return screenX; + return screenX * mc.getWindow().getGuiScale() / hudScale; + } + + private float toFixedY(float screenY) { + Minecraft mc = minecraft; + if (mc == null) return screenY; + float hudScale = HudScale.scale(mc.getWindow().getWidth(), mc.getWindow().getHeight()); + if (hudScale <= 0f) return screenY; + return screenY * mc.getWindow().getGuiScale() / hudScale; + } + + private void renderShaderBackground(GuiGraphicsExtractor context) { + Minecraft mc = this.minecraft; + if (mc == null) return; + MainConfig cfg = MainConfig.get(); + String mode = cfg != null ? cfg.getMenuBackgroundMode() : "off"; + if (mode == null || mode.equalsIgnoreCase("off")) { + context.fill(0, 0, width, height, 0xFF000000); + return; + } + MenuBackgroundRenderer.render(mc, mode.equalsIgnoreCase("aurora")); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/auth/AltMicrosoftAuth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/auth/AltMicrosoftAuth.java new file mode 100644 index 0000000..fbbd1e4 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/auth/AltMicrosoftAuth.java @@ -0,0 +1,171 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.auth; + +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltAccountOps; +import dev.loki.lovisual.features.account.AccountEntry; +import dev.loki.lovisual.features.account.SkinManager; +import dev.loki.lovisual.util.session.MicrosoftSessionResult; +import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftAuthService; +import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftDeviceCode; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.util.Util; + +import java.util.concurrent.CompletionException; +import java.util.concurrent.ExecutionException; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.tr; + +/** + * Microsoft device-code authentication flow state for the alt manager screen. + */ +public final class AltMicrosoftAuth { + private final AccountConfig accountConfig; + private Runnable onSettled = () -> { + }; + + private boolean authPending; + private String userCode = ""; + private String verificationUrl = ""; + private String status = ""; + + public AltMicrosoftAuth(AccountConfig accountConfig) { + this.accountConfig = accountConfig; + } + + public void setOnSettled(Runnable onSettled) { + this.onSettled = onSettled == null ? () -> { + } : onSettled; + } + + public boolean isAuthPending() { + return authPending; + } + + public String getUserCode() { + return userCode; + } + + public String getVerificationUrl() { + return verificationUrl; + } + + public String getStatus() { + return status; + } + + public void start() { + if (authPending) { + copyAuthData(); + return; + } + + authPending = true; + userCode = ""; + verificationUrl = ""; + status = tr("screen.lovisual.alt_manager.status.requesting_code"); + + MicrosoftAuthService.requestDeviceCode() + .thenCompose(code -> { + dispatchToClient(() -> showDeviceCode(code)); + return MicrosoftAuthService.loginWithDeviceCode(code); + }) + .whenComplete((session, throwable) -> dispatchToClient(() -> { + if (throwable != null) { + finish(null, throwable); + } else { + finish(session, null); + } + })); + } + + private void showDeviceCode(MicrosoftDeviceCode code) { + if (code == null) { + return; + } + userCode = code.userCode(); + verificationUrl = code.verificationUri().toString(); + status = tr("screen.lovisual.alt_manager.status.use_link"); + copyAuthData(); + } + + private void finish(MicrosoftSessionResult session, Throwable throwable) { + authPending = false; + if (throwable != null) { + status = tr("screen.lovisual.alt_manager.status.auth_failed"); + userCode = ""; + verificationUrl = ""; + Throwable root = unwrap(throwable); + if (root != null && root.getMessage() != null && !root.getMessage().isBlank()) { + status = ellipsizeStatus(root.getMessage()); + } + return; + } + + AccountEntry entry = accountConfig.addMicrosoftAccount(session); + if (entry == null) { + status = tr("screen.lovisual.alt_manager.status.auth_failed"); + userCode = ""; + verificationUrl = ""; + return; + } + + accountConfig.setActiveAccount(entry); + SkinManager.getSkin(entry.getName()); + status = tr("screen.lovisual.alt_manager.status.authorized", entry.getName()); + userCode = ""; + verificationUrl = ""; + onSettled.run(); + } + + public void copyAuthData() { + if (!userCode.isBlank()) { + ClipboardUtil.copy(userCode); + status = tr("screen.lovisual.alt_manager.status.code_copied"); + } else if (!verificationUrl.isBlank()) { + ClipboardUtil.copy(verificationUrl); + status = tr("screen.lovisual.alt_manager.status.link_copied"); + } + } + + public void openLoginSite() { + String target = verificationUrl.isBlank() ? "https://www.microsoft.com/link" : verificationUrl; + Util.getPlatform().openUri(target); + } + + private static void dispatchToClient(Runnable runnable) { + if (runnable == null) { + return; + } + Minecraft mc = Minecraft.getInstance(); + if (mc == null) { + runnable.run(); + return; + } + if (mc.isSameThread()) { + runnable.run(); + } else { + mc.execute(runnable); + } + } + + private static Throwable unwrap(Throwable throwable) { + Throwable current = throwable; + while ((current instanceof CompletionException || current instanceof ExecutionException) && current.getCause() != null) { + current = current.getCause(); + } + return current; + } + + private static String ellipsizeStatus(String text) { + String clean = AltAccountOps.normalize(text); + return clean.length() <= 34 ? clean : clean.substring(0, 31) + "..."; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltFieldsRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltFieldsRenderer.java new file mode 100644 index 0000000..7d59cc8 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltFieldsRenderer.java @@ -0,0 +1,100 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render; + +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltManagerController; +import dev.loki.lovisual.features.gui.mainmenu.alt.auth.AltMicrosoftAuth; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltPanelAnims; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PanelColors; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Renderer for the alt manager input widgets: microsoft status field, nickname field and add button. + */ +final class AltFieldsRenderer { + private final TextRenderer bodyRenderer; + + AltFieldsRenderer(TextRenderer bodyRenderer) { + this.bodyRenderer = bodyRenderer; + } + + void renderMicrosoftField(AltPanelAnims anims, AltMicrosoftAuth auth, float x, float y, float w, float h, PanelColors c) { + float hoverAnim = AnimationUtility.easeOutCubic(anims.fieldHover()); + int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 188), withAlpha(c.surfaceHover(), 208), hoverAnim * 0.45f); + int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 176), withAlpha(0xFF0D1118, 196), 0.18f); + int stroke = HudRenderUtil.mixColor(c.stroke(), auth.isAuthPending() ? c.accentSoft() : c.strokeSoft(), auth.isAuthPending() ? 0.45f : hoverAnim * 0.60f); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); + if (auth.isAuthPending()) { + float pulse = 0.5f + 0.5f * (float) Math.sin(System.currentTimeMillis() / 180.0); + int glow = withAlpha(c.accentSoft(), Math.round(22f + 32f * pulse)); + Renderer2D.COLOR.roundedRectGradientQuad(x + 1.2f * SCALE, y + h - 1.6f * SCALE, w - 2.4f * SCALE, 1.1f * SCALE, 0.6f * SCALE, 1f, + glow, withAlpha(c.accent(), Math.round(20f + 24f * pulse)), withAlpha(c.accent(), Math.round(20f + 24f * pulse)), glow); + } + + String display; + int color; + if (!auth.getUserCode().isBlank()) { + display = tr("screen.lovisual.alt_manager.code", auth.getUserCode()); + color = c.title(); + } else if (!auth.getStatus().isBlank()) { + display = auth.getStatus(); + color = auth.isAuthPending() ? c.title() : c.muted(); + } else { + display = tr("screen.lovisual.alt_manager.ready_to_sign_in"); + color = c.mutedLabel(); + } + draw(bodyRenderer, ellipsize(bodyRenderer, display, FIELD_FONT, w - 8f * SCALE), x + 4f * SCALE, y + 4.3f * SCALE, FIELD_FONT, color); + } + + void renderField(AltManagerController controller, float x, float y, float w, float h, PanelColors c) { + AltPanelAnims anims = controller.getAnims(); + float hoverAnim = AnimationUtility.easeOutCubic(anims.fieldHover()); + float focusAnim = AnimationUtility.easeOutCubic(anims.fieldFocus()); + int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 188), withAlpha(c.surfaceHover(), 208), hoverAnim * 0.45f + focusAnim * 0.16f); + int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 176), withAlpha(0xFF0D1118, 196), 0.18f); + int stroke = controller.isNicknameFocused() + ? HudRenderUtil.mixColor(c.strokeSoft(), c.accentSoft(), 0.55f) + : HudRenderUtil.mixColor(c.stroke(), c.strokeSoft(), hoverAnim * 0.72f); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); + if (focusAnim > 0.01f) { + int glowLeft = withAlpha(c.accentSoft(), Math.round(48f * focusAnim)); + int glowRight = withAlpha(c.accent(), Math.round(28f * focusAnim)); + Renderer2D.COLOR.roundedRectGradientQuad(x + 1.2f * SCALE, y + h - 1.6f * SCALE, w - 2.4f * SCALE, 1.1f * SCALE, 0.6f * SCALE, 1f, + glowLeft, glowRight, glowRight, glowLeft); + } + + String nicknameText = controller.getNickname(); + boolean caretOn = controller.isNicknameFocused() && AnimationUtility.blink(500L); + String display = nicknameText.isEmpty() && !controller.isNicknameFocused() ? tr("screen.lovisual.alt_manager.enter_nick") : nicknameText + (caretOn ? "|" : ""); + draw(bodyRenderer, display, x + 4f * SCALE, y + 4.3f * SCALE, FIELD_FONT, nicknameText.isEmpty() && !controller.isNicknameFocused() ? c.mutedLabel() : c.title()); + } + + void renderAddButton(AltPanelAnims anims, float x, float y, PanelColors c) { + float hoverAnim = AnimationUtility.easeOutCubic(anims.addHover()); + float pressAnim = AnimationUtility.easeOutCubic(anims.addPress()); + int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 172), withAlpha(c.surfaceHover(), 202), hoverAnim * 0.72f); + int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 162), withAlpha(0xFF0D1118, 186), 0.20f); + int stroke = HudRenderUtil.mixColor(c.stroke(), c.strokeSoft(), hoverAnim * 0.65f + pressAnim * 0.20f); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, ADD_SIZE, ADD_SIZE, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, ADD_SIZE, ADD_SIZE, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); + + float cx = x + ADD_SIZE * 0.5f; + float cy = y + ADD_SIZE * 0.5f; + float plusLift = (hoverAnim * 0.18f + pressAnim * 0.32f) * SCALE; + float plusStretch = 1f + hoverAnim * 0.04f + pressAnim * 0.08f; + Renderer2D.COLOR.roundedRect(cx - 2.5f * SCALE * plusStretch, cy - 0.6f * SCALE - plusLift, 5f * SCALE * plusStretch, 1.2f * SCALE, 0.5f * SCALE, 1f, c.title()); + Renderer2D.COLOR.roundedRect(cx - 0.6f * SCALE, cy - 2.5f * SCALE * plusStretch - plusLift, 1.2f * SCALE, 5f * SCALE * plusStretch, 0.5f * SCALE, 1f, c.title()); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltManagerRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltManagerRenderer.java new file mode 100644 index 0000000..47b9a07 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltManagerRenderer.java @@ -0,0 +1,157 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render; + +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltManagerController; +import dev.loki.lovisual.features.gui.mainmenu.alt.auth.AltMicrosoftAuth; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.cards.AltCardsRenderer; +import dev.loki.lovisual.features.theme.Theme; +import dev.loki.lovisual.features.theme.Themes; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import net.minecraft.client.gui.GuiGraphicsExtractor; + +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.Layout; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PanelColors; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.GAP; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.LEFT_BOTTOM_H; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.LEFT_TOP_H; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.LEFT_W; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PANEL_R; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PANEL_SHADOW; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.RIGHT_H; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.RIGHT_W; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.SCALE; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.animate; +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.withAlpha; + +/** + * Root renderer for the alt manager screen: panel backgrounds, palette and frame orchestration. + */ +public final class AltManagerRenderer { + private final TextRenderer titleRenderer; + private final TextRenderer bodyRenderer; + private final TextRenderer menuIconRenderer; + private final TextRenderer guiIconRenderer; + private final TextRenderer iconRenderer; + private final AltPanelsRenderer panels; + private final AltCardsRenderer cards; + private float openAnim; + + private AltManagerRenderer(TextRenderer titleRenderer, TextRenderer bodyRenderer, TextRenderer menuIconRenderer, + TextRenderer guiIconRenderer, TextRenderer iconRenderer, + AltPanelsRenderer panels, AltCardsRenderer cards) { + this.titleRenderer = titleRenderer; + this.bodyRenderer = bodyRenderer; + this.menuIconRenderer = menuIconRenderer; + this.guiIconRenderer = guiIconRenderer; + this.iconRenderer = iconRenderer; + this.panels = panels; + this.cards = cards; + } + + public static AltManagerRenderer create() { + TextRenderer title = Fonts.renderer("Inter", FontInfo.Type.Bold, TextRenderer.get()); + TextRenderer body = Fonts.renderer("InterMedium", FontInfo.Type.Regular, title); + TextRenderer menuIcon = Fonts.renderer("MainMenuIcons", FontInfo.Type.Regular, TextRenderer.get()); + TextRenderer guiIcon = Fonts.renderer("GuiIcons", FontInfo.Type.Regular, menuIcon); + TextRenderer icon = Fonts.renderer("RichIcons", FontInfo.Type.Regular, menuIcon); + return new AltManagerRenderer(title, body, menuIcon, guiIcon, icon, + new AltPanelsRenderer(title, body, guiIcon, icon), new AltCardsRenderer(title, body, menuIcon, guiIcon)); + } + + public void drawFrame(GuiGraphicsExtractor context, AltManagerController controller, AltMicrosoftAuth auth, + float mouseX, float mouseY) { + controller.clampScroll(); + controller.updateScroll(); + openAnim = animate(openAnim, 1f, AnimationUtility.deltaTime(), 7f); + float open = AnimationUtility.easeOutCubic(openAnim); + PanelColors c = colors(open); + Layout l = controller.layout(); + + ViewportContext.beginUnscaledLogical(context); + Renderer2D.COLOR.begin(); + try { + drawDimmer(controller); + renderPanel(l.leftX(), l.topY(), LEFT_W, LEFT_TOP_H, c, open); + renderPanel(l.leftX(), l.bottomY(), LEFT_W, LEFT_BOTTOM_H, c, open); + renderPanel(l.rightX(), l.topY(), RIGHT_W, RIGHT_H, c, open); + + panels.draw(controller, auth, mouseX, mouseY, l, c); + cards.draw(context, controller, mouseX, mouseY, l, c); + } finally { + Renderer2D.COLOR.render(); + ViewportContext.end(context); + } + } + + public boolean handleCardClick(float mouseX, float mouseY, AltManagerController controller) { + return cards.handleClick(controller, mouseX, mouseY); + } + + private void renderPanel(float x, float y, float w, float h, PanelColors c, float open) { + Renderer2D.COLOR.blurRect(x, y, w, h, PANEL_R, 15f, 1.0f, 0.30f, 0xFFFFFF); + Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, h, PANEL_R, PANEL_SHADOW, 0.022f + open * 0.012f, c.shadow()); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, PANEL_R, 1f, c.bgTopLeft(), c.bgTopRight(), c.bgBottomRight(), c.bgBottomLeft()); + Renderer2D.COLOR.roundedRectMaskedQuad(x, y, w, 22f * SCALE, x, y, w, h, PANEL_R, 1f, + c.headerTopLeft(), c.headerTopRight(), c.headerBottomRight(), c.headerBottomLeft()); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, PANEL_R, 1f, 1f, HudRenderUtil.mixColor(c.stroke(), 0xFFFFFFFF, 0.04f), c.stroke(), 90f); + } + + private PanelColors colors(float alpha) { + int bgAlpha = Math.round(alpha * 120f); + int headerAlpha = Math.round(alpha * 150f); + int strokeAlpha = Math.round(alpha * 100f); + int shadowAlpha = Math.round(alpha * 80f); + int titleAlpha = Math.round(alpha * 255f); + int labelAlpha = Math.round(alpha * 155f); + + Themes.Theme theme = Theme.theme(); + int themeAccent = theme != null ? theme.accent() : 0xFFFFFFFF; + int themeAccentSoft = theme != null ? theme.accentSoft() : themeAccent; + + int bgTopLeft = withAlpha(0x0D0F14, bgAlpha); + int bgTopRight = withAlpha(0x101218, bgAlpha); + int bgBottomLeft = withAlpha(0x08090C, bgAlpha); + int bgBottomRight = withAlpha(0x0D0F14, bgAlpha); + int headerTopLeft = withAlpha(0x14171F, headerAlpha); + int headerTopRight = withAlpha(0x181B24, headerAlpha); + int headerBottomLeft = withAlpha(0x10131A, headerAlpha); + int headerBottomRight = withAlpha(0x14171F, headerAlpha); + int stroke = withAlpha(0x252A36, strokeAlpha); + int strokeSoft = withAlpha(0x3A4A5A, Math.round(alpha * 150f)); + int surface = withAlpha(0x1A1D24, Math.round(alpha * 160f)); + int surfaceHover = withAlpha(0x1A1F28, Math.round(alpha * 200f)); + int accent = withAlpha(themeAccent, titleAlpha); + int accentSoft = withAlpha(themeAccentSoft, Math.round(alpha * 180f)); + return new PanelColors( + bgTopLeft, bgTopRight, bgBottomRight, bgBottomLeft, + headerTopLeft, headerTopRight, headerBottomRight, headerBottomLeft, + stroke, strokeSoft, + withAlpha(0x060810, shadowAlpha), + withAlpha(0xFFFFFF, titleAlpha), + withAlpha(0xFFFFFF, labelAlpha), + withAlpha(0x808890, titleAlpha), + withAlpha(0x606878, labelAlpha), + surface, surfaceHover, accent, accentSoft + ); + } + + private void drawDimmer(AltManagerController controller) { + Themes.Theme t = Theme.theme(); + int soft = withAlpha(HudRenderUtil.mixColor(t.windowBg(), 0xFF000000, 0.46f), 140); + int deep = withAlpha(HudRenderUtil.mixColor(t.windowBg(), 0xFF000000, 0.68f), 180); + Renderer2D.COLOR.quad(0, 0, controller.getFixedWidth(), controller.getFixedHeight(), soft, soft, deep, deep); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltPanelsRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltPanelsRenderer.java new file mode 100644 index 0000000..8b9d5f1 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltPanelsRenderer.java @@ -0,0 +1,156 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render; + +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltManagerController; +import dev.loki.lovisual.features.gui.mainmenu.alt.auth.AltMicrosoftAuth; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltPanelAnims; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PanelColors; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import net.minecraft.client.gui.GuiGraphicsExtractor; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Renderer for the alt manager top-left panel: mode toggle and action buttons. + */ +final class AltPanelsRenderer { + private final TextRenderer titleRenderer; + private final TextRenderer bodyRenderer; + private final TextRenderer guiIconRenderer; + private final TextRenderer iconRenderer; + private final AltFieldsRenderer fields; + + AltPanelsRenderer(TextRenderer titleRenderer, TextRenderer bodyRenderer, TextRenderer guiIconRenderer, TextRenderer iconRenderer) { + this.titleRenderer = titleRenderer; + this.bodyRenderer = bodyRenderer; + this.guiIconRenderer = guiIconRenderer; + this.iconRenderer = iconRenderer; + this.fields = new AltFieldsRenderer(bodyRenderer); + } + + void draw(AltManagerController controller, AltMicrosoftAuth auth, + float mouseX, float mouseY, AltUiMetrics.Layout l, PanelColors c) { + controller.getAnims().updateHover(mouseX, mouseY, l, controller); + renderTopPanel(controller, auth, mouseX, mouseY, l.leftX(), l.topY(), c); + } + + private void renderTopPanel(AltManagerController controller, AltMicrosoftAuth auth, + float mouseX, float mouseY, float x, float y, PanelColors c) { + boolean microsoftMode = controller.isMicrosoftMode(); + AltPanelAnims anims = controller.getAnims(); + + drawCentered(titleRenderer, tr("screen.lovisual.alt_manager.account_panel"), x + LEFT_W * 0.5f - 8f * SCALE, y + 7f * SCALE, TITLE_FONT, c.title()); + renderModeToggle(microsoftMode, mouseX, mouseY, x + 5f * SCALE, y + 27f * SCALE, LEFT_W - 10f * SCALE, 13f * SCALE, c, anims); + + AltUiMetrics.draw(bodyRenderer, microsoftMode ? tr("screen.lovisual.alt_manager.microsoft_login") : tr("screen.lovisual.alt_manager.nickname"), x + 5f * SCALE, y + 47f * SCALE, LABEL_FONT, c.label()); + + float fieldX = x + 5f * SCALE; + float fieldY = y + 57f * SCALE; + float fieldW = LEFT_W - 10f * SCALE - ADD_SIZE - 3f * SCALE; + if (microsoftMode) { + fields.renderMicrosoftField(anims, auth, fieldX, fieldY, fieldW, FIELD_H, c); + } else { + fields.renderField(controller, fieldX, fieldY, fieldW, FIELD_H, c); + } + + float addX = fieldX + fieldW + 3f * SCALE; + fields.renderAddButton(anims, addX, fieldY, c); + + float buttonX = x + 5f * SCALE; + float buttonW = LEFT_W - 10f * SCALE; + float randomY = fieldY + FIELD_H + 5f * SCALE; + float openSiteY = randomY + TOP_BUTTON_H + 5f * SCALE; + float clearY = (microsoftMode ? openSiteY : randomY) + TOP_BUTTON_H + 5f * SCALE; + + String authAction = microsoftMode + ? (auth.getUserCode().isBlank() + ? (auth.isAuthPending() ? tr("screen.lovisual.alt_manager.waiting") : tr("screen.lovisual.alt_manager.authorize")) + : tr("screen.lovisual.alt_manager.copy_code")) + : tr("screen.lovisual.alt_manager.random"); + if (microsoftMode) { + renderSvgAction(buttonX, randomY, buttonW, TOP_BUTTON_H, c, false, authAction, "user-check", anims.randomHover(), anims.randomPress()); + } else { + renderAction(buttonX, randomY, buttonW, TOP_BUTTON_H, c, false, authAction, iconRenderer, "R", anims.randomHover(), anims.randomPress()); + } + if (microsoftMode) { + renderSvgAction(buttonX, openSiteY, buttonW, TOP_BUTTON_H, c, false, tr("screen.lovisual.alt_manager.open_site"), "external-link", anims.openSiteHover(), anims.openSitePress()); + } + renderAction(buttonX, clearY, buttonW, TOP_BUTTON_H, c, true, tr("screen.lovisual.alt_manager.clear_all"), guiIconRenderer, "O", anims.clearHover(), anims.clearPress()); + } + + private void renderModeToggle(boolean microsoftMode, float mouseX, float mouseY, float x, float y, float w, float h, PanelColors c, AltPanelAnims anims) { + float gap = 2f * SCALE; + float itemW = (w - gap) * 0.5f; + renderModeButton(x, y, itemW, h, c, tr("screen.lovisual.alt_manager.mode.offline"), !microsoftMode, + inside(mouseX, mouseY, x, y, itemW, h), anims.offlineModeHover(), anims.offlineModePress()); + renderModeButton(x + itemW + gap, y, itemW, h, c, tr("screen.lovisual.alt_manager.mode.microsoft"), microsoftMode, + inside(mouseX, mouseY, x + itemW + gap, y, itemW, h), anims.microsoftModeHover(), anims.microsoftModePress()); + } + + private void renderModeButton(float x, float y, float w, float h, PanelColors c, String label, boolean selected, + boolean hovered, float hoverValue, float pressValue) { + float hoverAnim = AnimationUtility.easeOutCubic(hoverValue); + float pressAnim = AnimationUtility.easeOutCubic(pressValue); + float activeAnim = selected ? 1f : 0f; + int fillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 170), withAlpha(c.surfaceHover(), 210), hoverAnim * 0.42f + activeAnim * 0.38f + pressAnim * 0.10f); + int fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 158), withAlpha(0x1A2418, 210), activeAnim * 0.24f + hoverAnim * 0.16f); + int stroke = HudRenderUtil.mixColor(c.stroke(), selected ? c.accentSoft() : c.strokeSoft(), activeAnim * 0.70f + hoverAnim * 0.30f + pressAnim * 0.10f); + int text = selected + ? HudRenderUtil.mixColor(c.title(), c.accent(), 0.28f) + : HudRenderUtil.mixColor(c.muted(), c.title(), hoverAnim * 0.35f); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); + float lift = (hovered ? hoverAnim : 0f) * 0.35f * SCALE + pressAnim * 0.35f * SCALE; + drawCentered(bodyRenderer, label, x + w * 0.5f, y + 4.1f * SCALE - lift, BUTTON_FONT, text); + } + + private void renderAction(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, TextRenderer iconRenderer, String glyph, float hoverValue, float pressValue) { + renderActionFull(x, y, w, h, c, destructive, label, iconRenderer, glyph, null, hoverValue, pressValue); + } + + private void renderSvgAction(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, String svgName, float hoverValue, float pressValue) { + renderActionFull(x, y, w, h, c, destructive, label, null, "", svgName, hoverValue, pressValue); + } + + private void renderActionFull(float x, float y, float w, float h, PanelColors c, boolean destructive, String label, TextRenderer iconRenderer, String glyph, String svgName, float hoverValue, float pressValue) { + float hoverAnim = AnimationUtility.easeOutCubic(hoverValue); + float pressAnim = AnimationUtility.easeOutCubic(pressValue); + int fillTop; + int fillBottom; + int stroke; + int text; + if (destructive) { + fillTop = HudRenderUtil.mixColor(withAlpha(0x1A1416, 170), withAlpha(0x4B2224, 212), 0.25f + hoverAnim * 0.45f + pressAnim * 0.12f); + fillBottom = HudRenderUtil.mixColor(withAlpha(0x120E10, 165), withAlpha(0x261012, 220), 0.20f + hoverAnim * 0.40f + pressAnim * 0.10f); + stroke = HudRenderUtil.mixColor(withAlpha(0x352A2A, 215), withAlpha(0x8C5054, 235), 0.22f + hoverAnim * 0.58f + pressAnim * 0.12f); + text = HudRenderUtil.mixColor(withAlpha(0xD0A0A0, 255), withAlpha(0xFFB2B2, 255), 0.24f + hoverAnim * 0.56f + pressAnim * 0.08f); + } else { + fillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 176), withAlpha(0x223746, 212), 0.20f + hoverAnim * 0.44f + pressAnim * 0.10f); + fillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 166), withAlpha(0x13292F, 220), 0.16f + hoverAnim * 0.40f + pressAnim * 0.08f); + stroke = HudRenderUtil.mixColor(c.stroke(), withAlpha(0x466A76, 228), 0.18f + hoverAnim * 0.50f + pressAnim * 0.10f); + text = HudRenderUtil.mixColor(withAlpha(0xD0D8E4, 255), withAlpha(0xEEF8FF, 255), 0.18f + hoverAnim * 0.38f + pressAnim * 0.08f); + } + + Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, h, 3f * SCALE, 7f * SCALE, 0.018f + hoverAnim * 0.015f, c.shadow()); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, h, 3f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, h, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f), stroke, 90f); + float contentLift = hoverAnim * 0.65f * SCALE + pressAnim * 0.55f * SCALE; + AltUiMetrics.draw(bodyRenderer, label, x + 6f * SCALE, y + 5f * SCALE - contentLift, BUTTON_FONT, text); + if (svgName != null && !svgName.isBlank()) { + float iconSize = 7.2f * SCALE; + Renderer2D.COLOR.svg(svgName, x + w - 11.3f * SCALE, y + (h - iconSize) * 0.5f - contentLift, iconSize, iconSize, SvgRenderOptions.overrideColor(text)); + } else { + AltUiMetrics.draw(iconRenderer, glyph, x + (destructive ? 77f : 75f) * SCALE, y + (destructive ? 2.2f : 3.1f) * SCALE - contentLift, ACTION_ICON_FONT, text); + } + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltUiMetrics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltUiMetrics.java new file mode 100644 index 0000000..3b85e18 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/AltUiMetrics.java @@ -0,0 +1,139 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render; + +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.color.RenderColor; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.util.Mth; + +import java.util.Map; +import java.util.Set; + +/** + * Shared layout metrics and small drawing helpers for the alt manager UI. + */ +public final class AltUiMetrics { + public static final float SCALE = 2.28f; + public static final float TEXT_SCALE = 1.30f; + + public static final float LEFT_W = 100f * SCALE; + public static final float LEFT_TOP_H = 137f * SCALE; + public static final float LEFT_BOTTOM_H = 58f * SCALE; + public static final float RIGHT_W = 300f * SCALE; + public static final float RIGHT_H = 165f * SCALE; + public static final float GAP = 5f * SCALE; + + public static final float PANEL_R = 6f * SCALE; + public static final float PANEL_SHADOW = 12f * SCALE; + public static final float LEFT_CARD_R = 4f * SCALE; + public static final float CARD_MARKER_W = 2.2f * SCALE; + + public static final float TITLE_FONT = 0.84f * TEXT_SCALE; + public static final float LABEL_FONT = 0.58f * TEXT_SCALE; + public static final float FIELD_FONT = 0.60f * TEXT_SCALE; + public static final float BUTTON_FONT = 0.58f * TEXT_SCALE; + public static final float ACTION_ICON_FONT = 1.02f * TEXT_SCALE; + public static final float CARD_NAME_FONT = 0.72f * TEXT_SCALE; + public static final float CARD_DATE_FONT = 0.61f * TEXT_SCALE; + public static final float ACTIVE_NAME_FONT = 0.66f * TEXT_SCALE; + public static final float ACTIVE_DATE_FONT = 0.50f * TEXT_SCALE; + public static final float EMPTY_FONT = 0.56f * TEXT_SCALE; + public static final float BADGE_FONT = 0.45f * TEXT_SCALE; + public static final float PIN_ICON_FONT = 0.93f * TEXT_SCALE; + public static final float DELETE_ICON_FONT = 1.05f * TEXT_SCALE; + + public static final float FIELD_H = 14f * SCALE; + public static final float ADD_SIZE = 14f * SCALE; + public static final float TOP_BUTTON_H = 16f * SCALE; + public static final float CARD_H = 40f * SCALE; + public static final float CARD_GAP = 5f * SCALE; + public static final float CARD_BTN = 12f * SCALE; + public static final float ACTIVE_HEAD = 24f * SCALE; + public static final float CARD_HEAD = 25f * SCALE; + + private AltUiMetrics() { + } + + public static float animate(float current, float target, float dt, float speed) { + float next = AnimationUtility.approach(current, target, dt, speed); + return AnimationUtility.snap(next, target, 0.001f); + } + + public static void prune(Map map, Set keys) { + map.keySet().removeIf(key -> !keys.contains(key)); + } + + public static boolean inside(float mx, float my, float x, float y, float w, float h) { + return mx >= x && mx <= x + w && my >= y && my <= y + h; + } + + public static int withAlpha(int rgb, int alpha) { + return (rgb & 0x00FFFFFF) | (Mth.clamp(alpha, 0, 255) << 24); + } + + public static String tr(String key, Object... args) { + return I18n.get(key, args); + } + + public static void draw(TextRenderer renderer, String text, float x, float y, float size, int argb) { + if (renderer == null || text == null || text.isEmpty()) return; + renderer.setAlpha(1.0); + renderer.begin(size, false, false); + renderer.render(text, x, y, new RenderColor(argb), false); + renderer.end(); + } + + public static void drawCentered(TextRenderer renderer, String text, float centerX, float y, float size, int argb) { + draw(renderer, text, centerX - width(renderer, text, size) * 0.5f, y, size, argb); + } + + public static float width(TextRenderer renderer, String text, float size) { + if (renderer == null || text == null) return 0f; + renderer.begin(size, true, false); + float w = (float) renderer.getWidth(text, false); + renderer.end(); + return w; + } + + public static String ellipsize(TextRenderer renderer, String text, float size, float maxWidth) { + if (text == null || text.isEmpty()) return ""; + if (width(renderer, text, size) <= maxWidth) return text; + String out = text; + while (out.length() > 3 && width(renderer, out + "...", size) > maxWidth) + out = out.substring(0, out.length() - 1); + return out + "..."; + } + + public record Layout(float leftX, float topY, float rightX, float bottomY) { + } + + public record PanelColors( + int bgTopLeft, + int bgTopRight, + int bgBottomRight, + int bgBottomLeft, + int headerTopLeft, + int headerTopRight, + int headerBottomRight, + int headerBottomLeft, + int stroke, + int strokeSoft, + int shadow, + int title, + int label, + int muted, + int mutedLabel, + int surface, + int surfaceHover, + int accent, + int accentSoft + ) { + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardRenderer.java new file mode 100644 index 0000000..bee035c --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardRenderer.java @@ -0,0 +1,166 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render.cards; + +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.account.AccountEntry; +import dev.loki.lovisual.features.account.SkinManager; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PanelColors; +import dev.loki.lovisual.features.theme.Theme; +import dev.loki.lovisual.features.theme.Themes; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.color.RenderColor; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.resources.Identifier; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Renderer for account widgets: active session panel and a single account card. + */ +final class AltCardRenderer { + private final AccountConfig accountConfig; + private final TextRenderer titleRenderer; + private final TextRenderer bodyRenderer; + private final TextRenderer menuIconRenderer; + private final TextRenderer guiIconRenderer; + + AltCardRenderer(AccountConfig accountConfig, TextRenderer titleRenderer, TextRenderer bodyRenderer, + TextRenderer menuIconRenderer, TextRenderer guiIconRenderer) { + this.accountConfig = accountConfig; + this.titleRenderer = titleRenderer; + this.bodyRenderer = bodyRenderer; + this.menuIconRenderer = menuIconRenderer; + this.guiIconRenderer = guiIconRenderer; + } + + void drawActivePanel(GuiGraphicsExtractor context, float x, float y, PanelColors c) { + drawCentered(titleRenderer, tr("screen.lovisual.alt_manager.active_session"), x + LEFT_W * 0.5f - 15f * SCALE, y + 6f * SCALE, TITLE_FONT, c.title()); + + float cardX = x + 5f * SCALE; + float cardY = y + 24f * SCALE; + float cardW = LEFT_W - 10f * SCALE; + float cardH = 29f * SCALE; + Renderer2D.COLOR.roundedRectCornersQuad(cardX, cardY, cardW, cardH, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 1f, + withAlpha(c.surface(), 154), withAlpha(c.surfaceHover(), 166), withAlpha(0xFF0D1118, 176), withAlpha(0xFF0D1118, 176)); + Renderer2D.COLOR.roundedRectStrokeCorners(cardX, cardY, cardW, cardH, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 0.55f, HudRenderUtil.mixColor(c.stroke(), c.strokeSoft(), 0.34f)); + + String activeName = accountConfig.getActiveAccountName(); + if (activeName == null || activeName.isBlank()) { + drawCentered(bodyRenderer, tr("screen.lovisual.alt_manager.no_account_selected"), cardX + cardW * 0.5f, cardY + 10.2f * SCALE, EMPTY_FONT, c.mutedLabel()); + return; + } + float faceX = cardX + 5f * SCALE; + float faceY = cardY + 2.5f * SCALE; + Identifier skin = accountConfig.getActiveAccountSkin(); + if (skin == null) skin = SkinManager.getSkin(activeName); + + PlayerHeadRenderer.drawRounded(context, faceX, faceY, ACTIVE_HEAD, 3f * SCALE, skin, + new RenderColor(c.title()), true, new RenderColor(c.stroke()), 0.7f, false); + + float textX = faceX + ACTIVE_HEAD + 6f * SCALE; + float textW = Math.max(1f, cardX + cardW - textX - 6f * SCALE); + draw(bodyRenderer, ellipsize(bodyRenderer, activeName, ACTIVE_NAME_FONT, textW), textX, faceY + 4f * SCALE, ACTIVE_NAME_FONT, c.title()); + draw(bodyRenderer, ellipsize(bodyRenderer, accountConfig.getActiveAccountDate(), ACTIVE_DATE_FONT, textW), textX, faceY + 14f * SCALE, ACTIVE_DATE_FONT, c.muted()); + } + + void renderCard(AltCardsRenderer cards, GuiGraphicsExtractor context, AccountEntry entry, float mouseX, float mouseY, + float x, float y, float w, float listY, float listH, PanelColors c) { + String key = entry.getName(); + boolean inList = mouseY >= listY && mouseY <= listY + listH; + float hoverAnim = AnimationUtility.easeOutCubic(cards.cardHoverAnims.getOrDefault(key, 0f)); + float activeAnim = AnimationUtility.easeOutCubic(cards.cardActiveAnims.getOrDefault(key, 0f)); + float pressAnim = AnimationUtility.easeOutCubic(cards.cardPressAnims.getOrDefault(key, 0f)); + Themes.Theme theme = Theme.theme(); + int activeAccent = withAlpha(theme.accent(), Math.round(165f * activeAnim)); + + int fillBase = HudRenderUtil.mixColor(c.surface(), c.surfaceHover(), 0.38f * hoverAnim + 0.10f * pressAnim); + int fillTop = HudRenderUtil.mixColor(fillBase, c.surfaceHover(), 0.03f * pressAnim); + int fillBottom = HudRenderUtil.mixColor(fillBase, 0xFF05070A, 0.18f); + int stroke = HudRenderUtil.mixColor(c.stroke(), c.strokeSoft(), 0.45f * hoverAnim); + stroke = HudRenderUtil.mixColor(stroke, activeAccent, 0.38f * activeAnim + 0.10f * pressAnim); + Renderer2D.COLOR.roundedRectSoftShadow(x, y, w, CARD_H, 4f * SCALE, 8f * SCALE, 0.018f + hoverAnim * 0.018f + activeAnim * 0.010f, c.shadow()); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, w, CARD_H, 4f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + renderActiveCardMarker(x, y, w, CARD_H, activeAnim, theme); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, w, CARD_H, 4f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.04f + hoverAnim * 0.03f), stroke, 90f); + + PlayerHeadRenderer.drawRounded(context, x + 7f * SCALE, y + 7f * SCALE, CARD_HEAD, 3f * SCALE, SkinManager.getSkin(entry.getName()), + new RenderColor(c.title()), true, null, 0f, false); + + draw(bodyRenderer, ellipsize(bodyRenderer, entry.getName(), CARD_NAME_FONT, w - CARD_HEAD - 45f * SCALE), x + 37f * SCALE, y + 9f * SCALE, CARD_NAME_FONT, c.title()); + draw(bodyRenderer, entry.getDate(), x + 37f * SCALE, y + 20f * SCALE, CARD_DATE_FONT, c.muted()); + renderAuthBadge(entry, x + 37f * SCALE, y + 30f * SCALE, c); + + float btnY = y + CARD_H - CARD_BTN - 5f * SCALE; + float pinX = x + w - CARD_BTN * 2f - 8f * SCALE; + float delX = x + w - CARD_BTN - 5f * SCALE; + boolean pinHover = inList && inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN); + boolean delHover = inList && inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN); + + float pinHoverAnim = AnimationUtility.easeOutCubic(cards.pinHoverAnims.getOrDefault(key, pinHover ? 1f : 0f)); + float pinPressAnim = AnimationUtility.easeOutBack(cards.pinPressAnims.getOrDefault(key, 0f), 0.95f); + int pinFill = entry.isPinned() + ? HudRenderUtil.mixColor(withAlpha(c.accentSoft(), 190), withAlpha(c.accent(), 72), 0.18f + pinHoverAnim * 0.12f) + : HudRenderUtil.mixColor(withAlpha(c.surface(), 170), withAlpha(c.surfaceHover(), 196), pinHoverAnim * 0.65f); + int pinStroke = entry.isPinned() + ? HudRenderUtil.mixColor(c.accent(), 0xFFFFFFFF, pinHoverAnim * 0.12f) + : HudRenderUtil.mixColor(c.stroke(), c.strokeSoft(), pinHoverAnim * 0.70f); + Renderer2D.COLOR.roundedRectGradientQuad(pinX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, pinFill, pinFill, pinFill, pinFill); + Renderer2D.COLOR.roundedRectStrokeGradient(pinX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(pinStroke, 0xFFFFFFFF, 0.04f), pinStroke, 90f); + float pinContentLift = (pinHoverAnim * 0.35f + pinPressAnim * 0.6f) * SCALE; + drawCentered(menuIconRenderer, "c", pinX + CARD_BTN * 0.5f, btnY + 1.5f * SCALE - pinContentLift, PIN_ICON_FONT, entry.isPinned() ? c.accent() : withAlpha(0xC0C8D4, 255)); + + float delHoverAnim = AnimationUtility.easeOutCubic(cards.deleteHoverAnims.getOrDefault(key, delHover ? 1f : 0f)); + float delPressAnim = AnimationUtility.easeOutBack(cards.deletePressAnims.getOrDefault(key, 0f), 0.95f); + int delFillTop = HudRenderUtil.mixColor(withAlpha(c.surface(), 150), withAlpha(0x5A2424, 210), 0.30f + delHoverAnim * 0.45f); + int delFillBottom = HudRenderUtil.mixColor(withAlpha(c.surface(), 140), withAlpha(0x2E1212, 220), 0.20f + delHoverAnim * 0.55f); + int delStroke = HudRenderUtil.mixColor(c.stroke(), withAlpha(0xA24E4E, 230), 0.25f + delHoverAnim * 0.65f); + Renderer2D.COLOR.roundedRectGradientQuad(delX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, delFillTop, delFillTop, delFillBottom, delFillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(delX, btnY, CARD_BTN, CARD_BTN, 3f * SCALE, 1f, 0.5f, HudRenderUtil.mixColor(delStroke, 0xFFFFFFFF, 0.04f), delStroke, 90f); + float delContentLift = (delHoverAnim * 0.35f + delPressAnim * 0.6f) * SCALE; + drawCentered(guiIconRenderer, "O", delX + CARD_BTN * 0.5f, btnY + 0.5f * SCALE - delContentLift, DELETE_ICON_FONT, + HudRenderUtil.mixColor(withAlpha(0xC0C8D4, 255), withAlpha(0xFFB0B0, 255), 0.45f + delHoverAnim * 0.45f)); + } + + private void renderActiveCardMarker(float x, float y, float w, float h, float active, Themes.Theme theme) { + float reveal = AnimationUtility.clamp01(active); + if (reveal <= 0.001f) return; + + float markerW = CARD_MARKER_W * reveal; + if (markerW <= 0.01f) return; + + int accent = withAlpha(theme.accent(), Math.round(255f * reveal)); + boolean clipped = ScissorFunction.pushRaw(x, y, markerW, h); + if (!clipped) return; + try { + Renderer2D.COLOR.roundedRectCornersQuad(x, y, w, h, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, LEFT_CARD_R, 1f, accent, accent, accent, accent); + } finally { + ScissorFunction.pop(); + } + } + + private void renderAuthBadge(AccountEntry entry, float x, float y, PanelColors c) { + boolean microsoft = entry != null && entry.isMicrosoft(); + String label = microsoft ? tr("screen.lovisual.alt_manager.badge.microsoft") : tr("screen.lovisual.alt_manager.badge.offline"); + float padX = 3.2f * SCALE; + float badgeW = width(bodyRenderer, label, BADGE_FONT) + padX * 2f; + float badgeH = 7f * SCALE; + int fillTop = microsoft ? withAlpha(0x20394A, 172) : withAlpha(c.surface(), 150); + int fillBottom = microsoft ? withAlpha(0x132732, 184) : withAlpha(0x11151B, 160); + int stroke = microsoft ? withAlpha(0x527A8A, 190) : c.stroke(); + int text = microsoft ? withAlpha(0xDDEEFF, 235) : c.muted(); + Renderer2D.COLOR.roundedRectGradientQuad(x, y, badgeW, badgeH, 2.2f * SCALE, 1f, fillTop, fillTop, fillBottom, fillBottom); + Renderer2D.COLOR.roundedRectStrokeGradient(x, y, badgeW, badgeH, 2.2f * SCALE, 1f, 0.45f, HudRenderUtil.mixColor(stroke, 0xFFFFFFFF, 0.05f), stroke, 90f); + draw(bodyRenderer, label, x + padX, y + 1.9f * SCALE, BADGE_FONT, text); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardsRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardsRenderer.java new file mode 100644 index 0000000..c69c76f --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/gui/mainmenu/alt/render/cards/AltCardsRenderer.java @@ -0,0 +1,178 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.features.gui.mainmenu.alt.render.cards; + +import dev.loki.lovisual.features.account.AccountConfig; +import dev.loki.lovisual.features.account.AccountEntry; +import dev.loki.lovisual.features.gui.mainmenu.alt.AltManagerController; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.Layout; +import dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.PanelColors; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import net.minecraft.client.gui.GuiGraphicsExtractor; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static dev.loki.lovisual.features.gui.mainmenu.alt.render.AltUiMetrics.*; + +/** + * Accounts list of the alt manager: scrollable card grid, per-card animations and click routing. + */ +public final class AltCardsRenderer { + final Map cardHoverAnims = new HashMap<>(); + final Map cardActiveAnims = new HashMap<>(); + final Map cardPressAnims = new HashMap<>(); + final Map pinHoverAnims = new HashMap<>(); + final Map pinPressAnims = new HashMap<>(); + final Map deleteHoverAnims = new HashMap<>(); + final Map deletePressAnims = new HashMap<>(); + + private final TextRenderer titleRenderer; + private final TextRenderer bodyRenderer; + private final AltCardRenderer cardRenderer; + private final AccountConfig accountConfig = AccountConfig.get(); + + public AltCardsRenderer(TextRenderer titleRenderer, TextRenderer bodyRenderer, TextRenderer menuIconRenderer, TextRenderer guiIconRenderer) { + this.titleRenderer = titleRenderer; + this.bodyRenderer = bodyRenderer; + this.cardRenderer = new AltCardRenderer(accountConfig, titleRenderer, bodyRenderer, menuIconRenderer, guiIconRenderer); + } + + public void draw(GuiGraphicsExtractor context, AltManagerController controller, float mouseX, float mouseY, + Layout l, PanelColors c) { + float scrollOffset = controller.getScrollOffset(); + updateAnims(controller, mouseX, mouseY, l, scrollOffset); + cardRenderer.drawActivePanel(context, l.leftX(), l.bottomY(), c); + drawAccountsPanel(context, mouseX, mouseY, l.rightX(), l.topY(), c, scrollOffset); + } + + public boolean handleClick(AltManagerController controller, float mouseX, float mouseY) { + Layout l = controller.layout(); + float scrollOffset = controller.getScrollOffset(); + + float listX = l.rightX() + 5f * SCALE; + float listY = l.topY() + 28f * SCALE; + float listW = RIGHT_W - 10f * SCALE; + float listH = RIGHT_H - 31f * SCALE; + if (!inside(mouseX, mouseY, listX, listY, listW, listH)) return false; + + List accounts = accountConfig.getSortedAccounts(); + float cardW = (listW - CARD_GAP) * 0.5f; + for (int i = 0; i < accounts.size(); i++) { + int col = i % 2; + int row = i / 2; + float cardX = listX + col * (cardW + CARD_GAP); + float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; + if (cardY + CARD_H < listY || cardY > listY + listH) continue; + + float btnY = cardY + CARD_H - CARD_BTN - 5f * SCALE; + float pinX = cardX + cardW - CARD_BTN * 2f - 8f * SCALE; + float delX = cardX + cardW - CARD_BTN - 5f * SCALE; + AccountEntry entry = accounts.get(i); + + if (inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN)) { + pinPressAnims.put(entry.getName(), 1f); + entry.togglePinned(); + if (entry.isPinned()) accountConfig.setActiveAccount(entry); + else accountConfig.save(); + return true; + } + if (inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN)) { + deletePressAnims.put(entry.getName(), 1f); + accountConfig.removeAccountBySortedIndex(i); + controller.clampScroll(); + return true; + } + if (inside(mouseX, mouseY, cardX, cardY, cardW, CARD_H)) { + cardPressAnims.put(entry.getName(), 1f); + accountConfig.setActiveAccount(entry); + return true; + } + } + return false; + } + + private void drawAccountsPanel(GuiGraphicsExtractor context, float mouseX, float mouseY, float x, float y, PanelColors c, float scrollOffset) { + AltUiMetrics.draw(titleRenderer, tr("screen.lovisual.alt_manager.accounts_list"), x + 8f * SCALE, y + 7f * SCALE, TITLE_FONT, c.title()); + + List accounts = accountConfig.getSortedAccounts(); + if (accounts.isEmpty()) { + drawCentered(bodyRenderer, tr("screen.lovisual.alt_manager.no_accounts_added"), x + RIGHT_W * 0.5f, y + RIGHT_H * 0.5f + 2f * SCALE, EMPTY_FONT, c.mutedLabel()); + return; + } + + float listX = x + 5f * SCALE; + float listY = y + 28f * SCALE; + float listW = RIGHT_W - 10f * SCALE; + float listH = RIGHT_H - 31f * SCALE; + float cardW = (listW - CARD_GAP) * 0.5f; + + boolean clipped = ScissorFunction.pushRaw(listX, listY - 3f * SCALE, listW, listH + 6f * SCALE); + try { + for (int i = 0; i < accounts.size(); i++) { + int col = i % 2; + int row = i / 2; + float cardX = listX + col * (cardW + CARD_GAP); + float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; + if (cardY + CARD_H < listY - 10f || cardY > listY + listH + 10f) continue; + cardRenderer.renderCard(this, context, accounts.get(i), mouseX, mouseY, cardX, cardY, cardW, listY, listH, c); + } + } finally { + if (clipped) ScissorFunction.pop(); + } + } + + private void updateAnims(AltManagerController controller, float mouseX, float mouseY, Layout l, float scrollOffset) { + float dt = AnimationUtility.deltaTime(); + + float listX = l.rightX() + 5f * SCALE; + float listY = l.topY() + 28f * SCALE; + float listW = RIGHT_W - 10f * SCALE; + float listH = RIGHT_H - 31f * SCALE; + float cardW = (listW - CARD_GAP) * 0.5f; + String active = accountConfig.getActiveAccountName(); + List accounts = accountConfig.getSortedAccounts(); + Set keys = new HashSet<>(); + for (int i = 0; i < accounts.size(); i++) { + AccountEntry entry = accounts.get(i); + String key = entry.getName(); + keys.add(key); + int col = i % 2; + int row = i / 2; + float cardX = listX + col * (cardW + CARD_GAP); + float cardY = listY + row * (CARD_H + CARD_GAP) - scrollOffset; + float btnY = cardY + CARD_H - CARD_BTN - 5f * SCALE; + float pinX = cardX + cardW - CARD_BTN * 2f - 8f * SCALE; + float delX = cardX + cardW - CARD_BTN - 5f * SCALE; + boolean inList = mouseY >= listY && mouseY <= listY + listH; + boolean cardHover = inList && inside(mouseX, mouseY, cardX, cardY, cardW, CARD_H); + boolean pinHover = inList && inside(mouseX, mouseY, pinX, btnY, CARD_BTN, CARD_BTN); + boolean delHover = inList && inside(mouseX, mouseY, delX, btnY, CARD_BTN, CARD_BTN); + cardHoverAnims.put(key, animate(cardHoverAnims.getOrDefault(key, 0f), cardHover ? 1f : 0f, dt, 10f)); + cardActiveAnims.put(key, animate(cardActiveAnims.getOrDefault(key, 0f), key.equals(active) ? 1f : 0f, dt, 8f)); + cardPressAnims.put(key, animate(cardPressAnims.getOrDefault(key, 0f), 0f, dt, 7f)); + pinHoverAnims.put(key, animate(pinHoverAnims.getOrDefault(key, 0f), pinHover ? 1f : 0f, dt, 11f)); + pinPressAnims.put(key, animate(pinPressAnims.getOrDefault(key, 0f), 0f, dt, 8f)); + deleteHoverAnims.put(key, animate(deleteHoverAnims.getOrDefault(key, 0f), delHover ? 1f : 0f, dt, 11f)); + deletePressAnims.put(key, animate(deletePressAnims.getOrDefault(key, 0f), 0f, dt, 8f)); + } + prune(cardHoverAnims, keys); + prune(cardActiveAnims, keys); + prune(cardPressAnims, keys); + prune(pinHoverAnims, keys); + prune(pinPressAnims, keys); + prune(deleteHoverAnims, keys); + prune(deletePressAnims, keys); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Module.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/Module.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Module.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/Module.java index afbdca6..1efe8ba 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Module.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/Module.java @@ -5,13 +5,45 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.core; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.config.*; +import dev.loki.lovisual.config.common.CommonBooleanGroupSchema; +import dev.loki.lovisual.config.common.CommonSettingSchema; +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.i18n.ConfigValueAliasProvider; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.collection.ConfigValue; +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.events.impl.render.RenderPrewarmCollectEvent; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.addon.ModuleExtensionManager; +import dev.loki.lovisual.config.values.collection.ConfigValue; +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.addon.manager.ModuleExtensionManager; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; @@ -29,12 +61,19 @@ import dev.loki.lovisual.features.module.module.ModuleNames; import dev.loki.lovisual.features.module.module.ModuleSettingValues; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.util.logging.DebugLog; import java.util.*; import java.util.function.Supplier; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.lifecycle.ModuleActivationSource; +import dev.loki.lovisual.features.module.lifecycle.ModuleAutoLoader; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.phase.WorldPhase; public abstract class Module implements ConfigObject, ConfigNameProvider, SettingOwner, ConfigValueAliasProvider { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleCategory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleCategory.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleCategory.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleCategory.java index 24c1072..fc05b92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleCategory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleCategory.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.core; public enum ModuleCategory { COMBAT, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleInfo.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleInfo.java index 849fb19..9044d48 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleInfo.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.core; import dev.loki.lovisual.events.meta.UsedImplicitly; @@ -13,6 +13,8 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; @UsedImplicitly @Retention(RetentionPolicy.RUNTIME) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleManager.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleManager.java index 9ef6d6f..e075be0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/core/ModuleManager.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.core; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.addon.ModuleExtensionManager; +import dev.loki.lovisual.addon.manager.ModuleExtensionManager; import dev.loki.lovisual.util.screen.ClientScreen; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Setter; @@ -16,17 +16,24 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.SubmitNodeCollector; import dev.loki.lovisual.events.Events; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler2D; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler3D; +import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase; +import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler2D; +import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler3D; 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.Lifecycle; import dev.loki.lovisual.util.input.KeyManager; import dev.loki.lovisual.util.logging.DebugLog; import java.util.*; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.ModuleActivationSource; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.phase.ModuleStateListener; +import dev.loki.lovisual.features.module.phase.WorldPhase; public enum ModuleManager { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleActivationSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleActivationSource.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleActivationSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleActivationSource.java index ac72ffd..8f39e31 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleActivationSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleActivationSource.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.lifecycle; public enum ModuleActivationSource { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleAutoLoader.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleAutoLoader.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleAutoLoader.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleAutoLoader.java index 1ff21a1..fd33765 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleAutoLoader.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleAutoLoader.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.lifecycle; import dev.loki.lovisual.util.logging.DebugLog; import io.github.classgraph.ClassGraph; @@ -21,6 +21,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleInfo; public enum ModuleAutoLoader { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleRegister.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleRegister.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleRegister.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleRegister.java index fc44083..c4a6f9c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleRegister.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/ModuleRegister.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.lifecycle; import dev.loki.lovisual.events.meta.UsedImplicitly; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Modules.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/Modules.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Modules.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/Modules.java index 0bca258..6a02bc1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Modules.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/lifecycle/Modules.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.lifecycle; import dev.loki.lovisual.Lifecycle; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleManager; public enum Modules { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleBinds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleBinds.java index 51056f5..8a18ca1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleBinds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleBinds.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.features.module.module; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.KeyBindValue; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.color.KeyBindValue; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.bind.KeyBindSetting; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleConfigValues.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleConfigValues.java index 4b13b20..6468177 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleConfigValues.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleConfigValues.java @@ -8,18 +8,19 @@ package dev.loki.lovisual.features.module.module; import de.marhali.json5.Json5Object; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; -import dev.loki.lovisual.features.module.ModuleActivationSource; +import dev.loki.lovisual.features.module.lifecycle.ModuleActivationSource; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.module.core.Module; /** * Config plumbing for modules: the ordered config value collection, legacy settings diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleSettingValues.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleSettingValues.java index 21132d9..2b9df4a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleSettingValues.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/module/ModuleSettingValues.java @@ -7,21 +7,21 @@ package dev.loki.lovisual.features.module.module; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.definition.SettingDef; import dev.loki.lovisual.config.common.CommonBooleanGroupSchema; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.config.values.KeyBindValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.config.values.SetValue; -import dev.loki.lovisual.config.values.StringValue; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.color.KeyBindValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.collection.SetValue; +import dev.loki.lovisual.config.values.primitive.StringValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLog.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLog.java index 547b46a..9545459 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLog.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLog.java @@ -1,11 +1,11 @@ package dev.loki.lovisual.features.module.modules.combat.combatlog; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.entity.AttackEntityEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.LivingEntity; @@ -16,6 +16,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogEntry; +import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogStats; /** * Tracks and attributes combat hits (damage dealt/taken) by watching health deltas of nearby diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStats.java index 11360a8..b3725cb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStats.java @@ -3,6 +3,7 @@ package dev.loki.lovisual.features.module.modules.combat.combatlog; import java.util.HashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogEntry; /** * Pure aggregation over a window of {@link CombatLogEntry}: damage dealt/taken, DPS, and who diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/DamageTint.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/DamageTint.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/DamageTint.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/DamageTint.java index 236092b..391a11e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/DamageTint.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/DamageTint.java @@ -5,23 +5,23 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.damage; import dev.loki.lovisual.util.time.GameClock; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.PostProcessUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostProcessUniforms; //todo Description @ModuleInfo(id = "damagetint", displayName = "DamageTint", category = ModuleCategory.COMBAT) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/NoFriendDamage.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/NoFriendDamage.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/NoFriendDamage.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/NoFriendDamage.java index 1caea00..75d6763 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/NoFriendDamage.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/damage/NoFriendDamage.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.damage; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.util.protection.NotifyThrottle; import net.minecraft.util.Util; import net.minecraft.world.entity.Entity; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/Predictions.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/Predictions.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/Predictions.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/Predictions.java index 9cd6ebc..93073ed 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/Predictions.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/Predictions.java @@ -5,12 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.prediction; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.features.module.*; -import dev.loki.lovisual.features.module.Module; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.modules.combat.prediction.Predictions; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsAim; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsSimulation; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.SubmitNodeCollector; @@ -34,10 +41,10 @@ import net.minecraft.world.item.Items; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import org.joml.Quaternionf; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; +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.color.RGBColorValue; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsAim; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsSimulation; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.AimPrediction; @@ -46,17 +53,17 @@ import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsM import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.TrajectoryResult; import dev.loki.lovisual.mixins.accessors.projectile.PersistentProjectileEntityAccessor; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.ScreenProjection; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; import dev.loki.lovisual.util.target.TargetManager; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/ProjectilePuncher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/ProjectilePuncher.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/ProjectilePuncher.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/ProjectilePuncher.java index 2bf0f4b..713f3b5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/ProjectilePuncher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/ProjectilePuncher.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.prediction; import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; import net.minecraft.client.Minecraft; @@ -16,25 +16,25 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.input.RotationUpdateEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.data.RotationWithVector; import dev.loki.lovisual.util.aiming.features.MovementCorrection; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.AngleSmooth; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.LinearAngleSmooth; -import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.SigmoidAngleSmooth; -import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.SmartAngleSmooth; -import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.SpookyAngleSmooth; +import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves.SigmoidAngleSmooth; +import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves.SmartAngleSmooth; +import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves.SpookyAngleSmooth; import dev.loki.lovisual.util.aiming.preference.LeastDifferencePreference; import dev.loki.lovisual.util.aiming.preference.RotationPreference; import dev.loki.lovisual.util.aiming.raytrace.RotationRaytrace; @@ -46,6 +46,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; +import dev.loki.lovisual.config.common.impl.wall.RotationTiming; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TargetESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/TargetESP.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TargetESP.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/TargetESP.java index b1c3388..735e319 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TargetESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/prediction/TargetESP.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.prediction; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; @@ -15,22 +15,22 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspCrystals; import dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspEffects; import dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspModes; import dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspCrystals.CrystalInstance; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.mixininterface.IEntity; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.mixininterface.entity.IEntity; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsAim.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsAim.java index b2be6d9..99622b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsAim.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsAim.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.module.modules.combat.predictions; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.AimPrediction; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.Kind; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.TrajectoryResult; @@ -31,6 +31,9 @@ import net.minecraft.world.item.CrossbowItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.phys.Vec3; +import dev.loki.lovisual.features.module.modules.combat.prediction.Predictions; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsSimulation; /** * Held-item aim prediction for the Predictions module: builds the hypothetical diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsGeometry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsGeometry.java index 6aade55..89322d6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsGeometry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsGeometry.java @@ -16,6 +16,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import org.joml.Quaternionf; import org.joml.Vector3f; +import dev.loki.lovisual.features.module.modules.combat.prediction.Predictions; /** * Low level mesh primitives, impact shapes and small vector/color math shared by diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsModel.java index ee33f05..cb988ff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsModel.java @@ -22,6 +22,8 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import java.util.List; +import dev.loki.lovisual.features.module.modules.combat.prediction.Predictions; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsGeometry; /** * Shared value types and item/entity classification helpers for the Predictions module. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsSimulation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsSimulation.java index e626dbd..4f92991 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsSimulation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/predictions/PredictionsSimulation.java @@ -7,9 +7,9 @@ package dev.loki.lovisual.features.module.modules.combat.predictions; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.EntityCollision; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.Kind; import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel.TrajectoryResult; @@ -31,6 +31,9 @@ import net.minecraft.world.phys.Vec3; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.features.module.modules.combat.prediction.Predictions; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsGeometry; +import dev.loki.lovisual.features.module.modules.combat.predictions.PredictionsModel; /** * Tick-by-tick projectile trajectory simulation and entity collision resolution diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/PvpCooldowns.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/PvpCooldowns.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/PvpCooldowns.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/PvpCooldowns.java index e159666..8b6d9eb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/PvpCooldowns.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/PvpCooldowns.java @@ -5,24 +5,28 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.pvp; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.SetValue; +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.features.relations.PlayerRelations; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.definition.SettingDef; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.PvpChatParser; -import dev.loki.lovisual.util.pvp.PvpOverlayParser; -import dev.loki.lovisual.util.pvp.PvpState; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.parser.PvpChatParser; +import dev.loki.lovisual.util.pvp.parser.PvpOverlayParser; +import dev.loki.lovisual.util.pvp.state.PvpState; import dev.loki.lovisual.util.pvp.client.CooldownsState; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/RubberHand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/RubberHand.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/RubberHand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/RubberHand.java index 6bb06bc..28dc3b0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/RubberHand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/RubberHand.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.pvp; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -13,14 +13,14 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.Items; import net.minecraft.world.phys.EntityHitResult; -import dev.loki.lovisual.config.values.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.network.EventSync; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.combat.AttackUtil; -import dev.loki.lovisual.util.item.FoodUtil; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.combat.attack.AttackUtil; +import dev.loki.lovisual.util.item.food.FoodUtil; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/SpearAssist.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/SpearAssist.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/SpearAssist.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/SpearAssist.java index 41af695..0df2c13 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/SpearAssist.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/SpearAssist.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.pvp; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TPSSync.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/TPSSync.java similarity index 72% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TPSSync.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/TPSSync.java index b41cff6..83e452b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/TPSSync.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/pvp/TPSSync.java @@ -5,15 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.combat; +package dev.loki.lovisual.features.module.modules.combat.pvp; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.player.NetworkStatsUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspCrystals.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspCrystals.java index ceb7f94..3f79432 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspCrystals.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspCrystals.java @@ -15,6 +15,7 @@ import org.joml.Quaternionf; import org.joml.Vector3f; import static dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspRender.*; +import dev.loki.lovisual.features.module.modules.combat.prediction.TargetESP; /** * Crystal orbit geometry for the TargetESP "crystals" mode. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspEffects.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspEffects.java index cc1bfb9..603614e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspEffects.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspEffects.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.combat.targetesp; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.math.RenderMath; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspModes.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspModes.java index 9adb689..41a1bf4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspModes.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/combat/targetesp/TargetEspModes.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.module.modules.combat.targetesp; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.math.RenderMath; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; @@ -22,6 +22,7 @@ import net.minecraft.world.phys.Vec3; import java.util.function.IntFunction; import static dev.loki.lovisual.features.module.modules.combat.targetesp.TargetEspRender.*; +import dev.loki.lovisual.features.module.modules.combat.prediction.TargetESP; /** * State-driven TargetESP modes: animation state, the legacy ring, ghost diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/BetterMinecraft.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/BetterMinecraft.java index ee72602..5a1d1bb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/BetterMinecraft.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/BetterMinecraft.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.misc; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ClickGui.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ClickGui.java index be69db1..2612165 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ClickGui.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ClickGui.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.module.modules.misc; -import dev.loki.lovisual.config.DisableSettingI18n; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiEditorScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiPickerScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiScreen; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.i18n.DisableSettingI18n; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.screen.ClientScreen; -import dev.loki.lovisual.util.wav.ClickGuiSounds; +import dev.loki.lovisual.util.wav.util.ClickGuiSounds; import net.minecraft.client.Minecraft; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/DefineTarget.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/DefineTarget.java index 281c654..50261d7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/DefineTarget.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/DefineTarget.java @@ -17,20 +17,20 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.ModeValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.mode.ModeValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; -import dev.loki.lovisual.features.relations.CategoryRules; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; +import dev.loki.lovisual.features.relations.category.CategoryRules; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.features.relations.EntityFilters; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.util.text.ChatNameUtil; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; /** * Quick target classification under the crosshair: diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/FakePlayer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/FakePlayer.java index 2842a7b..090c744 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/FakePlayer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/FakePlayer.java @@ -36,10 +36,10 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import java.util.UUID; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ItemScroller.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ItemScroller.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ItemScroller.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ItemScroller.java index 5d21028..66216b6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ItemScroller.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ItemScroller.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.items; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; @@ -18,6 +18,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import dev.loki.lovisual.features.module.modules.misc.items.ScrollMovePolicy; /** * Shift-moves items with the mouse wheel: scrolling over a container screen diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicy.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicy.java index d490fdc..c0ffcf9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicy.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.items; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; +import dev.loki.lovisual.features.module.modules.misc.items.ItemScroller; /** * Pure scroll-quick-move logic for ItemScroller: resolves which slot should diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/MessageFilter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/MessageFilter.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/MessageFilter.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/MessageFilter.java index 7b53d41..5d3ca04 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/MessageFilter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/MessageFilter.java @@ -5,15 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.protect; import net.minecraft.network.chat.Component; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.SetValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.collection.SetValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import java.util.Locale; import java.util.Set; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NameProtect.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NameProtect.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NameProtect.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NameProtect.java index 01a4da2..5c1c729 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NameProtect.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NameProtect.java @@ -5,16 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.protect; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.StringValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.StringValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.util.text.NameProtector; +import dev.loki.lovisual.util.text.mask.NameProtector; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentContents; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoServerPack.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPack.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoServerPack.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPack.java index e9b0e03..9ed6f41 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoServerPack.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPack.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.protect; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import net.minecraft.client.Minecraft; import java.util.UUID; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/StreamerMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/StreamerMode.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/StreamerMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/StreamerMode.java index 101351c..d304777 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/StreamerMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/protect/StreamerMode.java @@ -5,17 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.protect; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.StringValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.util.text.NameMasker; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.StringValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.util.text.mask.NameMasker; import java.util.List; +import dev.loki.lovisual.features.module.modules.misc.protect.NameProtect; /** * Streamer mode: masks every nickname-like token in chat/tab/scoreboard text diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/HitSounds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/HitSounds.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/HitSounds.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/HitSounds.java index 94893d5..2850d94 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/HitSounds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/HitSounds.java @@ -5,23 +5,23 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.sound; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import dev.loki.lovisual.config.DisableSettingI18n; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.relations.CategoryRules; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.config.i18n.DisableSettingI18n; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.relations.category.CategoryRules; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.features.relations.EntityFilters; -import dev.loki.lovisual.util.wav.CustomSoundEngine; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoSound.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSound.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoSound.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSound.java index 7e204aa..b1be141 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/NoSound.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSound.java @@ -5,15 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.sound; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.SetValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.collection.SetValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import java.util.Locale; import java.util.Set; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/DeathCoords.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/DeathCoords.java index 1d336f0..8bc7a2c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/DeathCoords.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/DeathCoords.java @@ -7,12 +7,12 @@ package dev.loki.lovisual.features.module.modules.player; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.command.CommandOutput; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.command.util.CommandOutput; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import net.minecraft.client.Minecraft; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/FakeLag.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/FakeLag.java index cf046a9..25ece98 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/FakeLag.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/FakeLag.java @@ -8,16 +8,17 @@ package dev.loki.lovisual.features.module.modules.player; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.common.impl.FakeLagFlushOn; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.network.FakeLagController; +import dev.loki.lovisual.config.common.impl.common.FakeLagFlushOn; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.network.control.FakeLagController; import java.util.EnumSet; +import dev.loki.lovisual.util.network.control.BlinkManager; /** * FakeLag module front-end for the shared BlinkManager-backed controller. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ThirdPerson.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ThirdPerson.java index d06d78f..758488f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ThirdPerson.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ThirdPerson.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.module.modules.player; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; /** * Free third-person look: while the bind is held the camera orbits freely and diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/UseTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/UseTracker.java index 31fbb09..e69a302 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/UseTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/UseTracker.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.player; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.network.PacketEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import dev.loki.lovisual.util.protection.NotifyThrottle; import net.minecraft.util.Util; import net.minecraft.client.Minecraft;import net.minecraft.client.player.LocalPlayer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoAccept.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAccept.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoAccept.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAccept.java index 37bfa0d..64032b3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoAccept.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAccept.java @@ -5,19 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.SetValue; -import dev.loki.lovisual.config.values.StringValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.collection.SetValue; +import dev.loki.lovisual.config.values.primitive.StringValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.pvp.PvpChatEvent; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import dev.loki.lovisual.features.relations.PlayerRelations; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoLeave.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeave.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoLeave.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeave.java index 2850756..bc858fa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoLeave.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeave.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import dev.loki.lovisual.features.relations.PlayerRelations; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoRespawn.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawn.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoRespawn.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawn.java index 9f93a31..49e3fab 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoRespawn.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawn.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoTool.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/AutoTool.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoTool.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/AutoTool.java index 4b090a1..af3095b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/AutoTool.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/AutoTool.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.interact; import dev.loki.lovisual.util.time.GameClock; @@ -13,15 +13,15 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.GameTickEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.mixins.accessors.misc.MultiPlayerGameModeAccessor; import dev.loki.lovisual.mixins.accessors.inventory.PlayerInventoryAccessor; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ClickPearl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/ClickPearl.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ClickPearl.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/ClickPearl.java index 96b02a9..93007ff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ClickPearl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/ClickPearl.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.interact; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.MultiPlayerGameMode; @@ -13,12 +13,12 @@ import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.mixins.accessors.inventory.PlayerInventoryAccessor; -import dev.loki.lovisual.util.player.ResetAttackCooldown; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.util.player.interaction.ResetAttackCooldown; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoDelay.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoDelay.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoDelay.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoDelay.java index e7c3b9e..add0131 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoDelay.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoDelay.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.interact; import dev.loki.lovisual.util.time.GameClock; @@ -24,13 +24,13 @@ import net.minecraft.world.item.Items; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.mixins.accessors.entity.LivingEntityAccessor; import dev.loki.lovisual.mixins.accessors.misc.MinecraftAccessor; import dev.loki.lovisual.mixins.accessors.misc.MultiPlayerGameModeAccessor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoInteract.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteract.java similarity index 74% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoInteract.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteract.java index 03aec7f..227d58f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/NoInteract.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteract.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.interact; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; //todo Description @ModuleInfo( id = "nointeract", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/LockSlot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/LockSlot.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/LockSlot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/LockSlot.java index 7ff96d6..1732a09 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/LockSlot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/LockSlot.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.inventory; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import dev.loki.lovisual.util.protection.NotifyThrottle; import dev.loki.lovisual.util.protection.SlotLockPolicy; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ShitDropper.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/ShitDropper.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ShitDropper.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/ShitDropper.java index f69e7d5..99b9c7f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/ShitDropper.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/ShitDropper.java @@ -5,17 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.inventory; import net.minecraft.client.Minecraft; import net.minecraft.core.registries.BuiltInRegistries; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/TapeMouse.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouse.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/TapeMouse.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouse.java index 3d898d6..e648d63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/TapeMouse.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouse.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.inventory; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.mixins.accessors.misc.KeyMappingAccessor; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.client.KeyMapping; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/FovControl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/FovControl.java index 664acdc..02e1e57 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/FovControl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/FovControl.java @@ -7,12 +7,12 @@ package dev.loki.lovisual.features.module.modules.visuals; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +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.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/AspectRatio.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/AspectRatio.java index aa8bac3..a7d639c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/AspectRatio.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/AspectRatio.java @@ -9,11 +9,11 @@ package dev.loki.lovisual.features.module.modules.visuals.camera; import net.minecraft.util.Mth; import org.joml.Matrix4f; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/CameraClip.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/CameraClip.java index 73de26f..a26019a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/CameraClip.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/CameraClip.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.visuals.camera; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/Freecam.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/Freecam.java index b48e7a8..19c6b4a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/Freecam.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/Freecam.java @@ -11,16 +11,16 @@ import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.GameTickEvent; import dev.loki.lovisual.events.impl.render.LightmapModifyEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Notifier; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.Notifier; import dev.loki.lovisual.util.entity.FreecamEntity; import dev.loki.lovisual.features.module.modules.visuals.player.FullBright; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/ViewModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/ViewModel.java index 9e47226..8f916ec 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/ViewModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/camera/ViewModel.java @@ -16,14 +16,14 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemStack; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; /** * ViewModel: mini items + custom swing animations diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticDisplay.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticDisplay.java index 2067a4b..bd05b3f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticDisplay.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticDisplay.java @@ -1,17 +1,16 @@ package dev.loki.lovisual.features.module.modules.visuals.cosmetics; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.cosmetic.CosmeticManager; -import dev.loki.lovisual.features.cosmetic.CosmeticModel; -import dev.loki.lovisual.features.cosmetic.CosmeticRenderer; -import dev.loki.lovisual.features.cosmetic.CosmeticRepository; -import dev.loki.lovisual.features.cosmetic.CosmeticSlot; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticsScreen; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticManager; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticRenderer; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticRepository; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -19,6 +18,7 @@ import net.minecraft.client.Minecraft; import java.util.EnumMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticsScreen; /** * Renders the locally equipped cosmetics (per body-zone slot) attached to the local diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspot.java index e53581e..ae551d5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspot.java @@ -1,6 +1,6 @@ package dev.loki.lovisual.features.module.modules.visuals.cosmetics; -import dev.loki.lovisual.features.cosmetic.CosmeticSlot; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; /** * Pure geometry for the clickable body-zone rectangles overlaid on the 3D preview. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsScreen.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsScreen.java index d9da7da..bbd6559 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsScreen.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsScreen.java @@ -1,8 +1,7 @@ package dev.loki.lovisual.features.module.modules.visuals.cosmetics; -import dev.loki.lovisual.features.cosmetic.CosmeticSlot; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticDisplay; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import net.minecraft.client.Minecraft; @@ -12,6 +11,9 @@ import net.minecraft.client.gui.screens.inventory.InventoryScreen; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticDisplay; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticsHotspot; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticsSlotPanel; /** * Cosmetics editor: a live 3D player preview on the left (drag to rotate, scroll to diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsSlotPanel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsSlotPanel.java index 328fd26..76b9031 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsSlotPanel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsSlotPanel.java @@ -1,19 +1,20 @@ package dev.loki.lovisual.features.module.modules.visuals.cosmetics; -import dev.loki.lovisual.features.cosmetic.CosmeticManager; -import dev.loki.lovisual.features.cosmetic.CosmeticModel; -import dev.loki.lovisual.features.cosmetic.CosmeticRepository; -import dev.loki.lovisual.features.cosmetic.CosmeticSlot; -import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticDisplay; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticManager; +import dev.loki.lovisual.features.cosmetic.model.CosmeticModel; +import dev.loki.lovisual.features.cosmetic.manager.CosmeticRepository; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.FontInfo; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; import net.minecraft.client.resources.language.I18n; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticDisplay; +import dev.loki.lovisual.features.module.modules.visuals.cosmetics.CosmeticsScreen; /** * Right panel of {@link CosmeticsScreen}: model picker for the currently selected @@ -80,7 +81,7 @@ public final class CosmeticsSlotPanel { } private float slider(float x, float y, float width, String label, - dev.loki.lovisual.config.values.NumberValue value, + dev.loki.lovisual.config.values.primitive.NumberValue value, TextRenderer text, int accent, int muted) { text.begin(0.85, true, false); text.render(label + ": " + String.format("%.2f", value.get()), x, y, new RenderColor(muted), false); @@ -106,11 +107,11 @@ public final class CosmeticsSlotPanel { CosmeticDisplay.SlotOffsetSettings offsets = module.offsetsFor(slot); if (offsets == null) return false; - List> sliders = List.of( + List> sliders = List.of( offsets.offsetX(), offsets.offsetY(), offsets.offsetZ(), offsets.rotation(), offsets.scale()); float rowY = listBottomY + 10f; - for (dev.loki.lovisual.config.values.NumberValue value : sliders) { + for (dev.loki.lovisual.config.values.primitive.NumberValue value : sliders) { float barY = rowY + 10f; if (mouseY >= barY && mouseY <= barY + SLIDER_HEIGHT - 4f && mouseX >= x && mouseX <= x + width) { float fraction = (float) Math.clamp((mouseX - x) / width, 0.0, 1.0); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/HitEffect.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/HitEffect.java index d0cd404..ae46c61 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/HitEffect.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/HitEffect.java @@ -10,7 +10,11 @@ package dev.loki.lovisual.features.module.modules.visuals.effects; import dev.loki.lovisual.util.time.GameClock; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.resources.Identifier; @@ -26,21 +30,21 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; import org.joml.Quaternionf; import org.joml.Vector3f; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.mixininterface.ILocalPlayer; -import dev.loki.lovisual.mixininterface.IPlayerAttackCooldown; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.mixininterface.entity.ILocalPlayer; +import dev.loki.lovisual.mixininterface.entity.IPlayerAttackCooldown; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.Particle3D; -import dev.loki.lovisual.render.helpers.ParticleTextureMode; +import dev.loki.lovisual.render.helpers.player.Particle3D; +import dev.loki.lovisual.render.helpers.util.ParticleTextureMode; import dev.loki.lovisual.util.time.Timer; import java.awt.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/KillEffect.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/KillEffect.java index e02e522..285000d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/KillEffect.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/KillEffect.java @@ -18,26 +18,26 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; import org.joml.Quaternionf; import org.joml.Vector3f; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.mixins.accessors.world.ClientLevelAccessor; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.color.ColorUtils; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.KillEffectBeamUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.world.KillEffectBeamUniforms; import com.mojang.blaze3d.pipeline.RenderPipeline; import dev.loki.lovisual.util.time.Timer; -import dev.loki.lovisual.util.wav.CustomSoundEngine; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; import java.awt.*; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/Trails.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/Trails.java index 2f84d43..25b20e8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/Trails.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/Trails.java @@ -8,7 +8,12 @@ package dev.loki.lovisual.features.module.modules.visuals.effects; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; @@ -16,22 +21,22 @@ import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import net.minecraft.world.phys.Vec3; import org.joml.Quaternionf; import org.joml.Vector3f; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.mixininterface.IEntity; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.mixininterface.entity.IEntity; import dev.loki.lovisual.mixins.accessors.projectile.PersistentProjectileEntityAccessor; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.Particle3D; -import dev.loki.lovisual.render.helpers.ParticleTextureMode; -import dev.loki.lovisual.render.helpers.TrailPoint; +import dev.loki.lovisual.render.helpers.player.Particle3D; +import dev.loki.lovisual.render.helpers.util.ParticleTextureMode; +import dev.loki.lovisual.render.helpers.player.TrailPoint; import java.awt.*; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/WorldParticles.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/WorldParticles.java index 341fc7a..e1b62e5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/WorldParticles.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/effects/WorldParticles.java @@ -9,7 +9,12 @@ package dev.loki.lovisual.features.module.modules.visuals.effects; import dev.loki.lovisual.util.time.GameClock; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.features.theme.Theme; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; @@ -18,22 +23,22 @@ import net.minecraft.world.phys.Vec3; import org.joml.Quaternionf; import org.joml.Vector3f; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.color.ColorBlendMode; import dev.loki.lovisual.render.engine.color.ColorEffects; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.TextureTintUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.effects.TextureTintUniforms; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/ESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/ESP.java index 8b08115..c601281 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/ESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/ESP.java @@ -10,16 +10,32 @@ package dev.loki.lovisual.features.module.modules.visuals.esp; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTextureView; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.collection.SetValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.*; -import dev.loki.lovisual.features.module.Module; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; +import dev.loki.lovisual.features.module.modules.visuals.esp.EspEntityCollector; +import dev.loki.lovisual.features.module.modules.visuals.esp.EspModel; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.Esp2DRenderer; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.Esp3DRenderer; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.EspSearchOverlay; +import dev.loki.lovisual.features.module.modules.visuals.esp.shader.EspShaderRenderer; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; import dev.loki.lovisual.render.engine.msaa.MsaaFramebuffer; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.features.module.modules.visuals.esp.render.Esp2DRenderer; import dev.loki.lovisual.features.module.modules.visuals.esp.render.Esp3DRenderer; import dev.loki.lovisual.features.module.modules.visuals.esp.render.EspSearchOverlay; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspColorUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspColorUtil.java index a09ab8b..c884159 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspColorUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspColorUtil.java @@ -13,6 +13,7 @@ import dev.loki.lovisual.render.engine.animation.AnimationUtility; import net.minecraft.world.phys.AABB; import java.util.Locale; +import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; public final class EspColorUtil { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspEntityCollector.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspEntityCollector.java index 37b0a47..7564cac 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspEntityCollector.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspEntityCollector.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.visuals.esp; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryService; import net.minecraft.client.Minecraft; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.Identifier; @@ -21,6 +21,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Set; +import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; +import dev.loki.lovisual.features.module.modules.visuals.esp.EspModel; public final class EspEntityCollector { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspModel.java index 3db8e0b..4b0926d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/EspModel.java @@ -7,8 +7,9 @@ package dev.loki.lovisual.features.module.modules.visuals.esp; -import dev.loki.lovisual.render.helpers.ScreenSpaceOverlay2D; +import dev.loki.lovisual.render.helpers.clip.ScreenSpaceOverlay2D; import net.minecraft.world.entity.Entity; +import dev.loki.lovisual.features.module.modules.visuals.esp.EspColorUtil; public final class EspModel { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/LightningTargetESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/LightningTargetESP.java index aba8f08..a88a70f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/LightningTargetESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/LightningTargetESP.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.audio; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.entity.AttackEntityEvent; import dev.loki.lovisual.render.engine.renderer.Renderer3D; @@ -313,4 +313,4 @@ public class LightningTargetESP extends Module { this.phase = phase; } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/SoundESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/SoundESP.java index 10a75a8..385ca09 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/SoundESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/audio/SoundESP.java @@ -14,18 +14,18 @@ import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.resources.language.I18n; import net.minecraft.resources.Identifier; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.HudPhase; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.MatteHudStyle; -import dev.loki.lovisual.render.helpers.ScreenProjection; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.material.MatteHudStyle; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/BlockESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/BlockESP.java index 5dc9206..1cecb5d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/BlockESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/BlockESP.java @@ -7,15 +7,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.AABB; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.util.time.Timer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/DropESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/DropESP.java index 08d9c9c..89e14f0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/DropESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/DropESP.java @@ -7,7 +7,12 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.overlay; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.component.DataComponents; @@ -18,23 +23,23 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.definition.SettingDef; import dev.loki.lovisual.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.HudPhase; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.mixininterface.IEntity; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.mixininterface.entity.IEntity; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.text.VanillaTextRenderer; -import dev.loki.lovisual.render.helpers.MatteHudStyle; -import dev.loki.lovisual.render.helpers.ScreenProjection; -import dev.loki.lovisual.render.helpers.ScreenSpaceOverlay2D; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.VanillaTextRenderer; +import dev.loki.lovisual.render.helpers.material.MatteHudStyle; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; +import dev.loki.lovisual.render.helpers.clip.ScreenSpaceOverlay2D; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; //todo Description @ModuleInfo(id = "dropesp", displayName = "DropESP", category = ModuleCategory.VISUALS) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/HoleESP.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/HoleESP.java index 3f8b204..69c2a02 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/HoleESP.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/HoleESP.java @@ -7,18 +7,18 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.overlay; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.util.block.BlockSearchUtil; +import dev.loki.lovisual.util.block.scan.BlockSearchUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/InvisEsp.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/InvisEsp.java index c512808..14c5c4b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/InvisEsp.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/overlay/InvisEsp.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.overlay; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; /** * Делает невидимых игроков видимыми: модель рендерится полупрозрачной, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp2DRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp2DRenderer.java index ed4e4d1..3989ff0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp2DRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp2DRenderer.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.render; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.ScreenProjection; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.esp.EspColorUtil; import dev.loki.lovisual.features.module.modules.visuals.esp.EspModel; @@ -20,6 +20,7 @@ import net.minecraft.world.phys.Vec3; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.EspOutlineRenderer; public final class Esp2DRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp3DRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp3DRenderer.java index 242e991..7bb0145 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp3DRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/Esp3DRenderer.java @@ -23,6 +23,7 @@ import net.minecraft.world.phys.Vec3; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.Esp2DRenderer; public final class Esp3DRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/EspSearchOverlay.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/EspSearchOverlay.java index 4eaef62..33b8c5e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/EspSearchOverlay.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/render/EspSearchOverlay.java @@ -8,10 +8,10 @@ package dev.loki.lovisual.features.module.modules.visuals.esp.render; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.MatteHudStyle; -import dev.loki.lovisual.render.helpers.ScreenSpaceOverlay2D; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.material.MatteHudStyle; +import dev.loki.lovisual.render.helpers.clip.ScreenSpaceOverlay2D; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.esp.EspColorUtil; import dev.loki.lovisual.features.module.modules.visuals.esp.EspEntityCollector; @@ -24,6 +24,7 @@ import net.minecraft.world.phys.Vec3; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.esp.render.Esp2DRenderer; public final class EspSearchOverlay { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderColor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderColor.java index 980f9a6..b259061 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderColor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderColor.java @@ -13,14 +13,14 @@ import com.mojang.blaze3d.textures.AddressMode; import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.ShaderEspBlurUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.ShaderEspGradientUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.ShaderEspSmokeUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.esp.ShaderEspBlurUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.esp.ShaderEspGradientUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.esp.ShaderEspSmokeUniforms; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.esp.EspColorUtil; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderMask.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderMask.java index e8bf196..de5bf07 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderMask.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderMask.java @@ -19,8 +19,8 @@ import dev.loki.lovisual.mixins.accessors.world.LevelRendererAccessor; import dev.loki.lovisual.render.ShaderEspRenderContext; import dev.loki.lovisual.render.compat.EntityCullingCompat; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.msaa.MsaaFramebuffer; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; @@ -40,6 +40,7 @@ import org.joml.Matrix4f; import org.joml.Quaternionf; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.esp.shader.EspShaderRenderer; public final class EspShaderMask { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderRenderer.java index dcb7128..72e902c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/esp/shader/EspShaderRenderer.java @@ -12,8 +12,8 @@ import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTextureView; import dev.loki.lovisual.render.engine.msaa.MsaaFramebuffer; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.iris.IrisLoVisualFrameHooks; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; +import dev.loki.lovisual.render.iris.state.IrisLoVisualFrameHooks; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.esp.EspEntityCollector; import dev.loki.lovisual.features.module.modules.visuals.esp.EspModel; @@ -23,6 +23,8 @@ import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; import net.minecraft.world.phys.Vec3; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.esp.shader.EspShaderColor; +import dev.loki.lovisual.features.module.modules.visuals.esp.shader.EspShaderMask; public final class EspShaderRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/MotionBlur.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/MotionBlur.java index e547d95..4c7e38f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/MotionBlur.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/MotionBlur.java @@ -8,19 +8,23 @@ package dev.loki.lovisual.features.module.modules.visuals.fx; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.postprocess.*; +import dev.loki.lovisual.render.engine.postprocess.blur.MotionBlurMode; +import dev.loki.lovisual.render.engine.postprocess.blur.MotionBlurResources; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.MotionBlurUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.MotionBlurUniforms; import dev.loki.lovisual.util.logging.DebugLog; //todo Description diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/PostFX.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/PostFX.java index 71845e4..981b0e0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/PostFX.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/PostFX.java @@ -11,17 +11,17 @@ import dev.loki.lovisual.util.time.GameClock; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.PostFXUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostFXUniforms; //todo Description @ModuleInfo(id = "postfx", displayName = "PostFX", category = ModuleCategory.VISUALS) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/TotemFX.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/TotemFX.java index 3ec0e04..392d975 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/TotemFX.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/TotemFX.java @@ -12,15 +12,15 @@ import dev.loki.lovisual.util.time.GameClock; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.HeatUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.world.HeatUniforms; //todo Description @ModuleInfo(id = "totemfx", displayName = "TotemFX", category = ModuleCategory.VISUALS) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/Zoom.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/Zoom.java index e49b705..a2835b0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/Zoom.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/fx/Zoom.java @@ -8,13 +8,13 @@ package dev.loki.lovisual.features.module.modules.visuals.fx; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.BindMode; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.mode.BindMode; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.features.gui.clickgui.settings.bind.FunctionBindSetting; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.animation.AnimationUtility; @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHat.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHat.java index ed1e3f3..d5df60f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHat.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHat.java @@ -8,21 +8,23 @@ package dev.loki.lovisual.features.module.modules.visuals.hats; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.HeadAnchor; +import dev.loki.lovisual.render.helpers.player.HeadAnchor; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; +import dev.loki.lovisual.features.module.modules.visuals.hats.ChinaHatModel; +import dev.loki.lovisual.features.module.modules.visuals.hats.ChinaHatPalette; /** * Classic conical Chinese hat (rice hat / coolie hat): a wide shallow cone — diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatModel.java index ae5c6a5..74cf30a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatModel.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.module.modules.visuals.hats; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.HeadAnchor; +import dev.loki.lovisual.render.helpers.player.HeadAnchor; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatPalette.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatPalette.java index d37bc2a..132ba85 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatPalette.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/ChinaHatPalette.java @@ -7,12 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.hats; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.util.time.GameClock; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; +import dev.loki.lovisual.features.module.modules.visuals.hats.ChinaHat; +import dev.loki.lovisual.features.module.modules.visuals.hats.TazikHat; /** * Color resolution helpers for ChinaHat. Shared color-math and per-vertex shading, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/TazikHat.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/TazikHat.java index 8c4ec44..0897fe0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/TazikHat.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/hats/TazikHat.java @@ -18,21 +18,21 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.HeadAnchor; +import dev.loki.lovisual.render.helpers.player.HeadAnchor; import java.util.HashMap; import java.util.Iterator; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/AlwaysVisibleHand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/AlwaysVisibleHand.java index 953f372..168ebaa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/AlwaysVisibleHand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/AlwaysVisibleHand.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.module.modules.visuals.items; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; /** * Держит руки видимыми, когда ваниль их прячет: при еде/питье/натягивании лука diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/BackSword.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/BackSword.java index 514277e..84c9d83 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/BackSword.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/BackSword.java @@ -1,10 +1,13 @@ package dev.loki.lovisual.features.module.modules.visuals.items; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/HoldMyItems.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/HoldMyItems.java index 55aedf0..3e9c6a2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/HoldMyItems.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/HoldMyItems.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.items; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.animation.EaseCurves; -import dev.loki.lovisual.util.animation.hand.HandAnimState; -import dev.loki.lovisual.render.helpers.TickDelta; +import dev.loki.lovisual.util.animation.hand.state.HandAnimState; +import dev.loki.lovisual.render.helpers.util.TickDelta; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/ShulkerPreview.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/ShulkerPreview.java index d2e9cca..d1d3cb7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/ShulkerPreview.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/items/ShulkerPreview.java @@ -7,12 +7,12 @@ package dev.loki.lovisual.features.module.modules.visuals.items; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/KineticLyrics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/KineticLyrics.java index 81a4456..e9d9930 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/KineticLyrics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/KineticLyrics.java @@ -1,21 +1,21 @@ package dev.loki.lovisual.features.module.modules.visuals.lyrics; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.media.MediaSessionService; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.media.session.MediaSessionService; import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcLibClient; import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLineSplitter; @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ThreadLocalRandom; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.LyricParticle3D; @ModuleInfo( id = "kineticlyrics", diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricParticle3D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricParticle3D.java index b325f59..12f2e3f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricParticle3D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricParticle3D.java @@ -2,8 +2,8 @@ package dev.loki.lovisual.features.module.modules.visuals.lyrics; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.text.WorldTextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.msdf.WorldTextRenderer; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java index 9a2682c..8ec687c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcLibClient.java @@ -19,6 +19,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LrcParser; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; /** * Fetches synced lyrics from lrclib.net (no API key required). @@ -182,4 +184,4 @@ public final class LrcLibClient { .replaceAll("\\[.*?\\]", "") .trim(); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcParser.java index 742c0c5..c249262 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LrcParser.java @@ -5,6 +5,7 @@ import java.util.Collections; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; public final class LrcParser { private static final Pattern LRC_PATTERN = Pattern.compile("\\[(\\d+):(\\d{2})(?:\\.(\\d{1,3}))?\\](.*)"); @@ -55,4 +56,4 @@ public final class LrcParser { Collections.sort(lines); return lines; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LyricLineSplitter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LyricLineSplitter.java index 04ef7ff..39843f7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LyricLineSplitter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/lrc/LyricLineSplitter.java @@ -3,6 +3,7 @@ package dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.lyrics.lrc.LyricLine; public final class LyricLineSplitter { private LyricLineSplitter() { @@ -65,4 +66,4 @@ public final class LyricLineSplitter { Collections.sort(result); return result; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagCache.java index 47c1602..4926b1e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagCache.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.util.player.effect.StatusEffectView; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectView; import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagEnchantFormatter; import net.minecraft.world.effect.MobEffectInstance; @@ -19,6 +19,8 @@ import net.minecraft.world.item.ItemStack; import java.util.List; import java.util.UUID; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; public final class NameTagCache { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagLayoutEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagLayoutEngine.java index e9ba102..76dfd23 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagLayoutEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagLayoutEngine.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.text.TextRenderUtil; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.text.format.TextRenderUtil; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.module.modules.visuals.esp.ESP; import dev.loki.lovisual.features.module.modules.visuals.nametags.parts.NameTagEquipmentRenderer; @@ -20,6 +20,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; public final class NameTagLayoutEngine { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagModel.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagModel.java index bd708f3..8890a53 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagModel.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTagModel.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import net.minecraft.network.chat.Component; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.player.Player; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTags.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTags.java index 4934ef4..574e6d7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTags.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/NameTags.java @@ -7,20 +7,36 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags; -import dev.loki.lovisual.config.SettingDef; +import dev.loki.lovisual.config.definition.SettingDef; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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.features.gui.clickgui.settings.text.list.TextListSetting; -import dev.loki.lovisual.features.module.*; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.mixininterface.IEntity; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagCache; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagLayoutEngine; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; +import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; +import dev.loki.lovisual.features.module.modules.visuals.nametags.parts.NameTagOpponentRenderer; +import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagLabelBuilder; +import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagRenderer; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.mixininterface.entity.IEntity; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScreenProjection; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; -import dev.loki.lovisual.util.player.effect.StatusEffectView; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectView; import dev.loki.lovisual.util.pvp.opponents.TotemPopCounter; import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; import dev.loki.lovisual.features.module.modules.visuals.nametags.parts.NameTagOpponentRenderer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagEquipmentRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagEquipmentRenderer.java index 769d7d8..2ad0d97 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagEquipmentRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagEquipmentRenderer.java @@ -9,9 +9,9 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.parts; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.pvp.CooldownRegistry; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; import dev.loki.lovisual.util.pvp.opponents.OpponentCooldownManager; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; @@ -22,6 +22,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.nametags.parts.NameTagOpponentRenderer; public final class NameTagEquipmentRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagFaceRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagFaceRenderer.java index 3f3798e..df6eff3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagFaceRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagFaceRenderer.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.parts; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.helpers.MatteHudStyle; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.helpers.material.MatteHudStyle; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagOpponentRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagOpponentRenderer.java index 30d9929..95a4761 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagOpponentRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagOpponentRenderer.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.parts; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.util.pvp.CooldownRegistry; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.PvpTargetState; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.state.PvpTargetState; import dev.loki.lovisual.util.pvp.opponents.OpponentCooldownManager; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagPlateRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagPlateRenderer.java index c05ddb0..33f9c90 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagPlateRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/parts/NameTagPlateRenderer.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.parts; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.MatteHudStyle; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.material.MatteHudStyle; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagLayoutEngine; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; @@ -25,6 +25,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import static dev.loki.lovisual.features.theme.Theme.theme; +import dev.loki.lovisual.features.module.modules.visuals.nametags.parts.NameTagFaceRenderer; public final class NameTagPlateRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEffectsRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEffectsRenderer.java index 46e8e83..c5a0ae6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEffectsRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEffectsRenderer.java @@ -8,14 +8,15 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.render; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.EffectIconRenderer; -import dev.loki.lovisual.util.player.effect.StatusEffectTracker; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.material.EffectIconRenderer; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.effect.MobEffectInstance; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagRenderer; public final class NameTagEffectsRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEnchantFormatter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEnchantFormatter.java index 0b1cb41..acaaa90 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEnchantFormatter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagEnchantFormatter.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.render; -import dev.loki.lovisual.util.item.EnchantMeta; -import dev.loki.lovisual.util.item.EnchantRegistry; -import dev.loki.lovisual.util.item.EnchantUtil; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.enchant.EnchantMeta; +import dev.loki.lovisual.util.item.enchant.EnchantRegistry; +import dev.loki.lovisual.util.item.enchant.EnchantUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import it.unimi.dsi.fastutil.objects.Object2IntMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagLabelBuilder.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagLabelBuilder.java index e4578e7..d71719d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagLabelBuilder.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagLabelBuilder.java @@ -8,9 +8,9 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.render; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.util.player.PlayerHealthResolver; -import dev.loki.lovisual.util.pvp.PvpTargetState; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; +import dev.loki.lovisual.util.pvp.state.PvpTargetState; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagRenderer.java index 5b48094..3a956e0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/nametags/render/NameTagRenderer.java @@ -7,15 +7,15 @@ package dev.loki.lovisual.features.module.modules.visuals.nametags.render; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.EffectIconRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.util.text.TextRenderUtil; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.material.EffectIconRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.util.text.format.TextRenderUtil; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagLayoutEngine; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTagModel; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; @@ -28,6 +28,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; import java.util.List; +import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagEffectsRenderer; +import dev.loki.lovisual.features.module.modules.visuals.nametags.render.NameTagLabelBuilder; public final class NameTagRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Animations.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Animations.java index c54b387..1c517d5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Animations.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Animations.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.visuals.player; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.util.animation.SmoothValue; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Crosshair.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Crosshair.java index 14f1d83..bd1b2a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Crosshair.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/Crosshair.java @@ -7,10 +7,15 @@ package dev.loki.lovisual.features.module.modules.visuals.player; -import dev.loki.lovisual.features.module.*; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.util.item.FoodUtil; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.modules.visuals.player.Crosshair; +import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; +import dev.loki.lovisual.features.module.phase.HudPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.util.item.food.FoodUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.BlockPos; @@ -29,25 +34,25 @@ import net.minecraft.world.item.equipment.Equippable; import net.minecraft.world.level.Level; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.gui.hud.draggable.impl.combat.Itemizer; -import dev.loki.lovisual.features.relations.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryService; import dev.loki.lovisual.features.relations.EntityFilters; import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.mixininterface.IPlayerAttackCooldown; +import dev.loki.lovisual.mixininterface.entity.IPlayerAttackCooldown; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.ColorMath; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/FullBright.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/FullBright.java index 91e5e30..914f854 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/FullBright.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/FullBright.java @@ -8,12 +8,12 @@ package dev.loki.lovisual.features.module.modules.visuals.player; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.LightmapModifyEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; //todo Description @ModuleInfo( diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/JumpCircles.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/JumpCircles.java index 1ac7f62..323f132 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/JumpCircles.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/player/JumpCircles.java @@ -13,15 +13,15 @@ import net.minecraft.resources.Identifier; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.math.ColorMath; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/BlockHighlight.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/BlockHighlight.java index 830bb81..6b7549b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/BlockHighlight.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/BlockHighlight.java @@ -20,21 +20,21 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import dev.loki.lovisual.config.common.CommonSettingSchemas; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.mixins.accessors.misc.MultiPlayerGameModeAccessor; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.animation.AnimatedRenderColors; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.WaterHighlightUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.world.liquid.WaterHighlightUniforms; import dev.loki.lovisual.util.time.GameClock; import com.mojang.blaze3d.pipeline.RenderPipeline; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/Chams.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/Chams.java index 54ba030..efe6c98 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/Chams.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/Chams.java @@ -17,7 +17,11 @@ import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.irisshaders.iris.mixinterface.ItemInHandInterface; import net.irisshaders.iris.pathways.HandRenderer; import net.minecraft.client.Minecraft; @@ -29,24 +33,24 @@ import net.minecraft.client.renderer.state.level.CameraRenderState; import net.minecraft.util.Util; import org.joml.Matrix4fc; import dev.loki.lovisual.features.theme.Themes; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; import dev.loki.lovisual.mixins.iris.hand.IrisHandRendererAccessor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.HandBlendUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.HandChamsUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.HandGlassUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.HandMetallicUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.HandNoiseUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.HandSmokeUniforms; -import dev.loki.lovisual.render.iris.IrisHandMaskState; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.engine.uniform.impl.hand.HandBlendUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.HandChamsUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.HandGlassUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.HandMetallicUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.effects.HandNoiseUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.hand.effects.HandSmokeUniforms; +import dev.loki.lovisual.render.iris.state.IrisHandMaskState; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ItemPhysic.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ItemPhysic.java index f124d49..a821fdf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ItemPhysic.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ItemPhysic.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.features.module.modules.visuals.scene; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; /** * Физика предметов на земле: предметы лежат плашмя, крутятся в воздухе, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ReimaginedVisual.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ReimaginedVisual.java index b081b82..9cf8287 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ReimaginedVisual.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/scene/ReimaginedVisual.java @@ -9,23 +9,37 @@ package dev.loki.lovisual.features.module.modules.visuals.scene; import dev.loki.lovisual.features.theme.Theme; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.config.values.*; -import dev.loki.lovisual.features.module.*; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.render.engine.postprocess.*; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +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.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.render.engine.postprocess.blur.DepthOfFieldDepthSource; +import dev.loki.lovisual.render.engine.postprocess.blur.DepthOfFieldQuality; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.language.I18n; import org.joml.Matrix4f; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.DepthOfFieldUniforms; -import dev.loki.lovisual.render.helpers.SodiumMaterialFlags; -import dev.loki.lovisual.render.iris.IrisSceneDepth; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.engine.uniform.impl.post.DepthOfFieldUniforms; +import dev.loki.lovisual.render.helpers.material.SodiumMaterialFlags; +import dev.loki.lovisual.render.iris.scene.IrisSceneDepth; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import dev.loki.lovisual.util.logging.DebugLog; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/trollface/TrollfaceMask.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/trollface/TrollfaceMask.java index 9e2e30f..968f2a2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/trollface/TrollfaceMask.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/trollface/TrollfaceMask.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.trollface; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import dev.loki.lovisual.util.target.TargetManager; import net.minecraft.client.Minecraft; @@ -160,4 +160,4 @@ public class TrollfaceMask extends Module { default -> 0; }; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Hitboxes.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Hitboxes.java index d5c06e7..df4bbb9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Hitboxes.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Hitboxes.java @@ -7,16 +7,16 @@ package dev.loki.lovisual.features.module.modules.visuals.visibility; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Light.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Light.java index 86b2827..1f58543 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Light.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/Light.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.features.module.modules.visuals.visibility; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.LightmapModifyEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import org.joml.Vector3f; import org.joml.Vector3fc; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/NoRender.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/NoRender.java index e4fd507..87fc71d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/NoRender.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/visibility/NoRender.java @@ -16,12 +16,12 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; +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.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; import java.util.Optional; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/AtmoDawnFog.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/AtmoDawnFog.java index 3e2405d..ce42bd0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/AtmoDawnFog.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/AtmoDawnFog.java @@ -7,18 +7,19 @@ package dev.loki.lovisual.features.module.modules.visuals.weather; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.lifecycle.Modules; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.fog.FogData; import net.minecraft.world.level.Level; import net.minecraft.world.level.material.FogType; +import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; /** * Атмосферный туман зари: плотность тумана и цвет неба зависят от режима diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/Rain.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/Rain.java index 8a6c628..1ce5a54 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/Rain.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/Rain.java @@ -1,24 +1,24 @@ package dev.loki.lovisual.features.module.modules.visuals.weather; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.EnumValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.mode.EnumValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; +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.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.WetSurfaceUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.world.liquid.WetSurfaceUniforms; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/ShaderSky.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/ShaderSky.java index 72b6ed1..3e320d2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/ShaderSky.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/ShaderSky.java @@ -1,13 +1,13 @@ package dev.loki.lovisual.features.module.modules.visuals.weather; -import dev.loki.lovisual.config.values.ModeValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; -import dev.loki.lovisual.render.engine.postprocess.SkyShaderRenderer; +import dev.loki.lovisual.config.values.mode.ModeValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; +import dev.loki.lovisual.render.engine.postprocess.render.SkyShaderRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import net.minecraft.client.Minecraft; @@ -144,4 +144,4 @@ public class ShaderSky extends Module { ); } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/WorldTweaks.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/WorldTweaks.java index 2246d1b..64632e4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/WorldTweaks.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/modules/visuals/weather/WorldTweaks.java @@ -9,7 +9,11 @@ package dev.loki.lovisual.features.module.modules.visuals.weather; import dev.loki.lovisual.util.time.GameClock; -import dev.loki.lovisual.config.values.*; +import dev.loki.lovisual.config.values.color.RGBColorValue; +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 net.minecraft.client.Minecraft; import net.minecraft.client.renderer.fog.FogData; import net.minecraft.client.renderer.state.level.SkyRenderState; @@ -23,10 +27,10 @@ import net.minecraft.world.level.levelgen.Heightmap; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.GameTickEvent; import dev.loki.lovisual.events.impl.network.PacketEvent; -import dev.loki.lovisual.features.module.Module; -import dev.loki.lovisual.features.module.ModuleCategory; -import dev.loki.lovisual.features.module.ModuleInfo; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleCategory; +import dev.loki.lovisual.features.module.core.ModuleInfo; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.mixins.accessors.world.WorldAccessor; import dev.loki.lovisual.render.engine.RenderState; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/HudPhase.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/HudPhase.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/HudPhase.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/HudPhase.java index 830b2dc..49325ed 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/HudPhase.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/HudPhase.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.phase; public enum HudPhase { /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleStateListener.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/ModuleStateListener.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleStateListener.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/ModuleStateListener.java index 672600c..4ce16a6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/ModuleStateListener.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/ModuleStateListener.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.phase; public interface ModuleStateListener { void onModuleStateChanged(String name, boolean enabled); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Notifier.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/Notifier.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Notifier.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/Notifier.java index 8159e5a..ec1be9c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/Notifier.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/Notifier.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.phase; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/WorldPhase.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/WorldPhase.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/WorldPhase.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/WorldPhase.java index 12da591..934fe75 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/WorldPhase.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/module/phase/WorldPhase.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module; +package dev.loki.lovisual.features.module.phase; public enum WorldPhase { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/EntityFilters.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/EntityFilters.java index aadfd35..af97e48 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/EntityFilters.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/EntityFilters.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.features.relations; -import dev.loki.lovisual.config.ConfigNameProvider; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.ItemIdSetValue; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/PlayerRelations.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/PlayerRelations.java index f82eaf3..dad6220 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/PlayerRelations.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/PlayerRelations.java @@ -9,15 +9,15 @@ package dev.loki.lovisual.features.relations; import dev.loki.lovisual.util.logging.DebugLog; import net.minecraft.util.Util; -import dev.loki.lovisual.config.ConfigNameProvider; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.RGBColorValue; -import dev.loki.lovisual.config.values.SetValue; -import dev.loki.lovisual.util.pvp.PvpState; -import dev.loki.lovisual.util.text.ChatNameUtil; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; +import dev.loki.lovisual.config.values.collection.SetValue; +import dev.loki.lovisual.util.pvp.state.PvpState; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryRules.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryRules.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryRules.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryRules.java index 10573eb..75ceb54 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryRules.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryRules.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.relations; +package dev.loki.lovisual.features.relations.category; +import dev.loki.lovisual.features.relations.PlayerRelations; -import dev.loki.lovisual.features.module.Modules; + +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.misc.DefineTarget; import dev.loki.lovisual.util.block.bed.BedwarsTeamColorUtil; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryService.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryService.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryService.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryService.java index 5316163..d069f7b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryService.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryService.java @@ -5,10 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.relations; +package dev.loki.lovisual.features.relations.category; +import dev.loki.lovisual.features.relations.PlayerRelations; + import net.minecraft.world.entity.player.Player; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.misc.DefineTarget; import dev.loki.lovisual.util.block.bed.BedwarsTeamColorUtil; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryType.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryType.java index a05e423..98410fd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/CategoryType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/relations/category/CategoryType.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.relations; +package dev.loki.lovisual.features.relations.category; public enum CategoryType { STAFF, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/security/BackdoorProtection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/security/BackdoorProtection.java index 2918965..538ab6f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/security/BackdoorProtection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/security/BackdoorProtection.java @@ -15,7 +15,7 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.contents.KeybindContents; import net.minecraft.network.chat.contents.PlainTextContents; import net.minecraft.network.chat.contents.TranslatableContents; -import dev.loki.lovisual.config.MainConfig; +import dev.loki.lovisual.config.i18n.MainConfig; import java.net.*; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/EditableClickGuiTheme.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/EditableClickGuiTheme.java index 8fe7f9c..ac3c543 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/EditableClickGuiTheme.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/EditableClickGuiTheme.java @@ -7,13 +7,13 @@ package dev.loki.lovisual.features.theme; -import dev.loki.lovisual.config.SettingDef; -import dev.loki.lovisual.config.SettingOwner; -import dev.loki.lovisual.config.profile.ConfigProfileStorage; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.config.values.RGBAColorValue; -import dev.loki.lovisual.config.values.StringValue; +import dev.loki.lovisual.config.definition.SettingDef; +import dev.loki.lovisual.config.definition.SettingOwner; +import dev.loki.lovisual.config.profile.service.ConfigProfileStorage; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.primitive.StringValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.core.SettingFactory; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/ThemeStore.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/ThemeStore.java index 1145be1..4213edf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/ThemeStore.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/features/theme/ThemeStore.java @@ -8,8 +8,8 @@ package dev.loki.lovisual.features.theme; import com.google.gson.*; -import dev.loki.lovisual.config.ConfigPaths; -import dev.loki.lovisual.config.profile.ConfigProfileStorage; +import dev.loki.lovisual.config.io.ConfigPaths; +import dev.loki.lovisual.config.profile.service.ConfigProfileStorage; import dev.loki.lovisual.util.logging.DebugLog; import java.io.IOException; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGlBackendInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGlBackendInfo.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGlBackendInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGlBackendInfo.java index b38ea86..ba0357c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGlBackendInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGlBackendInfo.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.device; import com.mojang.blaze3d.opengl.DirectStateAccess; import com.mojang.blaze3d.opengl.FrameBufferCache; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGpuDevice.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGpuDevice.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGpuDevice.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGpuDevice.java index 9094f8d..f8c809e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGpuDevice.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IGpuDevice.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.device; public interface IGpuDevice { void lovisual$pushScissor(int x, int y, int width, int height); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaDevice.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaDevice.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaDevice.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaDevice.java index 5fe8754..9b6636a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaDevice.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaDevice.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.device; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.textures.GpuTexture; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaTexture.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaTexture.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaTexture.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaTexture.java index 8eb3465..26e1718 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IMsaaTexture.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/device/IMsaaTexture.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.device; public interface IMsaaTexture { void lovisual$setSamples(int samples); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IEntity.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IEntity.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IEntity.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IEntity.java index 9207e5f..365e20f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IEntity.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IEntity.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.entity; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.render.helpers.TrailPoint; +import dev.loki.lovisual.render.helpers.player.TrailPoint; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/ILocalPlayer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/ILocalPlayer.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/ILocalPlayer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/ILocalPlayer.java index 1dc3fcc..00d596c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/ILocalPlayer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/ILocalPlayer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.entity; public interface ILocalPlayer { float lovisual$getLastYaw(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IPlayerAttackCooldown.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IPlayerAttackCooldown.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IPlayerAttackCooldown.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IPlayerAttackCooldown.java index ad7a613..4748e7d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IPlayerAttackCooldown.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IPlayerAttackCooldown.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.entity; public interface IPlayerAttackCooldown { float lovisual$getAttackCooldownProgress(float tickDelta); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRoundedHitbox.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IRoundedHitbox.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRoundedHitbox.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IRoundedHitbox.java index 2dd9377..1d0f346 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRoundedHitbox.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/entity/IRoundedHitbox.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.entity; public interface IRoundedHitbox { void lovisual$setRoundedHitbox(float radius); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGuiGraphics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IGuiGraphics.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGuiGraphics.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IGuiGraphics.java index 536d571..3c31068 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IGuiGraphics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IGuiGraphics.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.render; public interface IGuiGraphics { /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IItemEntityRenderState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IItemEntityRenderState.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IItemEntityRenderState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IItemEntityRenderState.java index f22401e..19f7615 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IItemEntityRenderState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IItemEntityRenderState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.render; public interface IItemEntityRenderState { boolean lovisual$isOnGround(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRenderPipeline.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IRenderPipeline.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRenderPipeline.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IRenderPipeline.java index aeb4b10..f0dfa11 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/IRenderPipeline.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixininterface/render/IRenderPipeline.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.mixininterface; +package dev.loki.lovisual.mixininterface.render; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/accessors/packet/ClientboundSetEntityMotionPacketAccessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/accessors/packet/ClientboundSetEntityMotionPacketAccessor.java index 5bc659a..1b8502b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/accessors/packet/ClientboundSetEntityMotionPacketAccessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/accessors/packet/ClientboundSetEntityMotionPacketAccessor.java @@ -19,4 +19,4 @@ public interface ClientboundSetEntityMotionPacketAccessor { @Mutable @Accessor("movement") void lovisual$setVelocity(Vec3 velocity); -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GlDeviceBackendMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GlDeviceBackendMixin.java index f251136..15547e5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GlDeviceBackendMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GlDeviceBackendMixin.java @@ -11,7 +11,7 @@ import com.mojang.blaze3d.opengl.DirectStateAccess; import com.mojang.blaze3d.opengl.FrameBufferCache; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -import dev.loki.lovisual.mixininterface.IGlBackendInfo; +import dev.loki.lovisual.mixininterface.device.IGlBackendInfo; @Mixin(targets = "com.mojang.blaze3d.opengl.GlDevice") public abstract class GlDeviceBackendMixin implements IGlBackendInfo { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuDeviceMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuDeviceMixin.java index 0d7625c..8bae716 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuDeviceMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuDeviceMixin.java @@ -11,9 +11,9 @@ import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.systems.GpuDevice; import com.mojang.blaze3d.textures.GpuTexture; import org.spongepowered.asm.mixin.Mixin; -import dev.loki.lovisual.mixininterface.IGpuDevice; -import dev.loki.lovisual.mixininterface.IMsaaDevice; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.mixininterface.device.IGpuDevice; +import dev.loki.lovisual.mixininterface.device.IMsaaDevice; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.scissor.GlobalScissorState; @Mixin(GpuDevice.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuSurfaceMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuSurfaceMixin.java index 51a7dba..3177645 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuSurfaceMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/device/GpuSurfaceMixin.java @@ -14,9 +14,9 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.profiler.TracyGpuProfiler; -import dev.loki.lovisual.render.engine.profiler.TracyProfiler; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.profiler.bridge.TracyGpuProfiler; +import dev.loki.lovisual.render.engine.profiler.bridge.TracyProfiler; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.FastFps; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/BatchingRenderCommandQueueMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/BatchingRenderCommandQueueMixin.java index a26abfd..9f3ba8c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/BatchingRenderCommandQueueMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/BatchingRenderCommandQueueMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import dev.loki.lovisual.render.ViewObstructionFadeContext; +import dev.loki.lovisual.render.fade.ViewObstructionFadeContext; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; import java.util.Arrays; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/CommandEncoderMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/CommandEncoderMixin.java index 3ccf051..ecdf7a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/CommandEncoderMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/CommandEncoderMixin.java @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.scissor.GlobalScissorState; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/VulkanCommandEncoderMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/VulkanCommandEncoderMixin.java index 3ff222c..12d6c84 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/VulkanCommandEncoderMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/encoder/VulkanCommandEncoderMixin.java @@ -23,7 +23,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanShapeClipBridge; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.msaa.VulkanMsaaResolveBridge; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPassMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPassMixin.java index 8d12e96..8d48c1c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPassMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPassMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.util.logging.DebugLog; @Mixin(RenderPass.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPipelineMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPipelineMixin.java index a00ae6b..9bdd32f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPipelineMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/pipeline/RenderPipelineMixin.java @@ -10,7 +10,7 @@ package dev.loki.lovisual.mixins.blaze3d.pipeline; import com.mojang.blaze3d.pipeline.RenderPipeline; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; @Mixin(RenderPipeline.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/GlStateManagerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/GlStateManagerMixin.java index a817002..05cafac 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/GlStateManagerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/GlStateManagerMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.render.engine.profiler.GlSyncTracker; +import dev.loki.lovisual.render.engine.profiler.frame.GlSyncTracker; @Mixin(GlStateManager.class) public class GlStateManagerMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/ShaderLoaderMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/ShaderLoaderMixin.java index 57747a0..2747774 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/ShaderLoaderMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/shader/ShaderLoaderMixin.java @@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.loki.lovisual.mixins.accessors.blaze3d.ShaderLoaderDefinitionsAccessor; import dev.loki.lovisual.mixins.accessors.blaze3d.ShaderSourceKeyAccessor; import dev.loki.lovisual.render.engine.shader.LoVisualShaderSources; -import dev.loki.lovisual.render.iris.IrisCompatibilityGuards; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityGuards; import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.resources.RenderResourceReadiness; import dev.loki.lovisual.util.resources.ResourceReloadHooks; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/BufferManagerDefaultBufferManagerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/BufferManagerDefaultBufferManagerMixin.java index 79ef00a..dfc6f47 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/BufferManagerDefaultBufferManagerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/BufferManagerDefaultBufferManagerMixin.java @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; @Mixin(targets = "com.mojang.blaze3d.opengl.DirectStateAccess$Emulated") public abstract class BufferManagerDefaultBufferManagerMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/GlTextureMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/GlTextureMixin.java index 44d1075..0d2a474 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/GlTextureMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/GlTextureMixin.java @@ -15,8 +15,8 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; @Mixin(GlTexture.class) public abstract class GlTextureMixin implements IMsaaTexture { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/VulkanGpuTextureMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/VulkanGpuTextureMixin.java index 0208943..a75f377 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/VulkanGpuTextureMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/blaze3d/texture/VulkanGpuTextureMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.mixininterface.IMsaaTexture; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; import org.lwjgl.vulkan.VkImageSubresourceRange; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemCooldownsMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemCooldownsMixin.java index 154aa5d..be5f835 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemCooldownsMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemCooldownsMixin.java @@ -16,8 +16,8 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.TPSSync; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.TPSSync; import dev.loki.lovisual.mixins.accessors.inventory.ItemCooldownEntryAccessor; import java.util.Iterator; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemMixin.java index 65ed37a..6db4667 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemMixin.java @@ -13,7 +13,7 @@ import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; @Mixin(Item.class) public class ItemMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemStackMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemStackMixin.java index c583cc4..919e9a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemStackMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/ItemStackMixin.java @@ -18,10 +18,10 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterTooltips; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import java.util.ArrayList; import java.util.HashSet; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/PlayerInventoryMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/PlayerInventoryMixin.java index 64a9673..5413cfc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/PlayerInventoryMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/inventory/PlayerInventoryMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; @Mixin(Inventory.class) public abstract class PlayerInventoryMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityMixin.java index 69eacd2..df2da36 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityMixin.java @@ -37,18 +37,18 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.player.PlayerJumpEvent; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; -import dev.loki.lovisual.features.module.modules.combat.TPSSync; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.combat.pvp.TPSSync; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.MovementCorrection; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; import dev.loki.lovisual.util.pvp.client.CooldownsState; import dev.loki.lovisual.util.pvp.opponents.TotemPopCounter; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java index 3cbf5dd..637eabc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/living/LivingEntityRendererMixin.java @@ -31,16 +31,16 @@ import org.spongepowered.asm.mixin.injection.ModifyConstant; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.InvisEsp; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; -import dev.loki.lovisual.render.SeeInvisiblesReveal; -import dev.loki.lovisual.render.SeeInvisiblesState; -import dev.loki.lovisual.render.ViewObstructionFadeContext; -import dev.loki.lovisual.render.ViewObstructionFadeState; -import dev.loki.lovisual.render.iris.IrisRuntime; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.render.invisible.SeeInvisiblesReveal; +import dev.loki.lovisual.render.invisible.SeeInvisiblesState; +import dev.loki.lovisual.render.fade.ViewObstructionFadeContext; +import dev.loki.lovisual.render.fade.ViewObstructionFadeState; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import dev.loki.lovisual.util.aiming.data.Rotation; @Mixin(LivingEntityRenderer.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/AbstractClientPlayerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/AbstractClientPlayerMixin.java index ca9e6f0..f9995a9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/AbstractClientPlayerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/AbstractClientPlayerMixin.java @@ -22,12 +22,12 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; -import dev.loki.lovisual.features.module.modules.misc.StreamerMode; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.misc.protect.StreamerMode; import dev.loki.lovisual.features.module.modules.visuals.FovControl; -import dev.loki.lovisual.util.pvp.CooldownRegistry; -import dev.loki.lovisual.util.pvp.PvpTargetState; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.state.PvpTargetState; import dev.loki.lovisual.util.pvp.opponents.OpponentCooldownManager; @Mixin(AbstractClientPlayer.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerDropMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerDropMixin.java index bf65d20..c2aca38 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerDropMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerDropMixin.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.mixins.entity.player; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.player.LockSlot; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.player.inventory.LockSlot; import net.minecraft.client.player.LocalPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerMixin.java index 88560fb..aa46411 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/LocalPlayerMixin.java @@ -15,7 +15,7 @@ import dev.loki.lovisual.events.impl.network.EventPostSync; import dev.loki.lovisual.events.impl.network.EventSync; import dev.loki.lovisual.events.impl.player.PostPlayerUpdateEvent; import dev.loki.lovisual.events.impl.world.EventPushOutOfBlocks; -import dev.loki.lovisual.util.combat.SprintController; +import dev.loki.lovisual.util.combat.rotation.SprintController; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.player.ClientInput; import net.minecraft.client.player.LocalPlayer; @@ -38,24 +38,17 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.events.Events; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; -import dev.loki.lovisual.mixininterface.ILocalPlayer; +import dev.loki.lovisual.mixininterface.entity.ILocalPlayer; import dev.loki.lovisual.mixins.accessors.entity.EntityAccessor; import dev.loki.lovisual.mixins.accessors.misc.InputAccessor; import dev.loki.lovisual.mixins.accessors.entity.LocalPlayerAccessor; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import dev.loki.lovisual.util.aiming.data.Rotation; import java.util.ArrayList; import java.util.List; -import dev.loki.lovisual.events.impl.input.SprintControlEvent; -import dev.loki.lovisual.events.impl.movement.MovementInputEvent; -import dev.loki.lovisual.events.impl.network.EventPostSync; -import dev.loki.lovisual.events.impl.network.EventSync; -import dev.loki.lovisual.events.impl.player.PostPlayerUpdateEvent; -import dev.loki.lovisual.events.impl.world.EventPushOutOfBlocks; @Mixin(LocalPlayer.class) public abstract class LocalPlayerMixin implements ILocalPlayer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/PlayerEntityMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/PlayerEntityMixin.java index eac6921..902f7ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/PlayerEntityMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/player/PlayerEntityMixin.java @@ -24,11 +24,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.movement.PlayerSafeWalkEvent; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.player.NoDelay; -import dev.loki.lovisual.features.module.modules.combat.TPSSync; -import dev.loki.lovisual.mixininterface.IPlayerAttackCooldown; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.player.interact.NoDelay; +import dev.loki.lovisual.features.module.modules.combat.pvp.TPSSync; +import dev.loki.lovisual.mixininterface.entity.IPlayerAttackCooldown; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; @Mixin(Player.class) public abstract class PlayerEntityMixin implements IPlayerAttackCooldown { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/EntityMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/EntityMixin.java index a3355ac..5243ae1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/EntityMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/EntityMixin.java @@ -26,12 +26,12 @@ import dev.loki.lovisual.events.impl.player.PlayerMoveEvent; import dev.loki.lovisual.events.impl.movement.PlayerStepEvent; import dev.loki.lovisual.events.impl.movement.PlayerStepSuccessEvent; import dev.loki.lovisual.events.impl.world.PlayerVelocityStrafe; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.mixininterface.IEntity; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.mixininterface.entity.IEntity; import dev.loki.lovisual.mixins.accessors.entity.EntityAccessor; import dev.loki.lovisual.mixins.accessors.entity.EntityInvoker; -import dev.loki.lovisual.render.helpers.TrailPoint; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.render.helpers.player.TrailPoint; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/FireworkRocketEntityMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/FireworkRocketEntityMixin.java index baaa433..068cdef 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/FireworkRocketEntityMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/entity/world/FireworkRocketEntityMixin.java @@ -21,7 +21,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.entity.FireworkEvent; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import dev.loki.lovisual.util.aiming.data.Rotation; @Mixin(FireworkRocketEntity.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatComponentMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatComponentMixin.java index 7c20257..79a0466 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatComponentMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatComponentMixin.java @@ -21,13 +21,13 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.command.CommandOutput; +import dev.loki.lovisual.features.command.util.CommandOutput; import dev.loki.lovisual.features.gui.chat.model.BetterChatStoreManager; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.misc.MessageFilter; -import dev.loki.lovisual.features.module.modules.misc.NameProtect; -import dev.loki.lovisual.features.module.modules.misc.StreamerMode; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.misc.protect.MessageFilter; +import dev.loki.lovisual.features.module.modules.misc.protect.NameProtect; +import dev.loki.lovisual.features.module.modules.misc.protect.StreamerMode; import dev.loki.lovisual.Lifecycle; @Mixin(ChatComponent.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatScreenMixin.java index c380411..1846bb7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ChatScreenMixin.java @@ -21,7 +21,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.command.CommandManager; +import dev.loki.lovisual.features.command.core.CommandManager; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.messages.BetterChatTabHandler; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ContextualBarMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ContextualBarMixin.java index 93993d4..1ad6b0e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ContextualBarMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/chat/ContextualBarMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; import dev.loki.lovisual.Lifecycle; @Mixin(ContextualBar.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractContainerScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractContainerScreenMixin.java index 9b7590a..cd31264 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractContainerScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractContainerScreenMixin.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.mixins.gui.core; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.misc.ItemScroller; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.misc.items.ItemScroller; import dev.loki.lovisual.features.module.modules.visuals.player.Animations; import dev.loki.lovisual.features.module.modules.visuals.items.ShulkerPreview; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSelectionListMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSelectionListMixin.java index d106b68..738e442 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSelectionListMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSelectionListMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; @Mixin(AbstractSelectionList.class) public abstract class AbstractSelectionListMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSliderButtonMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSliderButtonMixin.java index c61b671..6408d94 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSliderButtonMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractSliderButtonMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; import dev.loki.lovisual.mixins.accessors.widget.SliderWidgetAccessor; @Mixin(AbstractSliderButton.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractWidgetMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractWidgetMixin.java index 206ac60..51484fb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractWidgetMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/core/AbstractWidgetMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.mixininterface.IRoundedHitbox; +import dev.loki.lovisual.mixininterface.entity.IRoundedHitbox; @Mixin(AbstractWidget.class) public abstract class AbstractWidgetMixin implements IRoundedHitbox { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/JoinMultiplayerScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/JoinMultiplayerScreenMixin.java index 3209654..461c867 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/JoinMultiplayerScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/JoinMultiplayerScreenMixin.java @@ -8,14 +8,14 @@ package dev.loki.lovisual.mixins.gui.multiplayer; import dev.loki.lovisual.features.theme.Theme; -import dev.loki.lovisual.features.gui.hud.HudRenderUtil; +import dev.loki.lovisual.features.gui.hud.config.HudRenderUtil; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.animation.AnimationUtility; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; import dev.loki.lovisual.util.proxy.ProxyBackend; -import dev.loki.lovisual.util.proxy.ProxyEntry; +import dev.loki.lovisual.util.proxy.model.ProxyEntry; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/RecipeBookScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/RecipeBookScreenMixin.java index 234cc3e..17e9a82 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/RecipeBookScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/multiplayer/RecipeBookScreenMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.misc.BetterMinecraft; @Mixin(AbstractRecipeBookScreen.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/GuiScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/GuiScreenMixin.java index ac56321..9863c31 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/GuiScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/GuiScreenMixin.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.mixins.gui.screens; import com.llamalad7.mixinextras.sugar.Local; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; @@ -20,16 +20,16 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiEditorScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiPickerScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiScreen; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.DynamicIsland; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.DynamicIsland; import dev.loki.lovisual.features.module.modules.misc.ClickGui; -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.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.renderer.Renderer2D; @Mixin(Gui.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/PauseScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/PauseScreenMixin.java index f4582a0..c71e1c1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/PauseScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/PauseScreenMixin.java @@ -18,8 +18,8 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; @Mixin(PauseScreen.class) public abstract class PauseScreenMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/ScreenMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/ScreenMixin.java index 66917a1..80ad627 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/ScreenMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/screens/ScreenMixin.java @@ -19,16 +19,16 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.features.command.CommandManager; -import dev.loki.lovisual.features.command.CommandPrefix; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.util.CommandPrefix; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; -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.postprocess.MenuBackgroundRenderer; +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.postprocess.render.MenuBackgroundRenderer; import dev.loki.lovisual.util.NarratorBlocker; @Mixin(Screen.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/ButtonWidgetTextMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/ButtonWidgetTextMixin.java index 1758ce6..53adcf1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/ButtonWidgetTextMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/ButtonWidgetTextMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; @Mixin(Button.Plain.class) public abstract class ButtonWidgetTextMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/CycleButtonMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/CycleButtonMixin.java index d303b8b..e24a4d4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/CycleButtonMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/CycleButtonMixin.java @@ -18,7 +18,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; import dev.loki.lovisual.mixins.accessors.widget.CyclingButtonWidgetAccessor; @Mixin(CycleButton.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonCenteredIconMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonCenteredIconMixin.java index 8ec18ad..6741612 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonCenteredIconMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonCenteredIconMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; @Mixin(SpriteIconButton.CenteredIcon.class) public abstract class SpriteIconButtonCenteredIconMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonTextAndIconMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonTextAndIconMixin.java index 0a861c4..fe0adaa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonTextAndIconMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/gui/widgets/SpriteIconButtonTextAndIconMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; @Mixin(SpriteIconButton.TextAndIcon.class) public abstract class SpriteIconButtonTextAndIconMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/DebugHudMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/DebugHudMixin.java index 2be5f26..1188e21 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/DebugHudMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/DebugHudMixin.java @@ -11,14 +11,14 @@ import net.minecraft.client.gui.components.DebugScreenOverlay; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.debug.RenderThread2DDebugRenderer; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontDebugStats; +import dev.loki.lovisual.render.engine.text.font.info.FontDebugStats; import dev.loki.lovisual.util.logging.DebugMode; -import dev.loki.lovisual.util.wav.WavDebugStats; +import dev.loki.lovisual.util.wav.util.WavDebugStats; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiGraphicsMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiGraphicsMixin.java index e53ab1c..615a22c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiGraphicsMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiGraphicsMixin.java @@ -26,20 +26,21 @@ import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.CooldownRender; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterTooltips; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; -import dev.loki.lovisual.mixininterface.IGuiGraphics; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.features.gui.hud.base.CooldownRender; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.mixininterface.render.IGuiGraphics; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.HudDeferredGuiElement; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.HudDeferredGuiElement; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.renderer.state.gui.GuiRenderState; -import dev.loki.lovisual.util.pvp.CooldownRegistry; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.PvpState; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.state.PvpState; import dev.loki.lovisual.util.pvp.client.CooldownsState; +import dev.loki.lovisual.render.engine.text.font.Font; @Mixin(GuiGraphicsExtractor.class) public abstract class GuiGraphicsMixin implements IGuiGraphics { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiMixin.java index 46270a7..6e38ea4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiMixin.java @@ -33,27 +33,27 @@ import dev.loki.lovisual.events.impl.pvp.PvpOverlayEvent; import dev.loki.lovisual.features.gui.hud.draggable.impl.panels.Scoreboard; import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import dev.loki.lovisual.features.gui.hud.draggable.impl.status.Potions; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.SwapTooltip; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomHealthBar; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomHotbar; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.misc.MessageFilter; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.SwapTooltip; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomHealthBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.hotbar.CustomHotbar; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.misc.protect.MessageFilter; import dev.loki.lovisual.features.module.modules.visuals.player.Crosshair; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; -import dev.loki.lovisual.mixininterface.IGuiGraphics; -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.mixininterface.render.IGuiGraphics; +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.debug.RenderThread2DDebugRenderer; // disabled: debug probes are manual-only import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.Lifecycle; -import dev.loki.lovisual.util.item.IllegalItemUtil; -import dev.loki.lovisual.util.item.RarityColorUtil; -import dev.loki.lovisual.util.item.TopEnchantUtil; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; +import dev.loki.lovisual.util.item.rarity.RarityColorUtil; +import dev.loki.lovisual.util.item.enchant.TopEnchantUtil; import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.util.text.TextJsonUtil; +import dev.loki.lovisual.util.text.format.TextJsonUtil; @Mixin(Hud.class) public abstract class GuiMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiRendererMixin.java index 00d8525..5689c4b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/GuiRendererMixin.java @@ -12,7 +12,7 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.systems.RenderSystem; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.HudDeferredGuiElement; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.HudDeferredGuiElement; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.render.GuiRenderer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/BossHealthOverlayMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/BossHealthOverlayMixin.java index 25e147f..36d2c45 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/BossHealthOverlayMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/BossHealthOverlayMixin.java @@ -21,6 +21,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.util.pvp.client.CooldownsState; @Mixin(BossHealthOverlay.class) public class BossHealthOverlayMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/ExperienceBarMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/ExperienceBarMixin.java index e56efc6..58950f8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/ExperienceBarMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/ExperienceBarMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; import dev.loki.lovisual.Lifecycle; @Mixin(ExperienceBar.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/JumpBarMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/JumpBarMixin.java index 3ddca70..6a6ae91 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/JumpBarMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/JumpBarMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; import dev.loki.lovisual.Lifecycle; @Mixin(JumpableVehicleBar.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/LocatorBarMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/LocatorBarMixin.java index bf305b2..6166eb9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/LocatorBarMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/bars/LocatorBarMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; import dev.loki.lovisual.Lifecycle; @Mixin(LocatorBar.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/ToastManagerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/ToastManagerMixin.java index 90375d9..c16b361 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/ToastManagerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/ToastManagerMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; @Mixin(ToastManager.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/TooltipRenderUtilMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/TooltipRenderUtilMixin.java index 2b9629b..2d8584b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/TooltipRenderUtilMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/hud/tooltips/TooltipRenderUtilMixin.java @@ -14,7 +14,7 @@ import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterTooltips; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tooltips.BetterTooltips; @Mixin(TooltipRenderUtil.class) public class TooltipRenderUtilMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardInputMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardInputMixin.java index d73daca..4fb212d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardInputMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardInputMixin.java @@ -13,8 +13,8 @@ import net.minecraft.client.player.KeyboardInput; import net.minecraft.world.entity.player.Input; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.MovementCorrection; import dev.loki.lovisual.mixins.input.mouse.InputMixin; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardMixin.java index ea42afe..1f7dd26 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/keyboard/KeyboardMixin.java @@ -31,12 +31,17 @@ import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; import dev.loki.lovisual.features.gui.chat.messages.BetterChatSearch; import dev.loki.lovisual.features.gui.chat.model.BetterChatStoreManager; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; -import dev.loki.lovisual.features.module.ModuleManager; +import dev.loki.lovisual.features.module.core.ModuleManager; import dev.loki.lovisual.mixins.accessors.chat.ChatScreenAccessor; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.util.NarratorBlocker; import dev.loki.lovisual.util.input.KeyManager; -import dev.loki.lovisual.util.text.ClipboardUtil; +import dev.loki.lovisual.util.text.edit.ClipboardUtil; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; @Mixin(KeyboardHandler.class) public class KeyboardMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/mouse/MouseMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/mouse/MouseMixin.java index b8a93db..886ffde 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/mouse/MouseMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/input/mouse/MouseMixin.java @@ -23,14 +23,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.loki.lovisual.features.gui.chat.render.BetterChatRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiEditorScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiPickerScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; import dev.loki.lovisual.features.gui.hud.nondraggable.StaticHudElementRegistry; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.DynamicIsland; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.dynamicisland.DynamicIsland; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.module.modules.visuals.fx.Zoom; import dev.loki.lovisual.features.module.modules.player.ThirdPerson; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisHandRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisHandRendererMixin.java index 4ccac57..77d768e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisHandRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisHandRendererMixin.java @@ -18,8 +18,8 @@ import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.iris.IrisCompatibilityGuards; -import dev.loki.lovisual.render.iris.IrisSecondHandScene; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityGuards; +import dev.loki.lovisual.render.iris.scene.IrisSecondHandScene; @Pseudo @Mixin(value = HandRenderer.class, remap = false) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisVanillaHandInteropMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisVanillaHandInteropMixin.java index 77e1b74..74b9ea2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisVanillaHandInteropMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/hand/IrisVanillaHandInteropMixin.java @@ -16,9 +16,9 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; @Mixin(value = GameRenderer.class, priority = 900) public abstract class IrisVanillaHandInteropMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisCommonUniformsMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisCommonUniformsMixin.java index cb7e26e..fdad2d6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisCommonUniformsMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisCommonUniformsMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.iris.LoVisualIrisUniforms; +import dev.loki.lovisual.render.iris.runtime.LoVisualIrisUniforms; @Pseudo @Mixin(targets = "net.irisshaders.iris.uniforms.CommonUniforms", remap = false) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisGameRendererInteropMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisGameRendererInteropMixin.java index 67e441d..5b5ed98 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisGameRendererInteropMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisGameRendererInteropMixin.java @@ -13,8 +13,8 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.iris.IrisLoVisualFrameHooks; -import dev.loki.lovisual.render.iris.IrisSecondHandScene; +import dev.loki.lovisual.render.iris.state.IrisLoVisualFrameHooks; +import dev.loki.lovisual.render.iris.scene.IrisSecondHandScene; @Mixin(value = GameRenderer.class, priority = 900) public abstract class IrisGameRendererInteropMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisRenderingPipelineFinalizeMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisRenderingPipelineFinalizeMixin.java index ba9578f..1858b38 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisRenderingPipelineFinalizeMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/iris/render/IrisRenderingPipelineFinalizeMixin.java @@ -17,8 +17,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.loki.lovisual.render.engine.depth.PreTranslucentDepth; -import dev.loki.lovisual.render.iris.IrisLoVisualFrameHooks; -import dev.loki.lovisual.render.iris.IrisSceneDepth; +import dev.loki.lovisual.render.iris.state.IrisLoVisualFrameHooks; +import dev.loki.lovisual.render.iris.scene.IrisSceneDepth; @Pseudo @Mixin(value = IrisRenderingPipeline.class, remap = false) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/ClientPacketListenerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/ClientPacketListenerMixin.java index 7935f51..8172074 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/ClientPacketListenerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/ClientPacketListenerMixin.java @@ -21,21 +21,21 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.pvp.PvpChatEvent; import dev.loki.lovisual.events.impl.pvp.PvpTabEvent; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; -import dev.loki.lovisual.features.module.modules.misc.NoSound; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.misc.sound.NoSound; import dev.loki.lovisual.features.module.modules.visuals.esp.audio.SoundESP; import dev.loki.lovisual.features.module.modules.visuals.fx.TotemFX; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import dev.loki.lovisual.features.relations.StaffTracker; import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.logging.ServerDumpUtil; -import dev.loki.lovisual.util.player.NetworkStatsUtil; -import dev.loki.lovisual.util.player.effect.StatusEffectHeuristics; +import dev.loki.lovisual.util.player.interaction.NetworkStatsUtil; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectHeuristics; import dev.loki.lovisual.util.pvp.client.CooldownsState; import dev.loki.lovisual.util.pvp.opponents.OpponentCooldownManager; import dev.loki.lovisual.util.pvp.opponents.TotemPopCounter; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeMixin.java index e076f7d..d466a30 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeMixin.java @@ -24,20 +24,20 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.entity.AttackEntityEvent; import dev.loki.lovisual.events.impl.world.EventBreakBlock; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.NoFriendDamage; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; -import dev.loki.lovisual.features.module.modules.misc.HitSounds; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.damage.NoFriendDamage; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.misc.sound.HitSounds; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.module.modules.visuals.effects.HitEffect; import dev.loki.lovisual.mixins.accessors.world.WorldAccessor; -import dev.loki.lovisual.util.player.inventory.InventorySwap; -import dev.loki.lovisual.util.combat.ReachMeter; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; +import dev.loki.lovisual.util.combat.tracking.ReachMeter; import dev.loki.lovisual.util.target.TargetManager; @Mixin(MultiPlayerGameMode.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeThrowMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeThrowMixin.java index e24a177..2b1083b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeThrowMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/MultiPlayerGameModeThrowMixin.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.mixins.network.game; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.player.LockSlot; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.player.inventory.LockSlot; import net.minecraft.client.multiplayer.MultiPlayerGameMode; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ContainerInput; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/PlayerInfoMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/PlayerInfoMixin.java index 055c036..fb5973e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/PlayerInfoMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/game/PlayerInfoMixin.java @@ -20,11 +20,11 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import dev.loki.lovisual.features.gui.hud.nondraggable.impl.tab.CustomTabList; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.misc.BetterMinecraft; -import dev.loki.lovisual.features.module.modules.misc.NameProtect; -import dev.loki.lovisual.features.relations.CategoryService; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.features.module.modules.misc.protect.NameProtect; +import dev.loki.lovisual.features.relations.category.CategoryService; +import dev.loki.lovisual.features.relations.category.CategoryType; @Mixin(PlayerInfo.class) public abstract class PlayerInfoMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ClientCommonPacketListenerImplMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ClientCommonPacketListenerImplMixin.java index c0b5692..91e354c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ClientCommonPacketListenerImplMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ClientCommonPacketListenerImplMixin.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.mixins.network.packet; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.misc.NoServerPack; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.misc.protect.NoServerPack; import net.minecraft.client.multiplayer.ClientCommonPacketListenerImpl; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.network.Connection; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ConnectionMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ConnectionMixin.java index 30a8f8d..dd10fbd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ConnectionMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ConnectionMixin.java @@ -21,7 +21,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.network.PacketEvent; -import dev.loki.lovisual.util.network.BlinkManager; +import dev.loki.lovisual.util.network.control.BlinkManager; import dev.loki.lovisual.util.proxy.ProxyNettyInstaller; @Mixin(Connection.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ServerboundUseItemPacketMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ServerboundUseItemPacketMixin.java index b9752e1..37d0803 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ServerboundUseItemPacketMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/network/packet/ServerboundUseItemPacketMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; import dev.loki.lovisual.util.aiming.data.Rotation; @Mixin(ServerboundUseItemPacket.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRenderStateMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRenderStateMixin.java index 4097df5..d75350d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRenderStateMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRenderStateMixin.java @@ -10,7 +10,7 @@ package dev.loki.lovisual.mixins.render.entity; import net.minecraft.client.renderer.entity.state.ItemEntityRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -import dev.loki.lovisual.mixininterface.IItemEntityRenderState; +import dev.loki.lovisual.mixininterface.render.IItemEntityRenderState; @Mixin(ItemEntityRenderState.class) public class ItemEntityRenderStateMixin implements IItemEntityRenderState { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRendererMixin.java index 8385bf4..880caf4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/ItemEntityRendererMixin.java @@ -24,9 +24,9 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.scene.ItemPhysic; -import dev.loki.lovisual.mixininterface.IItemEntityRenderState; +import dev.loki.lovisual.mixininterface.render.IItemEntityRenderState; import net.minecraft.util.Mth; @Mixin(ItemEntityRenderer.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/LivingEntityRenderStateMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/LivingEntityRenderStateMixin.java index ed701ca..93c0abe 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/LivingEntityRenderStateMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/entity/LivingEntityRenderStateMixin.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.mixins.render.entity; import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -import dev.loki.lovisual.render.SeeInvisiblesState; -import dev.loki.lovisual.render.ViewObstructionFadeState; +import dev.loki.lovisual.render.invisible.SeeInvisiblesState; +import dev.loki.lovisual.render.fade.ViewObstructionFadeState; @Mixin(LivingEntityRenderState.class) public abstract class LivingEntityRenderStateMixin implements ViewObstructionFadeState, SeeInvisiblesState { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/AtmosphericFogEnvironmentMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/AtmosphericFogEnvironmentMixin.java index fcc8f13..2be9a81 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/AtmosphericFogEnvironmentMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/AtmosphericFogEnvironmentMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.AtmoDawnFog; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/FogRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/FogRendererMixin.java index fb61e3c..a4237e3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/FogRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/FogRendererMixin.java @@ -18,7 +18,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.AtmoDawnFog; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/LavaFogModifierMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/LavaFogModifierMixin.java index aaa7d0f..bcf2ba5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/LavaFogModifierMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/LavaFogModifierMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; @Mixin(value = LavaFogEnvironment.class, priority = 1200) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/WaterFogEnvironmentMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/WaterFogEnvironmentMixin.java index af33f3c..2bda06d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/WaterFogEnvironmentMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fog/WaterFogEnvironmentMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; @Mixin(value = WaterFogEnvironment.class, priority = 1200) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fogmod/PowderSnowFogModifierMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fogmod/PowderSnowFogModifierMixin.java index 73f9b19..6be1538 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fogmod/PowderSnowFogModifierMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/fogmod/PowderSnowFogModifierMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; @Mixin(value = PowderedSnowFogEnvironment.class, priority = 1200) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/EquipmentLayerRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/EquipmentLayerRendererMixin.java index 86707b0..7a1bbfb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/EquipmentLayerRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/EquipmentLayerRendererMixin.java @@ -14,8 +14,8 @@ import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import dev.loki.lovisual.render.ViewObstructionFadeContext; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.fade.ViewObstructionFadeContext; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; @Mixin(EquipmentLayerRenderer.class) public abstract class EquipmentLayerRendererMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandAlwaysVisibleMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandAlwaysVisibleMixin.java index 3ec3c41..65a226f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandAlwaysVisibleMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandAlwaysVisibleMixin.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.mixins.render.item; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.items.AlwaysVisibleHand; import net.minecraft.client.renderer.ItemInHandRenderer; import org.spongepowered.asm.mixin.Mixin; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandRendererMixin.java index 80d43ca..fb2a060 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/item/ItemInHandRendererMixin.java @@ -25,12 +25,12 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.items.HoldMyItems; import dev.loki.lovisual.util.animation.hand.HandDynamics; import dev.loki.lovisual.features.module.modules.visuals.camera.ViewModel; import dev.loki.lovisual.util.animation.EquipProgressComposer; -import dev.loki.lovisual.util.animation.hand.HandAnimState; +import dev.loki.lovisual.util.animation.hand.state.HandAnimState; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; @Environment(EnvType.CLIENT) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/CameraMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/CameraMixin.java index d18b5e7..0c78424 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/CameraMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/CameraMixin.java @@ -27,7 +27,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.player.ThirdPerson; import dev.loki.lovisual.features.module.modules.visuals.camera.CameraClip; import dev.loki.lovisual.features.module.modules.visuals.FovControl; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/LevelRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/LevelRendererMixin.java index 3427aef..700a5df 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/LevelRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/LevelRendererMixin.java @@ -34,17 +34,17 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.scene.BlockHighlight; import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; import dev.loki.lovisual.features.module.modules.visuals.weather.ShaderSky; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; import dev.loki.lovisual.mixins.accessors.world.LevelRendererAccessor; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; import dev.loki.lovisual.render.engine.depth.PreTranslucentDepth; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import dev.loki.lovisual.render.sky.CustomSkyboxRenderer; @Mixin(LevelRenderer.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/ParticleManagerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/ParticleManagerMixin.java index 57f2d8c..cfc0e00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/ParticleManagerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/level/ParticleManagerMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.util.player.effect.StatusEffectHeuristics; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectHeuristics; @Mixin(ParticleEngine.class) public class ParticleManagerMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererMixin.java index 5883f9c..cf7d69c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererMixin.java @@ -11,7 +11,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Camera; import net.minecraft.client.DeltaTracker; @@ -41,38 +41,38 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.BetterButtons; -import dev.loki.lovisual.addon.AddonRenderPipelineManager; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.buttons.BetterButtons; +import dev.loki.lovisual.addon.pipeline.AddonRenderPipelineManager; import dev.loki.lovisual.api.v0.render.LoVisualRenderStage; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.WorldPhase; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.phase.WorldPhase; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; import dev.loki.lovisual.mixins.accessors.entity.LocalPlayerAccessor; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.core.RenderPhaseScope; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhaseScope; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; // import dev.loki.lovisual.render.engine.debug.RenderThread2DDebugRenderer; // disabled: debug probes are manual-only import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; -import dev.loki.lovisual.config.MainConfig; +import dev.loki.lovisual.config.i18n.MainConfig; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.MenuBackgroundRenderer; -import dev.loki.lovisual.render.engine.profiler.ProfilerPhase; -import dev.loki.lovisual.render.engine.profiler.RenderProfiler3D; -import dev.loki.lovisual.render.engine.profiler.TracyGpuProfiler; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.render.MenuBackgroundRenderer; +import dev.loki.lovisual.render.engine.profiler.config.ProfilerPhase; +import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler3D; +import dev.loki.lovisual.render.engine.profiler.bridge.TracyGpuProfiler; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; 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.render.engine.visuals.LoVisualVisuals; -import dev.loki.lovisual.render.iris.IrisLoVisualFrameHooks; -import dev.loki.lovisual.render.iris.IrisFinalizedSceneRenderer; -import dev.loki.lovisual.render.iris.IrisCompatibilityGuards; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.state.IrisLoVisualFrameHooks; +import dev.loki.lovisual.render.iris.scene.IrisFinalizedSceneRenderer; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityGuards; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.features.module.modules.visuals.camera.AspectRatio; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; @@ -80,6 +80,8 @@ import dev.loki.lovisual.features.module.modules.visuals.camera.ViewModel; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.HudDeferredGuiElement; +import dev.loki.lovisual.features.module.modules.misc.ClickGui; @Mixin(GameRenderer.class) public abstract class GameRendererMixin implements IrisFinalizedSceneRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererViewEffectsMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererViewEffectsMixin.java index 0cc05a8..18ec95a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererViewEffectsMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/GameRendererViewEffectsMixin.java @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/MinecraftMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/MinecraftMixin.java index 0977de9..2adbf2a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/MinecraftMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/MinecraftMixin.java @@ -8,7 +8,8 @@ package dev.loki.lovisual.mixins.render.main; import com.mojang.blaze3d.systems.GpuSurface; -import dev.loki.lovisual.features.module.modules.combat.*; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.combat.pvp.SpearAssist; import net.minecraft.client.FramerateLimiter; import net.minecraft.client.Minecraft; import net.minecraft.client.main.GameConfig; @@ -35,16 +36,18 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.entity.CrosshairTargetUpdateEvent; import dev.loki.lovisual.features.gui.chat.model.BetterChatStoreManager; -import dev.loki.lovisual.features.module.ModuleManager; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.player.NoDelay; -import dev.loki.lovisual.features.module.modules.player.NoInteract; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.player.interact.NoDelay; +import dev.loki.lovisual.features.module.modules.player.interact.NoInteract; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.relations.StaffTracker; -import dev.loki.lovisual.render.helpers.TickDelta; -import dev.loki.lovisual.util.combat.AntiBotTracker; +import dev.loki.lovisual.render.helpers.util.TickDelta; +import dev.loki.lovisual.util.combat.tracking.AntiBotTracker; import dev.loki.lovisual.util.session.SessionChanger; import dev.loki.lovisual.util.session.MinecraftGameConfigHolder; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.features.module.modules.combat.pvp.SpearAssist; @Mixin(Minecraft.class) public class MinecraftMixin implements MinecraftGameConfigHolder { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/ScreenEffectRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/ScreenEffectRendererMixin.java index 1c1a899..a000389 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/ScreenEffectRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/main/ScreenEffectRendererMixin.java @@ -17,7 +17,7 @@ import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; import dev.loki.lovisual.mixins.accessors.hud.InGameOverlayRendererAccessor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/LibraryMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/LibraryMixin.java index 49d8ed0..01d1317 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/LibraryMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/LibraryMixin.java @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.util.wav.CustomSoundEngine; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; /** * Hooks into Minecraft SoundEngine lifecycle to reset our WAV caches diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/SoundEngineMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/SoundEngineMixin.java index aba4a09..f2efe63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/SoundEngineMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/render/sound/SoundEngineMixin.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.mixins.render.sound; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.misc.NoSound; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.misc.sound.NoSound; import net.minecraft.client.resources.sounds.Sound; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.client.sounds.SoundEngine; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumBlockRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumBlockRendererMixin.java index 96684a4..e43fc96 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumBlockRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumBlockRendererMixin.java @@ -20,8 +20,8 @@ import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.helpers.SodiumSurfaceFlagContext; -import dev.loki.lovisual.render.sodium.terrain.LoVisualChunkVertexExtension; +import dev.loki.lovisual.render.helpers.material.SodiumSurfaceFlagContext; +import dev.loki.lovisual.render.sodium.terrain.vertex.LoVisualChunkVertexExtension; @Pseudo @Mixin(targets = "net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer") diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumShaderChunkRendererMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumShaderChunkRendererMixin.java index fcd2a98..e5f601d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumShaderChunkRendererMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/terrain/SodiumShaderChunkRendererMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; /** * Sodium 26.2 builds terrain shaders as Mojang RenderPipeline objects. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumChunkVertexMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumChunkVertexMixin.java index 80bf7a6..fddd321 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumChunkVertexMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumChunkVertexMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.render.sodium.terrain.LoVisualChunkVertexExtension; +import dev.loki.lovisual.render.sodium.terrain.vertex.LoVisualChunkVertexExtension; @Mixin(ChunkVertexEncoder.Vertex.class) public abstract class SodiumChunkVertexMixin implements LoVisualChunkVertexExtension { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumWorldRendererFreecamMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumWorldRendererFreecamMixin.java index 3851914..dff3b28 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumWorldRendererFreecamMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/sodium/vertex/SodiumWorldRendererFreecamMixin.java @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; @Pseudo diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/BlockMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/BlockMixin.java index dbd4b38..4c68ba6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/BlockMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/BlockMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.util.player.EnvironmentMovementController; +import dev.loki.lovisual.util.player.movement.EnvironmentMovementController; @Mixin(Block.class) public abstract class BlockMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/HoneyBlockMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/HoneyBlockMixin.java index 825b2aa..1f2105d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/HoneyBlockMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/block/HoneyBlockMixin.java @@ -13,7 +13,7 @@ import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import dev.loki.lovisual.util.player.EnvironmentMovementController; +import dev.loki.lovisual.util.player.movement.EnvironmentMovementController; @Mixin(HoneyBlock.class) public class HoneyBlockMixin { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientClockManagerMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientClockManagerMixin.java index 9a920bb..537e506 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientClockManagerMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientClockManagerMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; @Mixin(ClientClockManager.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientLevelMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientLevelMixin.java index 3dd81c0..7eb1c11 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientLevelMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/ClientLevelMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; @Mixin(ClientLevel.class) diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelExtractorMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelExtractorMixin.java index 64b4744..fc01902 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelExtractorMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelExtractorMixin.java @@ -19,7 +19,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.mixins.accessors.world.LevelExtractorAccessor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelMixin.java index 6fe5716..fafc1c4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/world/level/LevelMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks.WeatherMode; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/minimap/AbstractWaypointRenderProviderMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/minimap/AbstractWaypointRenderProviderMixin.java index 2bcf3f6..2c30ed5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/minimap/AbstractWaypointRenderProviderMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/minimap/AbstractWaypointRenderProviderMixin.java @@ -12,7 +12,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; -import dev.loki.lovisual.compat.xaero.TriangulatorXaeroMinimapCompat; +import dev.loki.lovisual.compat.xaero.triangulator.TriangulatorXaeroMinimapCompat; import xaero.common.minimap.waypoints.Waypoint; import xaero.hud.minimap.element.render.MinimapElementRenderLocation; import xaero.hud.minimap.waypoint.WaypointCollector; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/worldmap/WaypointRenderProviderMixin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/worldmap/WaypointRenderProviderMixin.java index 7532c2c..94f9349 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/worldmap/WaypointRenderProviderMixin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/mixins/xaero/worldmap/WaypointRenderProviderMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.loki.lovisual.compat.xaero.TriangulatorXaeroWorldMapCompat; +import dev.loki.lovisual.compat.xaero.triangulator.TriangulatorXaeroWorldMapCompat; import xaero.map.element.render.ElementRenderLocation; import xaero.map.mods.SupportXaeroMinimap; import xaero.map.mods.gui.Waypoint; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeState.java deleted file mode 100644 index 671c701..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeState.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.render; - -public interface ViewObstructionFadeState { - boolean lovisual$isViewObstructionFadeActive(); - - float lovisual$getViewObstructionFadeAlpha(); - - void lovisual$setViewObstructionFadeActive(boolean active); - - void lovisual$setViewObstructionFadeAlpha(float alpha); -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/NetherPortalRiftPass.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/NetherPortalRiftPass.java index 03268eb..c0ac39d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/NetherPortalRiftPass.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/NetherPortalRiftPass.java @@ -14,10 +14,10 @@ import net.minecraft.world.entity.PortalProcessor; import net.minecraft.world.level.block.Blocks; import dev.loki.lovisual.mixins.accessors.entity.EntityAccessor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.HeatUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.world.HeatUniforms; public final class NetherPortalRiftPass implements PostProcessPass { private static final float FADE_IN_SECONDS = 0.25f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/SleepOverlayPass.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/SleepOverlayPass.java index 3203f5e..ff98367 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/SleepOverlayPass.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/effects/SleepOverlayPass.java @@ -11,10 +11,10 @@ import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; +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.FullScreenRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.PostProcessUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostProcessUniforms; public final class SleepOverlayPass implements PostProcessPass { private static final float FADE_IN_SECONDS = 0.6f; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/LoVisualRenderEngineBootstrap.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/LoVisualRenderEngineBootstrap.java index 8e1c437..077e7a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/LoVisualRenderEngineBootstrap.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/LoVisualRenderEngineBootstrap.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.render.engine; -import dev.loki.lovisual.render.engine.guard.RenderBoundaryAudit; +import dev.loki.lovisual.render.engine.guard.boundary.RenderBoundaryAudit; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgRegistry; +import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry; import dev.loki.lovisual.render.engine.visuals.LoVisualVisuals; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; public enum LoVisualRenderEngineBootstrap { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Projection2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Projection2D.java index 06f4856..8404b7b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Projection2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Projection2D.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine; import net.minecraft.client.gui.GuiGraphicsExtractor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; /** * Deprecated compatibility facade. Use ViewportContext directly. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/RenderState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/RenderState.java index 2c53ad9..f17c8d1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/RenderState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/RenderState.java @@ -13,7 +13,7 @@ import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.joml.Quaternionf; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; /** * Engine global render flags/state. Set these in render hooks. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedClockText.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedClockText.java index 2660207..8ee9f74 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedClockText.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedClockText.java @@ -6,8 +6,11 @@ */ package dev.loki.lovisual.render.engine.animation; +import dev.loki.lovisual.render.engine.animation.text.AnimatedTextLine; +import dev.loki.lovisual.render.engine.animation.text.AnimatedTextStyle; -import dev.loki.lovisual.render.engine.text.TextRenderer; + +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.time.LocalTime; import java.time.format.DateTimeFormatter; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedGlyphSlot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedGlyphSlot.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedGlyphSlot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedGlyphSlot.java index 7a79396..7e52084 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedGlyphSlot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedGlyphSlot.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.animation; +package dev.loki.lovisual.render.engine.animation.text; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; + public final class AnimatedGlyphSlot { private char current; @@ -13,22 +15,22 @@ public final class AnimatedGlyphSlot { private long animationStartMs; private boolean animating; - AnimatedGlyphSlot(char initial) { + public AnimatedGlyphSlot(char initial) { this.current = initial; this.previous = initial; this.animationStartMs = 0L; this.animating = false; } - char current() { + public char current() { return current; } - char previous() { + public char previous() { return previous; } - boolean isAnimating(long nowMs, AnimatedTextStyle style) { + public boolean isAnimating(long nowMs, AnimatedTextStyle style) { if (!animating) return false; if (progress(nowMs, style) >= 1.0f) { animating = false; @@ -38,12 +40,12 @@ public final class AnimatedGlyphSlot { return true; } - float progress(long nowMs, AnimatedTextStyle style) { + public float progress(long nowMs, AnimatedTextStyle style) { if (!animating || style == null) return 1.0f; return AnimationUtility.clamp01((nowMs - animationStartMs) / (float) style.durationMs()); } - void set(char next, long nowMs, AnimatedTextStyle style) { + public void set(char next, long nowMs, AnimatedTextStyle style) { if (next == current) return; boolean animate = shouldAnimate(current, next, style); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextLine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextLine.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextLine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextLine.java index ff9d286..401749c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextLine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextLine.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.animation; +package dev.loki.lovisual.render.engine.animation.text; +import dev.loki.lovisual.render.engine.animation.AnimationUtility; + import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextStyle.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextStyle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextStyle.java index 2a2dfe6..40e00b9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextStyle.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.animation; +package dev.loki.lovisual.render.engine.animation.text; public final class AnimatedTextStyle { private final AnimatedTextTransition transition; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextTransition.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextTransition.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextTransition.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextTransition.java index 5c0714b..de36301 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/AnimatedTextTransition.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/animation/text/AnimatedTextTransition.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.animation; +package dev.loki.lovisual.render.engine.animation.text; public enum AnimatedTextTransition { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPathCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPathCommand.java deleted file mode 100644 index c76a650..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPathCommand.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.render.engine.command; - -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; - -public record UiPathCommand(UiShape path, UiPaint paint, UiStroke stroke, boolean fill) implements UiCommand { - @Override - public UiCommandKind kind() { - return UiCommandKind.PATH; - } -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiShapeCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiShapeCommand.java deleted file mode 100644 index 52e0ded..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiShapeCommand.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.render.engine.command; - -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; - -public record UiShapeCommand(UiShape shape, UiPaint paint, UiStroke stroke, boolean fill) implements UiCommand { - @Override - public UiCommandKind kind() { - return UiCommandKind.SHAPE; - } -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommand.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommand.java index fb782a7..34f316d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommand.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.core; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; /** * Normalized UI command root. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandBuffer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandBuffer.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandBuffer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandBuffer.java index 1d3526a..3b2aa08 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandBuffer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandBuffer.java @@ -5,14 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.core; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandStats; +import dev.loki.lovisual.render.engine.command.world.RenderCommandBuffer; +import dev.loki.lovisual.render.engine.command.world.UiStatsSnapshot; /** * High-level normalized UI command stream. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandKind.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandKind.java index a1305bb..5bbd8a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.core; public enum UiCommandKind { SHAPE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandStats.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandStats.java index 2b7c817..1ff102f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiCommandStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/core/UiCommandStats.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.core; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.world.UiStatsSnapshot; public final class UiCommandStats { private long frameId; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiBatchBackendCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiBatchBackendCommand.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiBatchBackendCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiBatchBackendCommand.java index 819255a..2800c60 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiBatchBackendCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiBatchBackendCommand.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.effect; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; /** * Explicit marker for draw work that is executed by the ordered Renderer2D batch backend. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectCommand.java similarity index 75% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectCommand.java index 2c86a39..9812414 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectCommand.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.effect; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiEffectCommand(UiCommandKind kind, float x, float y, float width, float height, float radius) implements UiCommand { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectRegionCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectRegionCommand.java similarity index 56% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectRegionCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectRegionCommand.java index e89bbb7..cc382e7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiEffectRegionCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/effect/UiEffectRegionCommand.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.effect; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectSpec; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiEffectRegionCommand(UiEffectSpec effect) implements UiCommand { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPathCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPathCommand.java new file mode 100644 index 0000000..6a4be0e --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPathCommand.java @@ -0,0 +1,21 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.command.shape; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; + +public record UiPathCommand(UiShape path, UiPaint paint, UiStroke stroke, boolean fill) implements UiCommand { + @Override + public UiCommandKind kind() { + return UiCommandKind.PATH; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPrimitiveCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPrimitiveCommand.java similarity index 66% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPrimitiveCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPrimitiveCommand.java index abe5874..e3b8998 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiPrimitiveCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiPrimitiveCommand.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.shape; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiPrimitiveCommand(float x, float y, float width, float height, int argb) implements UiCommand { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiShapeCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiShapeCommand.java new file mode 100644 index 0000000..6c081f6 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/shape/UiShapeCommand.java @@ -0,0 +1,21 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.command.shape; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; + +public record UiShapeCommand(UiShape shape, UiPaint paint, UiStroke stroke, boolean fill) implements UiCommand { + @Override + public UiCommandKind kind() { + return UiCommandKind.SHAPE; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiItemCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiItemCommand.java similarity index 67% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiItemCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiItemCommand.java index 1d8620f..ef1b07f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiItemCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiItemCommand.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.texture; import net.minecraft.world.item.ItemStack; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiItemCommand(ItemStack stack, int x, int y, float scale) implements UiCommand { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextCommand.java similarity index 65% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextCommand.java index b535573..705e8a0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextCommand.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.texture; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiTextCommand(String text, float x, float y, int argb, float size) implements UiCommand { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureCommand.java similarity index 71% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureCommand.java index 49b42c0..6637186 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureCommand.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.texture; import com.mojang.blaze3d.textures.GpuTextureView; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiTextureCommand(GpuTextureView texture, float x, float y, float width, float height, int argb) implements UiCommand { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureDrawCommand.java similarity index 71% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureDrawCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureDrawCommand.java index 39340d4..0730189 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiTextureDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/texture/UiTextureDrawCommand.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.texture; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; public record UiTextureDrawCommand(GpuTextureView view, GpuSampler sampler, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/RenderCommandBuffer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/RenderCommandBuffer.java similarity index 69% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/RenderCommandBuffer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/RenderCommandBuffer.java index 1b2fe79..81d0a6d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/RenderCommandBuffer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/RenderCommandBuffer.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.world; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; public interface RenderCommandBuffer { void clear(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/UiStatsSnapshot.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/UiStatsSnapshot.java index cd97f19..acf6ab8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/UiStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/UiStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.world; public record UiStatsSnapshot(long frameId, int recordedCommands, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/WorldCommandBuffer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/WorldCommandBuffer.java similarity index 70% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/WorldCommandBuffer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/WorldCommandBuffer.java index 468f84c..ab155db 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/WorldCommandBuffer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/command/world/WorldCommandBuffer.java @@ -5,14 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.command; +package dev.loki.lovisual.render.engine.command.world; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.RhiDrawCommand; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.render.engine.command.world.RenderCommandBuffer; public final class WorldCommandBuffer implements RenderCommandBuffer { private final List commands = new ArrayList<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/CameraContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/CameraContext.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/CameraContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/CameraContext.java index c36f816..ac9dd36 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/CameraContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/CameraContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.context; import net.minecraft.client.Minecraft; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FramebufferContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/FramebufferContext.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FramebufferContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/FramebufferContext.java index e29db64..949de56 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FramebufferContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/FramebufferContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.context; import com.mojang.blaze3d.pipeline.RenderTarget; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/ViewportContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/ViewportContext.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/ViewportContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/ViewportContext.java index 1618b6b..1d5cfc2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/ViewportContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/context/ViewportContext.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.context; +import dev.loki.lovisual.render.engine.Projection2D; + import com.mojang.blaze3d.ProjectionType; import com.mojang.blaze3d.systems.RenderSystem; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FrameLifecycle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/FrameLifecycle.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FrameLifecycle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/FrameLifecycle.java index 9b4c214..ba90b8c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/FrameLifecycle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/FrameLifecycle.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.frame; /** * Backend-visible lifecycle state for one Minecraft-presented frame. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderFrameContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderFrameContext.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderFrameContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderFrameContext.java index d4cb242..830f05c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderFrameContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderFrameContext.java @@ -5,13 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.frame; +import dev.loki.lovisual.render.engine.RenderState; + import dev.loki.lovisual.render.engine.core.policy.DepthProvider; -import dev.loki.lovisual.render.engine.core.policy.FogProvider; +import dev.loki.lovisual.render.engine.core.policy.fog.FogProvider; import dev.loki.lovisual.render.engine.core.policy.LightPolicy; import dev.loki.lovisual.render.engine.core.policy.VisibilityProvider; -import dev.loki.lovisual.render.sodium.SodiumFrameContext; +import dev.loki.lovisual.render.sodium.bridge.SodiumFrameContext; +import dev.loki.lovisual.render.engine.core.context.CameraContext; +import dev.loki.lovisual.render.engine.core.context.FramebufferContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; /** * Immutable per-phase context. Old RenderState should eventually become only a shim over this. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhase.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhase.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhase.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhase.java index e8a8550..77e4e62 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhase.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhase.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.frame; /** * Explicit render phase used by the LoVisual frame graph. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhaseScope.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhaseScope.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhaseScope.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhaseScope.java index 67e34ed..72fd91b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/RenderPhaseScope.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/frame/RenderPhaseScope.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.frame; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; /** * AutoCloseable phase guard. Every render hook should use this instead of raw enterPhase(). @@ -17,7 +20,8 @@ public final class RenderPhaseScope implements AutoCloseable { private final AutoCloseable profilerScope; private boolean closed; - RenderPhaseScope(RenderPhase phase, RenderFrameContext previous, AutoCloseable profilerScope) { + public RenderPhaseScope(RenderPhase phase, RenderFrameContext previous, AutoCloseable profilerScope) { + this.phase = phase == null ? RenderPhase.NONE : phase; this.previous = previous; this.profilerScope = profilerScope; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VisibilityProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VisibilityProvider.java index a4df39f..ee78ebf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VisibilityProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VisibilityProvider.java @@ -8,6 +8,7 @@ package dev.loki.lovisual.render.engine.core.policy; import net.minecraft.world.phys.AABB; +import dev.loki.lovisual.render.engine.core.policy.VisibilityQuery; public interface VisibilityProvider { VisibilityProvider ALWAYS_VISIBLE = new VisibilityProvider() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/FogProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/FogProvider.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/FogProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/FogProvider.java index 4ba5b4d..348bedf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/FogProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/FogProvider.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core.policy; +package dev.loki.lovisual.render.engine.core.policy.fog; import com.mojang.blaze3d.buffers.GpuBufferSlice; import org.jetbrains.annotations.Nullable; public interface FogProvider { - FogProvider NONE = () -> null; + public FogProvider NONE = () -> null; @Nullable GpuBufferSlice fogUniformSlice(); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VanillaWorldFogProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/VanillaWorldFogProvider.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VanillaWorldFogProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/VanillaWorldFogProvider.java index f88617c..7f1ef46 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/VanillaWorldFogProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/policy/fog/VanillaWorldFogProvider.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core.policy; +package dev.loki.lovisual.render.engine.core.policy.fog; import com.mojang.blaze3d.buffers.GpuBufferSlice; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.fog.FogRenderer; import org.jetbrains.annotations.Nullable; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; +import dev.loki.lovisual.render.engine.core.policy.fog.FogProvider; /** * Vanilla world fog provider used by world pass compilation until Stage 8 pipeline metadata is global. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualRenderSystem.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualRenderSystem.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualRenderSystem.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualRenderSystem.java index 2e9a665..887b0ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualRenderSystem.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualRenderSystem.java @@ -5,40 +5,47 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.system; import com.mojang.blaze3d.systems.RenderSystem; import dev.loki.lovisual.render.engine.compat.immediatelyfast.ImmediatelyFastRuntime; import dev.loki.lovisual.render.engine.compat.immediatelyfast.ImmediatelyFastRuntimeSnapshot; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.iris.IrisRuntime; -import dev.loki.lovisual.render.iris.IrisRuntimeSnapshot; -import dev.loki.lovisual.render.sodium.SodiumTerrainInteropStatsSnapshot; -import dev.loki.lovisual.render.sodium.SodiumVisibilityStatsSnapshot; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntimeSnapshot; +import dev.loki.lovisual.render.sodium.interop.SodiumTerrainInteropStatsSnapshot; +import dev.loki.lovisual.render.sodium.visibility.SodiumVisibilityStatsSnapshot; import org.joml.Matrix4f; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.core.policy.LightPolicy; -import dev.loki.lovisual.render.engine.core.policy.VanillaWorldFogProvider; +import dev.loki.lovisual.render.engine.core.policy.fog.VanillaWorldFogProvider; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; import dev.loki.lovisual.render.engine.framegraph.LoVisualFrameGraph; -import dev.loki.lovisual.render.engine.profiler.FrameStutterProfiler; -import dev.loki.lovisual.render.engine.profiler.RenderFrameProfiler; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.rhi.RhiStatsSnapshot; +import dev.loki.lovisual.render.engine.profiler.frame.FrameStutterProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderFrameProfiler; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStatsSnapshot; import dev.loki.lovisual.render.engine.rhi.backend.SodiumGlBackend; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.LoVisualVulkanBackend; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceManager; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceStatsSnapshot; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; -import dev.loki.lovisual.render.engine.rhi.uniform.UniformAllocatorStatsSnapshot; -import dev.loki.lovisual.render.engine.text.TextCommandStatsSnapshot; -import dev.loki.lovisual.render.engine.text.TextRenderSystem; -import dev.loki.lovisual.render.engine.world.WorldRenderStatsSnapshot; -import dev.loki.lovisual.render.sodium.SodiumFrameContext; -import dev.loki.lovisual.render.sodium.SodiumRenderBridge; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStatsSnapshot; +import dev.loki.lovisual.render.engine.text.command.TextCommandStatsSnapshot; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; +import dev.loki.lovisual.render.engine.world.stats.WorldRenderStatsSnapshot; +import dev.loki.lovisual.render.sodium.bridge.SodiumFrameContext; +import dev.loki.lovisual.render.sodium.bridge.SodiumRenderBridge; import dev.loki.lovisual.util.logging.DebugLog; import java.util.Locale; +import dev.loki.lovisual.render.engine.core.context.CameraContext; +import dev.loki.lovisual.render.engine.core.context.FramebufferContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.core.frame.FrameLifecycle; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhaseScope; /** * Single owner of LoVisual render lifecycle. @@ -279,7 +286,8 @@ public enum LoVisualRenderSystem { return new RenderPhaseScope(next, before, RenderFrameProfiler.phase(next, label)); } - static void restorePhase(RenderFrameContext previous) { + public static void restorePhase(RenderFrameContext previous) { + currentContext = previous; if (currentContext != null) { RenderState.applyContext(currentContext); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualWorldMatrices.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualWorldMatrices.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualWorldMatrices.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualWorldMatrices.java index d61ad77..1396282 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/LoVisualWorldMatrices.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/core/system/LoVisualWorldMatrices.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.core; +package dev.loki.lovisual.render.engine.core.system; import org.joml.Matrix4f; import org.joml.Matrix4fc; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/debug/RenderThread2DDebugRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/debug/RenderThread2DDebugRenderer.java index 3e31c2d..ec396ad 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/debug/RenderThread2DDebugRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/debug/RenderThread2DDebugRenderer.java @@ -18,9 +18,9 @@ import net.minecraft.client.renderer.Projection; import net.minecraft.client.renderer.ProjectionMatrixBuffer; import org.joml.Matrix4f; import dev.loki.lovisual.render.engine.RenderState; -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.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.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/PreTranslucentDepth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/PreTranslucentDepth.java index b3e3922..c3113f7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/PreTranslucentDepth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/PreTranslucentDepth.java @@ -14,8 +14,8 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuTexture; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/WorldSceneDepth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/WorldSceneDepth.java index 8f776ae..b8f1eb5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/WorldSceneDepth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/depth/WorldSceneDepth.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.render.engine.depth; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; /** * Persistent copy of the depth buffers that vanilla composes through its world transparency diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/LoVisualFrameGraph.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/LoVisualFrameGraph.java index 134fdaa..c71dcd5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/LoVisualFrameGraph.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/LoVisualFrameGraph.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.render.engine.framegraph; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.core.RenderPhaseScope; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhaseScope; import java.util.function.Consumer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/PassScheduler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/PassScheduler.java index 8fb855a..8d49346 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/PassScheduler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/PassScheduler.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.framegraph; -import dev.loki.lovisual.render.engine.core.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; import java.util.ArrayList; import java.util.EnumMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/RenderPassNode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/RenderPassNode.java index 659fec1..34bd455 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/RenderPassNode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/framegraph/RenderPassNode.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.render.engine.framegraph; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.core.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; import java.util.Objects; import java.util.function.Consumer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/LegacyRenderPath.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/LegacyRenderPath.java index 0c5cd2c..fd20f7b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/LegacyRenderPath.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/LegacyRenderPath.java @@ -6,6 +6,7 @@ */ package dev.loki.lovisual.render.engine.guard; +import dev.loki.lovisual.render.engine.rhi.backend.SodiumGlBackend; /** * Old rendering paths that are no longer allowed as production behavior after the RHI migration. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderArchitectureGuard.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderArchitectureGuard.java index e115706..27d29f4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderArchitectureGuard.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderArchitectureGuard.java @@ -7,7 +7,8 @@ package dev.loki.lovisual.render.engine.guard; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.rhi.backend.SodiumGlBackend; /** * Final architecture lock for the LoVisual RHI migration. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundary.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundary.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundary.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundary.java index 38474ac..30957e7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundary.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundary.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.guard; +package dev.loki.lovisual.render.engine.guard.boundary; /** * Central list of architecture boundary package rules. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryAudit.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryAudit.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryAudit.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryAudit.java index 7d6eb1c..1c4d9a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryAudit.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryAudit.java @@ -5,11 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.guard; +package dev.loki.lovisual.render.engine.guard.boundary; +import dev.loki.lovisual.render.engine.guard.RenderArchitectureGuard; + import dev.loki.lovisual.util.logging.DebugLog; import java.util.List; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.RenderPipelineSpec; /** * Lightweight runtime boundary audit. It does not scan source files; it validates explicitly registered legacy diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryExempt.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryExempt.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryExempt.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryExempt.java index 63f662a..1bb9e33 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/RenderBoundaryExempt.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/guard/boundary/RenderBoundaryExempt.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.guard; +package dev.loki.lovisual.render.engine.guard.boundary; +import dev.loki.lovisual.render.engine.guard.LegacyRenderPath; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -21,7 +23,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR}) public @interface RenderBoundaryExempt { - LegacyRenderPath value(); + public LegacyRenderPath value(); - String reason(); + public String reason(); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaFramebuffer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaFramebuffer.java index b081f80..022523c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaFramebuffer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaFramebuffer.java @@ -11,8 +11,8 @@ import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuTexture; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import lombok.Getter; @Getter diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaResolveUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaResolveUtil.java index 3a6f0f2..28ea2d5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaResolveUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaResolveUtil.java @@ -9,7 +9,7 @@ package dev.loki.lovisual.render.engine.msaa; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.systems.RenderSystem; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; @Deprecated public enum MsaaResolveUtil { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaWorldTarget.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaWorldTarget.java index 1f2b0b2..123216d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaWorldTarget.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/msaa/MsaaWorldTarget.java @@ -9,7 +9,7 @@ package dev.loki.lovisual.render.engine.msaa; import com.mojang.blaze3d.pipeline.RenderTarget; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/ExtendedRenderPipelineBuilder.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/ExtendedRenderPipelineBuilder.java index 1a1c5ae..7016a0a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/ExtendedRenderPipelineBuilder.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/ExtendedRenderPipelineBuilder.java @@ -11,7 +11,7 @@ import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.pipeline.*; import com.mojang.blaze3d.shaders.UniformType; import com.mojang.blaze3d.vertex.VertexFormat; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/LoVisualRenderPipelines.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/LoVisualRenderPipelines.java index 448bcf9..44e07d7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/LoVisualRenderPipelines.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/pipeline/LoVisualRenderPipelines.java @@ -12,13 +12,13 @@ import com.mojang.blaze3d.pipeline.BlendFunction; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.systems.GpuDevice; import com.mojang.blaze3d.systems.RenderSystem; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.pipeline.pipelines.PipelineTemplates; import dev.loki.lovisual.render.engine.pipeline.pipelines.ScreenPipelines; import dev.loki.lovisual.render.engine.pipeline.pipelines.UiPipelines; import dev.loki.lovisual.render.engine.pipeline.pipelines.WorldPipelines; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; import dev.loki.lovisual.render.engine.shader.LoVisualShaderSources; import dev.loki.lovisual.render.engine.vertex.LoVisualVertexFormats; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldDepthSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldDepthSource.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldDepthSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldDepthSource.java index 012354c..4390695 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldDepthSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldDepthSource.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.blur; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum DepthOfFieldDepthSource implements EnumValue.IdProvider { WORLD_SCENE("world_scene"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldQuality.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldQuality.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldQuality.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldQuality.java index 6a869a6..37b3ada 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/DepthOfFieldQuality.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/DepthOfFieldQuality.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.blur; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum DepthOfFieldQuality implements EnumValue.IdProvider { LOW("low", 8), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurMode.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurMode.java index 3883d4e..c1738de 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurMode.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.blur; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum MotionBlurMode implements EnumValue.IdProvider { WORLD_AND_HAND("world_and_hand"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurResources.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurResources.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurResources.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurResources.java index 8ed58ad..4e59fa7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MotionBlurResources.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/blur/MotionBlurResources.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.blur; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; public final class MotionBlurResources { private TextureTarget previousColor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/LegacyPostProcessGraphPass.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/LegacyPostProcessGraphPass.java index faaff57..bebe5bc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/LegacyPostProcessGraphPass.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/LegacyPostProcessGraphPass.java @@ -8,12 +8,16 @@ package dev.loki.lovisual.render.engine.postprocess.graph; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; import java.util.Set; +import dev.loki.lovisual.render.engine.postprocess.graph.PostProcessGraphPass; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessGraphResources; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessResolution; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessResource; public final class LegacyPostProcessGraphPass implements PostProcessGraphPass { private final PostProcessPass delegate; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraph.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraph.java index 0e3afb3..0b7c13a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraph.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraph.java @@ -8,14 +8,18 @@ package dev.loki.lovisual.render.engine.postprocess.graph; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.HistoryBufferManager; +import dev.loki.lovisual.render.engine.postprocess.graph.LegacyPostProcessGraphPass; +import dev.loki.lovisual.render.engine.postprocess.graph.PostProcessGraphPass; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessGraphResources; public final class PostProcessGraph implements AutoCloseable { private final List passes = new ArrayList<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphPass.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphPass.java index 3853e72..62ab72a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphPass.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphPass.java @@ -7,11 +7,14 @@ package dev.loki.lovisual.render.engine.postprocess.graph; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; import java.util.Set; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessGraphResources; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessResolution; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessResource; public interface PostProcessGraphPass { String id(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/HistoryBufferManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/HistoryBufferManager.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/HistoryBufferManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/HistoryBufferManager.java index 59bfe72..042b5d3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/HistoryBufferManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/HistoryBufferManager.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess.graph; +package dev.loki.lovisual.render.engine.postprocess.graph.resource; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphResources.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessGraphResources.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphResources.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessGraphResources.java index 5fad012..0b4c3cd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessGraphResources.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessGraphResources.java @@ -5,23 +5,26 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess.graph; +package dev.loki.lovisual.render.engine.postprocess.graph.resource; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import org.jetbrains.annotations.Nullable; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.depth.PreTranslucentDepth; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; -import dev.loki.lovisual.render.engine.postprocess.PostProcessContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessPass; -import dev.loki.lovisual.render.iris.IrisSceneDepth; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; +import dev.loki.lovisual.render.iris.scene.IrisSceneDepth; import java.util.EnumMap; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; +import dev.loki.lovisual.render.engine.postprocess.graph.PostProcessGraph; +import dev.loki.lovisual.render.engine.postprocess.graph.resource.PostProcessResource; public final class PostProcessGraphResources implements AutoCloseable { private final EnumMap views = new EnumMap<>(PostProcessResource.class); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResolution.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResolution.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResolution.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResolution.java index 83b7a6f..36be75f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResolution.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResolution.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess.graph; +package dev.loki.lovisual.render.engine.postprocess.graph.resource; public enum PostProcessResolution { FULL, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResource.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResource.java index be15107..7f30d51 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/PostProcessResource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/graph/resource/PostProcessResource.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess.graph; +package dev.loki.lovisual.render.engine.postprocess.graph.resource; public enum PostProcessResource { MAIN_COLOR, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessContext.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessContext.java index 279de6b..db87911 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessContext.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.post; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; public record PostProcessContext( PostProcessPass.Phase phase, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessManager.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessManager.java index e7df0c0..ffdc705 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessManager.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.post; import com.mojang.blaze3d.ProjectionType; import com.mojang.blaze3d.buffers.GpuBufferSlice; @@ -17,17 +17,18 @@ import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import org.joml.Matrix4f; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.postprocess.graph.PostProcessGraph; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.rhi.FullscreenDrawCommand; -import dev.loki.lovisual.render.engine.uniform.impl.PostProcessUniforms; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostProcessUniforms; import dev.loki.lovisual.Lifecycle; import java.util.OptionalDouble; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessPass; public enum PostProcessManager { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessPass.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessPass.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessPass.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessPass.java index 082f11f..36f9b11 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/PostProcessPass.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/post/PostProcessPass.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.post; import com.mojang.blaze3d.textures.GpuTextureView; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessContext; public interface PostProcessPass { boolean isActive(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MenuBackgroundRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/MenuBackgroundRenderer.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MenuBackgroundRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/MenuBackgroundRenderer.java index 49365fb..1bbb240 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/MenuBackgroundRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/MenuBackgroundRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.render; import dev.loki.lovisual.features.theme.Theme; import com.mojang.blaze3d.ProjectionType; @@ -17,13 +17,13 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ProjectionMatrixBuffer; import net.minecraft.util.Util; import org.joml.Matrix4f; -import dev.loki.lovisual.config.MainConfig; +import dev.loki.lovisual.config.i18n.MainConfig; import dev.loki.lovisual.features.theme.Themes; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.MenuBackgroundUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.MenuBackgroundUniforms; public enum MenuBackgroundRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/SkyShaderRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/SkyShaderRenderer.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/SkyShaderRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/SkyShaderRenderer.java index 8459f3f..1e7b94b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/SkyShaderRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/postprocess/render/SkyShaderRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.postprocess; +package dev.loki.lovisual.render.engine.postprocess.render; import com.mojang.blaze3d.ProjectionType; import com.mojang.blaze3d.buffers.GpuBufferSlice; @@ -16,8 +16,8 @@ import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.SkyShaderNebulaUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.SkyShaderUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.sky.SkyShaderNebulaUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.sky.SkyShaderUniforms; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ProjectionMatrixBuffer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmContributors.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmContributors.java index 819488c..0989113 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmContributors.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmContributors.java @@ -9,15 +9,15 @@ package dev.loki.lovisual.render.engine.prewarm; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.RenderPrewarmCollectEvent; -import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.ModulesMenuCategory; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.modules.model.ModulesMenuCategory; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuScreen; -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.ModuleManager; -import dev.loki.lovisual.render.engine.text.FontInfo; +import dev.loki.lovisual.features.module.core.Module; +import dev.loki.lovisual.features.module.core.ModuleManager; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public enum RenderPrewarmContributors { INSTANCE; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmManager.java index 0765462..7af7c82 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/prewarm/RenderPrewarmManager.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.render.engine.prewarm; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.render.RenderPrewarmCollectEvent; import dev.loki.lovisual.features.gui.hud.script.HudScriptLayouts; -import dev.loki.lovisual.render.engine.svg.SvgMsdfRegistry; -import dev.loki.lovisual.render.engine.text.Fonts; +import dev.loki.lovisual.render.engine.svg.parser.SvgMsdfRegistry; +import dev.loki.lovisual.render.engine.text.font.Fonts; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.util.logging.DebugLog; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/DevProfilerBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/DevProfilerBridge.java similarity index 74% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/DevProfilerBridge.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/DevProfilerBridge.java index 506de2a..b07997c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/DevProfilerBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/DevProfilerBridge.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.bridge; import java.lang.reflect.Method; import java.util.List; @@ -23,7 +23,8 @@ public enum DevProfilerBridge { return type(simpleName) != null; } - static Object invoke(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + public static Object invoke(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + Class type = type(simpleName); if (type == null) return null; try { @@ -34,28 +35,33 @@ public enum DevProfilerBridge { } } - static boolean bool(String simpleName, String methodName, boolean fallback, Class[] parameterTypes, Object... args) { + public static boolean bool(String simpleName, String methodName, boolean fallback, Class[] parameterTypes, Object... args) { + Object value = invoke(simpleName, methodName, parameterTypes, args); return value instanceof Boolean b ? b : fallback; } - static String string(String simpleName, String methodName, String fallback, Class[] parameterTypes, Object... args) { + public static String string(String simpleName, String methodName, String fallback, Class[] parameterTypes, Object... args) { + Object value = invoke(simpleName, methodName, parameterTypes, args); return value instanceof String s ? s : fallback; } @SuppressWarnings("unchecked") - static List lines(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + public static List lines(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + Object value = invoke(simpleName, methodName, parameterTypes, args); return value instanceof List list ? (List) list : List.of(); } - static AutoCloseable closeable(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + public static AutoCloseable closeable(String simpleName, String methodName, Class[] parameterTypes, Object... args) { + Object value = invoke(simpleName, methodName, parameterTypes, args); return value instanceof AutoCloseable closeable ? closeable : null; } - static void close(AutoCloseable closeable) { + public static void close(AutoCloseable closeable) { + if (closeable == null) return; try { closeable.close(); @@ -63,7 +69,8 @@ public enum DevProfilerBridge { } } - static Class type(String simpleName) { + public static Class type(String simpleName) { + Class cached = TYPES.get(simpleName); if (cached != null) { return cached == MISSING ? null : cached; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/JfrProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/JfrProfiler.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/JfrProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/JfrProfiler.java index 92b5183..6f2f2aa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/JfrProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/JfrProfiler.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.bridge; import java.lang.reflect.Method; import java.nio.file.Path; import java.time.Instant; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum JfrProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyGpuProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyGpuProfiler.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyGpuProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyGpuProfiler.java index f033bdb..eb3393f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyGpuProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyGpuProfiler.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.bridge; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum TracyGpuProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyProfiler.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyProfiler.java index eca6781..58a0eed 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/TracyProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/bridge/TracyProfiler.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.bridge; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum TracyProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerPhase.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerPhase.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerPhase.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerPhase.java index 7c0a0c3..ca12032 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerPhase.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerPhase.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.config; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum ProfilerPhase { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerSettings.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerSettings.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerSettings.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerSettings.java index 2988dd9..999ea5b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerSettings.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/config/ProfilerSettings.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.config; public enum ProfilerSettings { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/FrameStutterProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/FrameStutterProfiler.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/FrameStutterProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/FrameStutterProfiler.java index 9cfadb0..fd454f7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/FrameStutterProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/FrameStutterProfiler.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.frame; -import dev.loki.lovisual.render.engine.rhi.RhiStatsSnapshot; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceStatsSnapshot; -import dev.loki.lovisual.render.engine.rhi.uniform.UniformAllocatorStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStatsSnapshot; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; +import dev.loki.lovisual.render.engine.profiler.config.ProfilerSettings; public enum FrameStutterProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/GlSyncTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/GlSyncTracker.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/GlSyncTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/GlSyncTracker.java index 9a25cc2..b417d91 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/GlSyncTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/GlSyncTracker.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.frame; import java.util.List; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum GlSyncTracker { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderCostProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderCostProfiler.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderCostProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderCostProfiler.java index b6bebb3..14aedf5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderCostProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderCostProfiler.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.frame; import java.util.List; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum RenderCostProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderFrameProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderFrameProfiler.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderFrameProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderFrameProfiler.java index 583e080..2c13b02 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderFrameProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/frame/RenderFrameProfiler.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.frame; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.rhi.RhiStatsSnapshot; -import dev.loki.lovisual.render.engine.rhi.uniform.UniformAllocatorStatsSnapshot; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStatsSnapshot; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum RenderFrameProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerLog.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/ProfilerLog.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerLog.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/ProfilerLog.java index 8135c59..2028011 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/ProfilerLog.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/ProfilerLog.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.render; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler2D.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler2D.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler2D.java index 51f2b86..c2f0bfb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler2D.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.render; import java.util.List; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum RenderProfiler2D { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler3D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler3D.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler3D.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler3D.java index 2482584..2615d0f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/RenderProfiler3D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/RenderProfiler3D.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.render; import java.util.List; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum RenderProfiler3D { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/SamplingProfiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/SamplingProfiler.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/SamplingProfiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/SamplingProfiler.java index 4777deb..8182f6f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/SamplingProfiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/profiler/render/SamplingProfiler.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.profiler; +package dev.loki.lovisual.render.engine.profiler.render; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; public enum SamplingProfiler { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/FullScreenRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/FullScreenRenderer.java index 3ae90e0..b305fcd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/FullScreenRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/FullScreenRenderer.java @@ -13,11 +13,11 @@ import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.guard.LegacyRenderPath; import dev.loki.lovisual.render.engine.guard.RenderArchitectureGuard; -import dev.loki.lovisual.render.engine.rhi.FullscreenDrawCommand; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import dev.loki.lovisual.render.engine.vertex.LoVisualVertexFormats; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/MeshRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/MeshRenderer.java index bb1e224..bb1e2ca 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/MeshRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/MeshRenderer.java @@ -14,20 +14,21 @@ import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.vertex.PoseStack; -import dev.loki.lovisual.render.engine.rhi.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; import net.minecraft.client.Minecraft; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.joml.Matrix4fStack; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.MeshOwnership; -import dev.loki.lovisual.render.engine.rhi.RhiDrawCommand; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.MeshOwnership; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.util.HashMap; +import dev.loki.lovisual.render.engine.uniform.impl.world.MeshUniforms; /** * RenderPass-based mesh renderer for 26.2 GPU API. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer2D.java index 2c2e5ae..78ca371 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer2D.java @@ -6,13 +6,20 @@ */ package dev.loki.lovisual.render.engine.renderer; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarp; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; + import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.command.*; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.effect.UiEffectRegionCommand; +import dev.loki.lovisual.render.engine.command.shape.UiPathCommand; +import dev.loki.lovisual.render.engine.command.shape.UiShapeCommand; +import dev.loki.lovisual.render.engine.command.world.UiStatsSnapshot; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.texture.AbstractTexture; @@ -21,24 +28,28 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.renderer.ui.BlurSource; -import dev.loki.lovisual.render.engine.renderer.ui.Deferred2DSubmit; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.FrameBlurCacheEntry; -import dev.loki.lovisual.render.engine.renderer.ui.ItemBatchRenderer; -import dev.loki.lovisual.render.engine.renderer.ui.OrderedUiBatcher; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchStats; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.UiBlurResources; -import dev.loki.lovisual.render.engine.renderer.ui.UiDeferredScheduler; -import dev.loki.lovisual.render.engine.renderer.ui.UiDirectTexturedRenderer; -import dev.loki.lovisual.render.engine.renderer.ui.UiItemSubmission; -import dev.loki.lovisual.render.engine.renderer.ui.UiRenderDispatcher; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; -import dev.loki.lovisual.render.engine.renderer.ui.draw.*; +import dev.loki.lovisual.render.engine.renderer.ui.blur.BlurSource; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.Deferred2DSubmit; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.blur.FrameBlurCacheEntry; +import dev.loki.lovisual.render.engine.renderer.ui.item.ItemBatchRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchStats; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.blur.UiBlurResources; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.UiDeferredScheduler; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiDirectTexturedRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.item.UiItemSubmission; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Chamfered2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Rects2D; @@ -53,18 +64,24 @@ import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Circles2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Connectors2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Lines2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Polygons2D; -import dev.loki.lovisual.render.engine.svg.SvgMeshBackend; -import dev.loki.lovisual.render.engine.svg.SvgRegistry; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.engine.text.GlyphFont; -import dev.loki.lovisual.render.engine.text.backend.TextPlacementMode; +import dev.loki.lovisual.render.engine.svg.backend.SvgMeshBackend; +import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.nio.file.Path; import java.util.*; import java.util.function.Consumer; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.*; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.*; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.features.module.phase.HudPhase; public final class Renderer2D { public static final int ITEM_OVERLAY_NONE = 0; @@ -2164,4 +2181,4 @@ public final class Renderer2D { public static final class BatchStats extends UiBatchStats { } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer3D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer3D.java index bc5fa0c..8efeb3a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer3D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/Renderer3D.java @@ -19,16 +19,16 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; import dev.loki.lovisual.render.engine.core.policy.VisibilityProvider; import dev.loki.lovisual.render.engine.core.policy.VisibilityQuery; import dev.loki.lovisual.render.engine.math.RenderMath; -import dev.loki.lovisual.render.engine.rhi.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import dev.loki.lovisual.render.engine.world.WorldCommandBuffer; import dev.loki.lovisual.render.engine.world.WorldPassCompiler; -import dev.loki.lovisual.render.engine.world.WorldRenderStatsSnapshot; +import dev.loki.lovisual.render.engine.world.stats.WorldRenderStatsSnapshot; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Batch2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Batch2D.java index 56e6044..66da8d9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Batch2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Batch2D.java @@ -10,9 +10,9 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.UiRenderDispatcher; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; /** * Shared batch scope and scratch buffers for the Renderer2D helper backends. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Chamfered2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Chamfered2D.java index baf6d3a..3d153f3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Chamfered2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Chamfered2D.java @@ -8,17 +8,17 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Polygons2D; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampChamferAxis; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.computeLinearGradientColors; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.normalizeChamfers; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampChamferAxis; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.computeLinearGradientColors; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.normalizeChamfers; /** Chamfered (cut-corner) rects and beveled 3D-style plates. */ public final class Chamfered2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Rects2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Rects2D.java index 595163a..01ad1a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Rects2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Rects2D.java @@ -8,18 +8,18 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.util.function.Consumer; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendColoredQuad; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampRoundedRadius; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.computeLinearGradientColors; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.normalizeCornerRadii; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendColoredQuad; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampRoundedRadius; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.computeLinearGradientColors; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.normalizeCornerRadii; /** Filled rect family: solid quads, rounded rects, per-corner radii and gradients. */ public final class Rects2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Strokes2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Strokes2D.java index 261a797..de1a7c7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Strokes2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/Strokes2D.java @@ -8,18 +8,18 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; import dev.loki.lovisual.render.engine.renderer.renderer2d.path.Polygons2D; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import net.minecraft.util.Mth; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.buildRoundedProgressRect; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampRoundedRadius; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.normalizeCornerRadii; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.buildRoundedProgressRect; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampRoundedRadius; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.normalizeCornerRadii; /** Stroked rounded rect family plus the clipped progress bar fill. */ public final class Strokes2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Blur2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Blur2D.java index 7196e11..23804de 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Blur2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Blur2D.java @@ -10,22 +10,22 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.fx; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.BlurSource; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiEffectSpec; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.blur.BlurSource; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import java.util.function.Consumer; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clamp01; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampChamfer; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clamp01; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampChamfer; /** Background blur rectangles fed from the main framebuffer. */ public final class Blur2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Effects2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Effects2D.java index ece1145..0d6306e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Effects2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Effects2D.java @@ -9,11 +9,11 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.fx; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampRoundedRadius; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampRoundedRadius; /** Glow, shadow and radial-glow rect effects. */ public final class Effects2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Glass2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Glass2D.java index a58425a..a1997b4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Glass2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Glass2D.java @@ -9,16 +9,16 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.fx; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.BlurSource; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiEffectSpec; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.blur.BlurSource; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clamp01; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.normalizeCornerRadii; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.packLiquidGlassPayload; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clamp01; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.normalizeCornerRadii; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.packLiquidGlassPayload; /** Liquid glass material rectangles backed by the frame blur pipeline. */ public final class Glass2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Smoke2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Smoke2D.java index 26b26b6..6812c02 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Smoke2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/fx/Smoke2D.java @@ -9,8 +9,8 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.fx; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import net.minecraft.util.Mth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Items2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Items2D.java index ba61792..bf382bd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Items2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Items2D.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.media; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.UiItemSubmission; +import dev.loki.lovisual.render.engine.renderer.ui.item.UiItemSubmission; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Textures2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Textures2D.java index 678ef6e..e2d5724 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Textures2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/media/Textures2D.java @@ -6,22 +6,24 @@ */ package dev.loki.lovisual.render.engine.renderer.renderer2d.media; +import dev.loki.lovisual.render.engine.texture.Texture; + import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.command.UiShapeCommand; -import dev.loki.lovisual.render.engine.command.UiTextureDrawCommand; +import dev.loki.lovisual.render.engine.command.shape.UiShapeCommand; +import dev.loki.lovisual.render.engine.command.texture.UiTextureDrawCommand; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.UiRenderDispatcher; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.clampRoundedRadius; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.clampRoundedRadius; /** Texture quads: plain, MSDF-font and rounded-corner variants. */ public final class Textures2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Circles2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Circles2D.java index 35c6d85..e55147d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Circles2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Circles2D.java @@ -9,15 +9,15 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.path; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import net.minecraft.util.Mth; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.normalizeDegrees; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.normalizeDegrees; /** Circles, rings, arcs and the animated Orbiz ring effect. */ public final class Circles2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Connectors2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Connectors2D.java index 373467c..acc44f6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Connectors2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Connectors2D.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.path; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.buildBezier; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.roundedRectAnchor; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.buildBezier; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.roundedRectAnchor; /** Wires, cables and node-graph edges built on top of polylines. */ public final class Connectors2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Lines2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Lines2D.java index b54ba5b..6069598 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Lines2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Lines2D.java @@ -10,11 +10,11 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.path; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; /** Immediate-mode 1px lines. */ diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Polygons2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Polygons2D.java index d1a5b33..c55ca4b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Polygons2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/renderer2d/path/Polygons2D.java @@ -7,27 +7,27 @@ package dev.loki.lovisual.render.engine.renderer.renderer2d.path; -import dev.loki.lovisual.render.engine.command.UiShapeCommand; +import dev.loki.lovisual.render.engine.command.shape.UiShapeCommand; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.renderer2d.Batch2D; -import dev.loki.lovisual.render.engine.renderer.ui.DrawBatch; -import dev.loki.lovisual.render.engine.renderer.ui.UiBatchType; -import dev.loki.lovisual.render.engine.renderer.ui.UiRenderDispatcher; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiBoxPathBuilder; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiBoxShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaint; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPaintKind; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPathCap; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiPathJoin; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiShape; -import dev.loki.lovisual.render.engine.renderer.ui.draw.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxPathBuilder; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaintKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiPathCap; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiPathJoin; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendPolygon; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendPolygonGradient; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendPolyline; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendPolylineGradient; -import static dev.loki.lovisual.render.engine.renderer.ui.draw.UiMeshGeometry.appendPolylineLinearGradient; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendPolygon; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendPolygonGradient; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendPolyline; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendPolylineGradient; +import static dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiMeshGeometry.appendPolylineLinearGradient; /** Filled polygons, polylines and flexible box shapes. */ public final class Polygons2D { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DrawBatch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/DrawBatch.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DrawBatch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/DrawBatch.java index db340fb..5d3ced3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DrawBatch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/DrawBatch.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; public final class DrawBatch { public final UiBatchType type; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ItemBatch.java similarity index 58% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ItemBatch.java index faace59..6bed0cb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ItemBatch.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches; import com.mojang.blaze3d.vertex.PoseStack; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; @@ -16,22 +16,28 @@ import net.minecraft.client.renderer.item.TrackingItemStackRenderState; import org.jetbrains.annotations.Nullable; import java.util.Objects; +import dev.loki.lovisual.render.engine.renderer.ui.item.ItemDrawCommand; +import dev.loki.lovisual.render.engine.renderer.ui.item.ItemResolveKey; public final class ItemBatch { - final ObjectArrayList commands = new ObjectArrayList<>(64); - final PoseStack matrices = new PoseStack(); - final Object2ObjectOpenHashMap resolvedStates = new Object2ObjectOpenHashMap<>(64); - @Nullable GuiGraphicsExtractor context; - @Nullable ScreenRectangle scissor; + public final ObjectArrayList commands = new ObjectArrayList<>(64); + + final PoseStack matrices = new PoseStack(); + public final Object2ObjectOpenHashMap resolvedStates = new Object2ObjectOpenHashMap<>(64); + + public @Nullable GuiGraphicsExtractor context; + public @Nullable ScreenRectangle scissor; + + public void begin(@Nullable GuiGraphicsExtractor context, @Nullable ScreenRectangle scissor) { - void begin(@Nullable GuiGraphicsExtractor context, @Nullable ScreenRectangle scissor) { this.context = context; this.scissor = scissor; this.commands.clear(); this.resolvedStates.clear(); } - boolean canMerge(@Nullable GuiGraphicsExtractor context, @Nullable ScreenRectangle scissor) { + public boolean canMerge(@Nullable GuiGraphicsExtractor context, @Nullable ScreenRectangle scissor) { + return this.context == context && Objects.equals(this.scissor, scissor); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/TextBatch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/TextBatch.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/TextBatch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/TextBatch.java index fc6c496..c11852c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/TextBatch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/TextBatch.java @@ -5,11 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.render.engine.text.GlyphFont; -import dev.loki.lovisual.render.engine.text.backend.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; public final class TextBatch { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/UiBatcher.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatcher.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/UiBatcher.java index ac3131c..f49579a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/UiBatcher.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches; -import dev.loki.lovisual.render.engine.command.UiCommand; -import dev.loki.lovisual.render.engine.command.UiCommandBuffer; -import dev.loki.lovisual.render.engine.command.UiCommandKind; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandBuffer; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchPlan; public final class UiBatcher { public UiBatchPlan compile(UiCommandBuffer commands) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/OrderedUiBatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/OrderedUiBatcher.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/OrderedUiBatcher.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/OrderedUiBatcher.java index a98913d..44c89c9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/OrderedUiBatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/OrderedUiBatcher.java @@ -5,17 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches.ordered; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.render.helpers.ScissorFunction; -import dev.loki.lovisual.render.helpers.ClipFunction; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ClipFunction; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; @@ -25,18 +25,27 @@ import net.minecraft.client.renderer.texture.AbstractTexture; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; -import dev.loki.lovisual.render.engine.core.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.GlyphFont; -import dev.loki.lovisual.render.engine.text.TextRenderSystem; -import dev.loki.lovisual.render.engine.text.backend.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.MsdfTextUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.UIBatchUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.UIBlurUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.MsdfTextUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.UIBatchUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.UIBlurUniforms; +import dev.loki.lovisual.render.engine.renderer.ui.batches.DrawBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ItemBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.TextBatch; +import dev.loki.lovisual.render.engine.renderer.ui.blur.FrameBlurCacheEntry; +import dev.loki.lovisual.render.engine.renderer.ui.blur.UiBlurResources; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.DeferredOrderedSubmit; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.UiDeferredScheduler; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; +import dev.loki.lovisual.render.engine.renderer.ui.item.ItemBatchRenderer; public final class OrderedUiBatcher { private static final OrderedUiBatcher LIQUID_GLASS_PREWARMER = new OrderedUiBatcher(); @@ -53,10 +62,10 @@ public final class OrderedUiBatcher { int textPoolCursor; boolean active; boolean flushing; - @Nullable GpuTextureView sharedBlurSourceView; - @Nullable GpuSampler sharedBlurSourceSampler; - @Nullable GpuTextureView sharedBlurredView; - @Nullable GpuSampler sharedBlurredSampler; + public @Nullable GpuTextureView sharedBlurSourceView; + public @Nullable GpuSampler sharedBlurSourceSampler; + public @Nullable GpuTextureView sharedBlurredView; + public @Nullable GpuSampler sharedBlurredSampler; Renderer2D.BlurQuality sharedBlurQuality = Renderer2D.DEFAULT_BLUR_QUALITY; float sharedBlurOffsetPx = Renderer2D.DEFAULT_KAWASE_OFFSET_PX; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchPlan.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchPlan.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchPlan.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchPlan.java index 1d5449f..875578f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchPlan.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchPlan.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches.ordered; public record UiBatchPlan(int commandCount, int shapeCount, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchStats.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchStats.java index 52b1efe..952f501 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchStats.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches.ordered; -import dev.loki.lovisual.render.engine.profiler.DevProfilerBridge; +import dev.loki.lovisual.render.engine.profiler.bridge.DevProfilerBridge; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import java.util.EnumMap; import java.util.Map; +import dev.loki.lovisual.render.engine.profiler.render.RenderProfiler2D; /** Runtime diagnostics for the ordered UI batcher. */ public class UiBatchStats { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchType.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchType.java index 4da1282..9f6eb20 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBatchType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/batches/ordered/UiBatchType.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.batches.ordered; import com.mojang.blaze3d.pipeline.RenderPipeline; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/BlurSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/BlurSource.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/BlurSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/BlurSource.java index df97de0..2e2e214 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/BlurSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/BlurSource.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.blur; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/FrameBlurCacheEntry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/FrameBlurCacheEntry.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/FrameBlurCacheEntry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/FrameBlurCacheEntry.java index 500bcf5..083ffe6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/FrameBlurCacheEntry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/FrameBlurCacheEntry.java @@ -5,25 +5,25 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.blur; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; -import dev.loki.lovisual.render.engine.core.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import static dev.loki.lovisual.render.engine.renderer.ui.UiBlurResources.scaleBits; +import static dev.loki.lovisual.render.engine.renderer.ui.blur.UiBlurResources.scaleBits; public final class FrameBlurCacheEntry { public FrameBlurCacheEntry() { } long frameId = Long.MIN_VALUE; RenderPhase phase = RenderPhase.NONE; - @Nullable GpuTextureView sourceView; - @Nullable GpuSampler sourceSampler; - @Nullable GpuTextureView blurredView; - @Nullable GpuSampler blurredSampler; + public @Nullable GpuTextureView sourceView; + public @Nullable GpuSampler sourceSampler; + public @Nullable GpuTextureView blurredView; + public @Nullable GpuSampler blurredSampler; int screenW; int screenH; int uiScaleBits; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/SharedBlurProfile.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/SharedBlurProfile.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/SharedBlurProfile.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/SharedBlurProfile.java index d308a01..1849688 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/SharedBlurProfile.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/SharedBlurProfile.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.blur; @Deprecated(forRemoval = true) public enum SharedBlurProfile { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBlurResources.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/UiBlurResources.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBlurResources.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/UiBlurResources.java index e0f8711..a1d141b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiBlurResources.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/blur/UiBlurResources.java @@ -5,23 +5,25 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.blur; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.core.ViewportContext; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import dev.loki.lovisual.render.engine.vertex.LoVisualVertexFormats; import net.minecraft.client.Minecraft; import org.jetbrains.annotations.Nullable; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.UiDeferredScheduler; /** * Owns UI render targets, captured glass state and the frame-local Kawase cache. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/Deferred2DSubmit.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/Deferred2DSubmit.java similarity index 68% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/Deferred2DSubmit.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/Deferred2DSubmit.java index 258a2d9..5278e83 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/Deferred2DSubmit.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/Deferred2DSubmit.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.core.ViewportContext; + +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D.Deferred2DLayer; public interface Deferred2DSubmit { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredActionSubmit.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredActionSubmit.java similarity index 72% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredActionSubmit.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredActionSubmit.java index 7a2ae25..0733675 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredActionSubmit.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredActionSubmit.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.core.ViewportContext; + +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D.Deferred2DLayer; public record DeferredActionSubmit(Deferred2DLayer layer, ViewportContext viewport, int[] framebufferScissor, Runnable action) implements Deferred2DSubmit { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredOrderedSubmit.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredOrderedSubmit.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredOrderedSubmit.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredOrderedSubmit.java index b4148de..72889b8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredOrderedSubmit.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredOrderedSubmit.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.Renderer2D.Deferred2DLayer; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; public record DeferredOrderedSubmit(Deferred2DLayer layer, ViewportContext viewport, int[] framebufferScissor, OrderedUiBatcher batcher) implements Deferred2DSubmit { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredTexturedSubmit.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredTexturedSubmit.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredTexturedSubmit.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredTexturedSubmit.java index e5c0408..9c64550 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/DeferredTexturedSubmit.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/DeferredTexturedSubmit.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/HudDeferredGuiElement.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/HudDeferredGuiElement.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/HudDeferredGuiElement.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/HudDeferredGuiElement.java index b790d8c..c2231ad 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/HudDeferredGuiElement.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/HudDeferredGuiElement.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred.sched; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDeferredScheduler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/UiDeferredScheduler.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDeferredScheduler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/UiDeferredScheduler.java index c97f863..107e7b8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDeferredScheduler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/deferred/sched/UiDeferredScheduler.java @@ -5,25 +5,29 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.deferred.sched; import com.mojang.blaze3d.ProjectionType; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.systems.RenderSystem; -import dev.loki.lovisual.mixininterface.IGpuDevice; +import dev.loki.lovisual.mixininterface.device.IGpuDevice; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.core.RenderPhase; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.renderer.ProjectionMatrixBuffer; import org.joml.Matrix4f; import java.util.EnumMap; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.blur.UiBlurResources; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.Deferred2DSubmit; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.DeferredActionSubmit; /** * Owns extraction-time UI scheduling and replay. Renderer2D exposes only the stable facade; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDirectTexturedRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiDirectTexturedRenderer.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDirectTexturedRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiDirectTexturedRenderer.java index 39c8a3b..eba4ff8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiDirectTexturedRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiDirectTexturedRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.dispatch; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.pipeline.RenderTarget; @@ -15,8 +15,11 @@ import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import net.minecraft.client.Minecraft; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.DeferredTexturedSubmit; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.UiDeferredScheduler; /** Immediate textured submission path kept outside the Renderer2D drawing facade. */ public final class UiDirectTexturedRenderer { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRenderDispatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRenderDispatcher.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRenderDispatcher.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRenderDispatcher.java index ea28c76..97d1b54 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRenderDispatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRenderDispatcher.java @@ -5,16 +5,20 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.dispatch; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.render.engine.command.UiCommand; -import dev.loki.lovisual.render.engine.command.UiStatsSnapshot; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.world.UiStatsSnapshot; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.GlyphFont; -import dev.loki.lovisual.render.engine.text.backend.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; +import dev.loki.lovisual.render.engine.renderer.ui.batches.TextBatch; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.OrderedUiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchType; +import dev.loki.lovisual.render.engine.renderer.ui.deferred.sched.UiDeferredScheduler; /** * Command-stream and ordered-batch gateway used by the Renderer2D facade. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRendererSubsystem.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRendererSubsystem.java similarity index 69% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRendererSubsystem.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRendererSubsystem.java index bfbc1da..5995ee5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiRendererSubsystem.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/dispatch/UiRendererSubsystem.java @@ -5,14 +5,20 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.dispatch; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.command.UiBatchBackendCommand; -import dev.loki.lovisual.render.engine.command.UiCommand; -import dev.loki.lovisual.render.engine.command.UiCommandBuffer; -import dev.loki.lovisual.render.engine.command.UiStatsSnapshot; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; + +import dev.loki.lovisual.render.engine.command.effect.UiBatchBackendCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandBuffer; +import dev.loki.lovisual.render.engine.command.world.UiStatsSnapshot; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchPlan; +import dev.loki.lovisual.render.engine.renderer.ui.pass.UiEffectGraph; +import dev.loki.lovisual.render.engine.renderer.ui.pass.UiPassCompiler; +import dev.loki.lovisual.render.engine.renderer.ui.pass.UiPassExecutor; /** * UI rendering gateway: Renderer2D records normalized commands here, the compiler builds a diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxPathBuilder.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxPathBuilder.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxPathBuilder.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxPathBuilder.java index 9f993d3..aa9e88b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxPathBuilder.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxPathBuilder.java @@ -5,7 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.box; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiRect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeSpec; /** * CPU fallback path builder for flexible boxes until the RHI UI shape lowering is fully native. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxShape.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxShape.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxShape.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxShape.java index 07d18f8..2fade0b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiBoxShape.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiBoxShape.java @@ -5,7 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.box; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiRect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeSpec; /** * Flexible box primitive: every corner and every edge can have independent diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiChamferRadii.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiChamferRadii.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiChamferRadii.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiChamferRadii.java index 0a9def3..a75ac27 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiChamferRadii.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiChamferRadii.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.box; public record UiChamferRadii(float topLeftX, float topLeftY, float topRightX, float topRightY, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiRect.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiRect.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiRect.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiRect.java index 96961ff..83be4dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiRect.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/box/UiRect.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.box; public record UiRect(float x, float y, float width, float height) { public static UiRect of(double x, double y, double width, double height) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerKind.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerKind.java index 1b1bdf6..1451869 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.corner; /** * Per-corner geometry mode for flexible UI boxes. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerMode.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerMode.java index add53e6..ebb5ec1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerMode.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.corner; public enum UiCornerMode { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerRadii.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerRadii.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerRadii.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerRadii.java index bf71b29..d9c85a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerRadii.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerRadii.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.corner; public record UiCornerRadii(float topLeft, float topRight, float bottomRight, float bottomLeft) { public static final UiCornerRadii ZERO = new UiCornerRadii(0f, 0f, 0f, 0f); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerSpec.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerSpec.java index 39eec80..06970cc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiCornerSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/corner/UiCornerSpec.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.corner; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; /** * Geometry of one box corner. Rounded and chamfered corners intentionally share diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeKind.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeKind.java index 7d1c682..d1df21a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.edge; /** * Per-edge modifier for flexible UI boxes. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeSpec.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeSpec.java index 7871dc7..4e7f776 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEdgeSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiEdgeSpec.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.edge; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeKind; /** * Per-side box modifier. offset is measured from the side start in clockwise diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiMeshGeometry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiMeshGeometry.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiMeshGeometry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiMeshGeometry.java index e1b8859..058de50 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiMeshGeometry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiMeshGeometry.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.edge; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + import dev.loki.lovisual.render.engine.uniform.MeshBuilder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiStroke.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiStroke.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiStroke.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiStroke.java index cb90aff..fec430d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiStroke.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/edge/UiStroke.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.edge; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiPathCap; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiPathJoin; public record UiStroke(float thickness, UiPathCap cap, UiPathJoin join) { public static final UiStroke NONE = new UiStroke(0f, UiPathCap.BUTT, UiPathJoin.MITER); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectKind.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectKind.java index a2debea..b807835 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.effect; public enum UiEffectKind { BLUR, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectSpec.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectSpec.java index effae9c..b0b5720 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiEffectSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiEffectSpec.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.effect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.effect.UiEffectKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; public record UiEffectSpec(UiEffectKind kind, UiShape shape, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathCap.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathCap.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathCap.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathCap.java index 8083312..86f1112 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathCap.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathCap.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.effect; public enum UiPathCap { BUTT, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathJoin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathJoin.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathJoin.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathJoin.java index 68cfd66..fc8fb92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPathJoin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/effect/UiPathJoin.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.effect; public enum UiPathJoin { MITER, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaint.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaint.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaint.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaint.java index c1efc93..344a699 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaint.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaint.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.paint; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaintKind; public record UiPaint(UiPaintKind kind, int topLeft, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaintKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaintKind.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaintKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaintKind.java index 9ef254c..472bbb4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaintKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaintKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.paint; public enum UiPaintKind { SOLID, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaints.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaints.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaints.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaints.java index 5494799..725ca16 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiPaints.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/paint/UiPaints.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.paint; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; /** * Convenience paint factory for Renderer2D's normalized draw API. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShape.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShape.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShape.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShape.java index abcc751..f019c19 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShape.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShape.java @@ -5,9 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.shape; import java.util.Arrays; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiChamferRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiRect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerMode; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShapeKind; public final class UiShape { private final UiShapeKind kind; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeKind.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeKind.java index 386ad7d..96d8307 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.shape; public enum UiShapeKind { RECT, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeShaderParams.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeShaderParams.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeShaderParams.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeShaderParams.java index 837fbfa..57d2510 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapeShaderParams.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapeShaderParams.java @@ -5,7 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.shape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; /** * Packed flexible-box data for the unified UI shape shader. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapes.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapes.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapes.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapes.java index 3a1cfa5..66f350a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/UiShapes.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/draw/shape/UiShapes.java @@ -5,7 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.draw; +package dev.loki.lovisual.render.engine.renderer.ui.draw.shape; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; /** * Convenience factory for the normalized Renderer2D shape model. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatchRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemBatchRenderer.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatchRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemBatchRenderer.java index 3ed7f8c..ff7fd13 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemBatchRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemBatchRenderer.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.item; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + import com.mojang.blaze3d.ProjectionType; import com.mojang.blaze3d.buffers.GpuBufferSlice; @@ -29,16 +31,17 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.UIBatchUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.UIBatchUniforms; import static dev.loki.lovisual.render.engine.renderer.Renderer2D.ITEM_OVERLAY_COOLDOWN; import static dev.loki.lovisual.render.engine.renderer.Renderer2D.ITEM_OVERLAY_COUNT; import static dev.loki.lovisual.render.engine.renderer.Renderer2D.ITEM_OVERLAY_DURABILITY; import static dev.loki.lovisual.render.engine.renderer.Renderer2D.ITEM_OVERLAY_DURABILITY_TEXT; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ItemBatch; public final class ItemBatchRenderer { private static final int ITEM_DURABILITY_TRACK_COLOR = 0x72000000; @@ -110,7 +113,8 @@ public final class ItemBatchRenderer { return beginItemOverlayMesh(itemCooldownMesh, commandCount, 1); } - static int flush(ItemBatch batch) { + public static int flush(ItemBatch batch) { + Minecraft mc = Minecraft.getInstance(); if (mc == null || mc.gameRenderer == null || batch.isEmpty()) { return 0; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemDrawCommand.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemDrawCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemDrawCommand.java index f2c2843..1ab103f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemDrawCommand.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.item; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemResolveKey.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemResolveKey.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemResolveKey.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemResolveKey.java index ff9799c..aef57a0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/ItemResolveKey.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/ItemResolveKey.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.item; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.ItemStack; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiItemSubmission.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/UiItemSubmission.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiItemSubmission.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/UiItemSubmission.java index 0e8956b..b43eb01 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiItemSubmission.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/item/UiItemSubmission.java @@ -5,14 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.item; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.command.UiItemCommand; -import dev.loki.lovisual.render.engine.core.ViewportContext; + +import dev.loki.lovisual.render.engine.command.texture.UiItemCommand; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ItemBatch; +import dev.loki.lovisual.render.engine.renderer.ui.dispatch.UiRenderDispatcher; /** Backend submission for Renderer2D item calls. */ public final class UiItemSubmission { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiEffectGraph.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiEffectGraph.java similarity index 74% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiEffectGraph.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiEffectGraph.java index 8fbc819..de68c38 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiEffectGraph.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiEffectGraph.java @@ -5,14 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.pass; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.command.UiCommand; -import dev.loki.lovisual.render.engine.command.UiCommandBuffer; -import dev.loki.lovisual.render.engine.command.UiCommandKind; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; + +import dev.loki.lovisual.render.engine.command.core.UiCommand; +import dev.loki.lovisual.render.engine.command.core.UiCommandBuffer; +import dev.loki.lovisual.render.engine.command.core.UiCommandKind; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; /** * Owner for UI effects. Blur/liquid draw paths still execute through Renderer2D ordered diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassCompiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassCompiler.java similarity index 56% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassCompiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassCompiler.java index 2ff59b6..aa8f8cf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassCompiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassCompiler.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.pass; -import dev.loki.lovisual.render.engine.command.UiCommandBuffer; +import dev.loki.lovisual.render.engine.command.core.UiCommandBuffer; +import dev.loki.lovisual.render.engine.renderer.ui.batches.UiBatcher; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchPlan; public final class UiPassCompiler { private final UiBatcher batcher = new UiBatcher(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassExecutor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassExecutor.java similarity index 66% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassExecutor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassExecutor.java index 4a8bc60..6f09812 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/UiPassExecutor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/pass/UiPassExecutor.java @@ -5,10 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui; +package dev.loki.lovisual.render.engine.renderer.ui.pass; +import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; + +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.renderer.ui.batches.ordered.UiBatchPlan; /** * Executes compiled UI passes. Renderer2D ordered batches remain the production executor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/action/UiActionContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/action/UiActionContext.java index a401aaf..3b2fb06 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/action/UiActionContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/action/UiActionContext.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.action; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public record UiActionContext(UiNode node, UiActionRef ref, Object event) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetProvider.java index b4b7dbb..a3822b5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetProvider.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; @FunctionalInterface public interface UiAssetProvider { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRef.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRef.java index 89c7384..eda10a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRef.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRef.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetKind; + public record UiAssetRef(UiAssetKind kind, String id, float intrinsicWidth, float intrinsicHeight) { public static UiAssetRef texture(String id, float width, float height) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetResolver.java index 46363dd..8098b12 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetResolver.java @@ -6,8 +6,11 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetKind; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetRegistry; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; + +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetKind.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetKind.java index 8ade34c..88e3ca1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry; public enum UiAssetKind { TEXTURE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetRegistry.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetRegistry.java index ce0aeaf..1dba87e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/UiAssetRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/asset/registry/UiAssetRegistry.java @@ -5,10 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetProvider; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetRef; + import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiDocument.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiDocument.java index c5cfe11..f803685 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiDocument.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiDocument.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; + import java.util.Collections; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentFactory.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentFactory.java similarity index 65% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentFactory.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentFactory.java index d9644dc..e78adea 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentFactory.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentFactory.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.component; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; + @FunctionalInterface public interface UiComponentFactory { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentRegistry.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentRegistry.java index 2ad4bdf..06872c6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiComponentRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/component/UiComponentRegistry.java @@ -5,7 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.component; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.component.UiComponentFactory; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntimeException; + import java.util.Collections; import java.util.LinkedHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNode.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNode.java index 77b7328..62d5c68 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNode.java @@ -5,7 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; + import it.unimi.dsi.fastutil.objects.ObjectArrayList; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeSpec.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeSpec.java index e7c05ba..9369615 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeSpec.java @@ -5,7 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; + import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeType.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeType.java index 8a2aea9..a4071d5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiNodeType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiNodeType.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiState; + import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiProps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiProps.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiProps.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiProps.java index 64a9dfd..3ed3889 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiProps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/node/UiProps.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiLifecycle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiLifecycle.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiLifecycle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiLifecycle.java index 8ff3768..c76c9b1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiLifecycle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiLifecycle.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; + public interface UiLifecycle { default void onMount(UiNode node) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiRuntime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiRuntime.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiRuntime.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiRuntime.java index f85ea90..efcb5cc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiRuntime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiRuntime.java @@ -5,24 +5,30 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiDocument; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; + import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import dev.loki.lovisual.render.engine.renderer.ui.runtime.action.UiActionRegistry; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetRegistry; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetRegistry; import dev.loki.lovisual.render.engine.renderer.ui.runtime.debug.UiRuntimeDiagnostics; import dev.loki.lovisual.render.engine.renderer.ui.runtime.error.UiErrorPolicy; import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.UiInputDispatcher; import dev.loki.lovisual.render.engine.renderer.ui.runtime.layout.UiLayoutEngine; import dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile.UiDiffStats; import dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile.UiReconciler; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderContext; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiRenderer; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiTextRenderer; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyleCache; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyleResolver; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiTextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse.UiStyleCache; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse.UiStyleResolver; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiState.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiState.java index 2ae674a..11d5999 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/UiState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/core/runtime/UiState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.core; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import dev.loki.lovisual.render.engine.renderer.ui.runtime.animation.UiAnimationState; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiRuntimeDiagnostics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiRuntimeDiagnostics.java index 5ad70ad..8c32cac 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiRuntimeDiagnostics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiRuntimeDiagnostics.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.debug; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public final class UiRuntimeDiagnostics { private final UiPerfCounters counters = new UiPerfCounters(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiTreeDumper.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiTreeDumper.java index 99eae5a..b4ddbcc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiTreeDumper.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/debug/UiTreeDumper.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.debug; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public enum UiTreeDumper { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitTester.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitTester.java index 8a7460f..3f75caa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitTester.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitTester.java @@ -6,9 +6,11 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event.UiHitResult; + import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputDispatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputDispatcher.java index 85e9044..b60ed89 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputDispatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputDispatcher.java @@ -6,11 +6,17 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.focus.UiCursorManager; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.focus.UiFocusManager; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event.UiHitResult; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event.UiPointerEvent; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event.UiScrollEvent; + import dev.loki.lovisual.render.engine.renderer.ui.runtime.action.UiActionContext; import dev.loki.lovisual.render.engine.renderer.ui.runtime.action.UiActionRegistry; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; import dev.loki.lovisual.render.engine.renderer.ui.runtime.debug.UiPerfCounters; public final class UiInputDispatcher { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputState.java index 03f0453..d1a00ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiInputState.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public final class UiInputState { private UiNode hoveredNode; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitResult.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiHitResult.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitResult.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiHitResult.java index fb7dfaa..86c9d97 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiHitResult.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiHitResult.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public record UiHitResult(UiNode node, float localX, float localY) { public static final UiHitResult MISS = new UiHitResult(null, 0.0f, 0.0f); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiKeyboardEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiKeyboardEvent.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiKeyboardEvent.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiKeyboardEvent.java index f7eff48..59f6853 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiKeyboardEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiKeyboardEvent.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event; public record UiKeyboardEvent(int keyCode, int scanCode, int modifiers) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiPointerEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiPointerEvent.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiPointerEvent.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiPointerEvent.java index 50d28cd..37f4474 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiPointerEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiPointerEvent.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event; public record UiPointerEvent(float x, float y, int button) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiScrollEvent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiScrollEvent.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiScrollEvent.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiScrollEvent.java index c7f060c..c7e618b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiScrollEvent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/event/UiScrollEvent.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.event; public record UiScrollEvent(float x, float y, double amountX, double amountY) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiCursorManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiCursorManager.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiCursorManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiCursorManager.java index 97cd3cd..97ad7f5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiCursorManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiCursorManager.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.focus; -import dev.loki.lovisual.render.helpers.SystemCursor; +import dev.loki.lovisual.render.helpers.util.SystemCursor; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiFocusManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiFocusManager.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiFocusManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiFocusManager.java index 392080d..a6aa407 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/UiFocusManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/input/focus/UiFocusManager.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.input; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.input.focus; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; public final class UiFocusManager { private UiNode focused; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/layout/UiLayoutEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/layout/UiLayoutEngine.java index 5b4c68c..bca868a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/layout/UiLayoutEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/layout/UiLayoutEngine.java @@ -7,14 +7,14 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.layout; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiTextRenderer; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiAlign; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiJustify; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiTextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiAlign; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiJustify; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public final class UiLayoutEngine { private final UiTextRenderer textRenderer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconcileContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconcileContext.java index 4f17579..d3ac5a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconcileContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconcileContext.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiLifecycle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiLifecycle; public final class UiReconcileContext { private final UiLifecycle lifecycle; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconciler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconciler.java index bc8ef7e..7b35f96 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconciler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiReconciler.java @@ -6,12 +6,14 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile.match.UiNodeMatcher; + import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiKeyPath.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiKeyPath.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiKeyPath.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiKeyPath.java index b4ec147..3c24044 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiKeyPath.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiKeyPath.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile.match; public record UiKeyPath(String value) { public UiKeyPath child(String keyOrIndex) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiNodeMatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiNodeMatcher.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiNodeMatcher.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiNodeMatcher.java index 25c82c2..4de025b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/UiNodeMatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/reconcile/match/UiNodeMatcher.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.reconcile.match; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; public final class UiNodeMatcher { public boolean canReuse(UiNode node, UiNodeSpec spec) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiPrimitiveRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiPrimitiveRenderer.java deleted file mode 100644 index 35a18cd..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiPrimitiveRenderer.java +++ /dev/null @@ -1,1041 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; - -import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.draw.*; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiColor; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiThemeRegistry; - -import java.util.Locale; -import java.util.Map; - -public final class UiPrimitiveRenderer { - private final double[] points = new double[64]; - private final int[] gradientCornersTmp = new int[4]; - private float renderAlpha = 1.0f; - - private static boolean isBoxShape(String shape, UiProps props) { - // Only the new flexible-box contract should be routed through UiBoxShape. - // Do not hijack legacy JS shapes such as "rounded-gradient", "chamfered", - // "notched" or plain "rect": those already have tuned Renderer2D paths and - // are heavily used by the JS HUD runtime. Routing them through the CPU - // flexible-box fallback changed winding/shader behavior and made old - // backgrounds disappear while blur still rendered. - if (props.get("corners") != null || props.get("edges") != null - || props.get("cornerTL") != null || props.get("cornerTopLeft") != null - || props.get("cornerTR") != null || props.get("cornerTopRight") != null - || props.get("cornerBR") != null || props.get("cornerBottomRight") != null - || props.get("cornerBL") != null || props.get("cornerBottomLeft") != null - || props.get("edgeTop") != null || props.get("topEdge") != null - || props.get("edgeRight") != null || props.get("rightEdge") != null - || props.get("edgeBottom") != null || props.get("bottomEdge") != null - || props.get("edgeLeft") != null || props.get("leftEdge") != null) { - return true; - } - return switch (shape) { - case "box", "mixed", "flex", "flex-box", "flex_box" -> true; - default -> false; - }; - } - - private static UiCornerSpec corner(UiProps props, String shortName, String longName, - UiCornerSpec fallback, float radius, float cut) { - Object corners = props.get("corners"); - Object explicit = cornerValue(corners, shortName, longName); - if (explicit == null) explicit = first(props, "corner" + shortName, "corner" + longName); - if (explicit != null) return cornerFromObject(explicit, fallback, radius, cut); - - Object mode = first(props, "cornerMode" + shortName, "cornerMode" + longName); - if (mode != null) return cornerFromObject(mode, fallback, radius, cut); - - float r = props.number("radius" + shortName, props.number("radius" + longName, fallback.radiusX())); - float c = props.number("cut" + shortName, props.number("cut" + longName, - props.number("chamfer" + shortName, props.number("chamfer" + longName, fallback.cutX())))); - if (r > 0.0f && (fallback.kind() == UiCornerKind.ROUNDED || fallback.kind() == UiCornerKind.SQUARE)) { - return UiCornerSpec.rounded(r, r); - } - if (c > 0.0f && fallback.kind() != UiCornerKind.ROUNDED) { - return UiCornerSpec.chamfered(c); - } - return fallback; - } - - private static UiCornerSpec cornerFromObject(Object value, UiCornerSpec fallback, float radius, float cut) { - if (value instanceof Map map) { - Object rawKind = map.get("kind"); - if (rawKind == null) rawKind = map.get("type"); - String kind = String.valueOf(rawKind != null ? rawKind : "").toLowerCase(Locale.ROOT); - float r = number(map.get("radius"), radius); - float rx = number(map.get("radiusX"), r); - float ry = number(map.get("radiusY"), r); - float c = number(map.get("cut"), number(map.get("chamfer"), cut)); - float cx = number(map.get("cutX"), c); - float cy = number(map.get("cutY"), c); - return switch (kind) { - case "round", "rounded", "radius" -> UiCornerSpec.rounded(rx, ry); - case "chamfer", "chamfered", "cut", "bevel", "beveled" -> UiCornerSpec.chamfered(cx, cy); - case "concave", "inverse", "inverse-round", "inverse_round" -> UiCornerSpec.concaveRounded(r); - case "square", "none" -> UiCornerSpec.square(); - default -> fallback; - }; - } - if (value instanceof Number n) return UiCornerSpec.rounded(n.floatValue(), n.floatValue()); - if (value instanceof String s) { - String normalized = s.trim().toLowerCase(Locale.ROOT); - if (normalized.startsWith("round")) return UiCornerSpec.rounded(radius, radius); - if (normalized.startsWith("chamfer") || normalized.startsWith("cut") || normalized.startsWith("bevel")) - return UiCornerSpec.chamfered(cut); - if (normalized.startsWith("concave") || normalized.startsWith("inverse")) - return UiCornerSpec.concaveRounded(radius); - if (normalized.startsWith("square") || normalized.startsWith("none")) return UiCornerSpec.square(); - } - return fallback; - } - - private static Object cornerValue(Object corners, String shortName, String longName) { - if (!(corners instanceof Map map)) return null; - Object value = map.get(shortName); - if (value == null) value = map.get(shortName.toLowerCase(Locale.ROOT)); - if (value == null) value = map.get(longName); - if (value == null) value = map.get(Character.toLowerCase(longName.charAt(0)) + longName.substring(1)); - return value; - } - - private static Object edgeValue(Object edges, String name) { - if (!(edges instanceof Map map)) return null; - Object value = map.get(name); - if (value == null) value = map.get(name.toUpperCase(Locale.ROOT)); - return value; - } - - private static UiEdgeSpec edgeFromObject(Object value, double length, boolean horizontal) { - if (value == null) return UiEdgeSpec.straight(); - if (value instanceof Map map) { - Object rawKind = map.get("kind"); - if (rawKind == null) rawKind = map.get("type"); - String kind = String.valueOf(rawKind != null ? rawKind : "").toLowerCase(Locale.ROOT); - if (kind.equals("notch") || kind.equals("notched")) { - float width = number(map.get("width"), number(map.get("size"), (float) Math.min(length * 0.18, 18.0))); - float depth = number(map.get("depth"), (float) Math.min(length * 0.10, 8.0)); - Object offset = map.get("offset"); - if (offset == null || "center".equals(String.valueOf(offset))) - return UiEdgeSpec.notchedCenter(width, depth); - return UiEdgeSpec.notched(number(offset, 0.0f), width, depth); - } - if (kind.equals("inset")) return UiEdgeSpec.inset(number(map.get("depth"), 0.0f)); - return UiEdgeSpec.straight(); - } - if (value instanceof String s) { - String normalized = s.trim().toLowerCase(Locale.ROOT); - if (normalized.equals("notch") || normalized.equals("notched")) - return UiEdgeSpec.notchedCenter(Math.min(length * 0.18, 18.0), Math.min(length * 0.10, 8.0)); - } - return UiEdgeSpec.straight(); - } - - private static void renderRoundedConnector(Renderer2D renderer, - UiBounds bounds, - UiProps props, - double thickness, - int stroke, - boolean gradient, - int start, - int end, - RoundedConnectorMode mode) { - double sx = bounds.x() + props.number("sourceX", props.number("x1", 0.0f)); - double sy = bounds.y() + props.number("sourceY", props.number("y1", 0.0f)); - double sw = props.number("sourceWidth", props.number("sourceW", 1.0f)); - double sh = props.number("sourceHeight", props.number("sourceH", 1.0f)); - double sr = props.number("sourceRadius", 0.0f); - double tx = bounds.x() + props.number("targetX", props.number("x2", bounds.width())); - double ty = bounds.y() + props.number("targetY", props.number("y2", 0.0f)); - double tw = props.number("targetWidth", props.number("targetW", 1.0f)); - double th = props.number("targetHeight", props.number("targetH", 1.0f)); - double tr = props.number("targetRadius", 0.0f); - - switch (mode) { - case NODE_EDGE -> { - if (gradient) - renderer.roundedRectNodeGraphEdgeGradient(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, start, end); - else renderer.roundedRectNodeGraphEdge(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, stroke); - } - case ORTHOGONAL -> { - double midX = bounds.x() + props.number("midX", bounds.width() * 0.5f); - if (gradient) { - renderer.roundedRectOrthogonalConnectorGradient( - sx, sy, sw, sh, sr, - tx, ty, tw, th, tr, - midX, - thickness, - start, - end - ); - } else { - renderer.roundedRectOrthogonalConnector( - sx, sy, sw, sh, sr, - tx, ty, tw, th, tr, - midX, - thickness, - stroke - ); - } - } - default -> { - if (gradient) - renderer.roundedRectConnectorGradient(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, start, end); - else renderer.roundedRectConnector(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, stroke); - } - } - } - - private static boolean hasFillCornerColors(UiProps props) { - return first(props, "topLeftColor", "cTopLeft") != null - || first(props, "topRightColor", "cTopRight") != null - || first(props, "bottomRightColor", "cBottomRight") != null - || first(props, "bottomLeftColor", "cBottomLeft") != null; - } - - private static boolean hasStrokeCornerColors(UiProps props) { - return props.get("strokeTopLeftColor") != null - || props.get("strokeTopRightColor") != null - || props.get("strokeBottomRightColor") != null - || props.get("strokeBottomLeftColor") != null; - } - - private static boolean hasLinearGradient(UiProps props) { - return props.get("startColor") != null || props.get("endColor") != null; - } - - private static boolean hasStrokeLinearGradient(UiProps props) { - return props.get("strokeStartColor") != null || props.get("strokeEndColor") != null; - } - - private static Object first(UiProps props, String first, String second) { - Object value = props.get(first); - return value != null ? value : props.get(second); - } - - private static float chamferCorner(UiProps props, String shortName, String longName, float fallback) { - Object value = props.get("cut" + shortName); - if (value == null) value = props.get("chamfer" + shortName); - if (value == null) value = props.get("cut" + longName); - if (value == null) value = props.get("chamfer" + longName); - return number(value, fallback); - } - - private static float number(Object value, float fallback) { - if (value instanceof Number n) return n.floatValue(); - if (value instanceof String s) { - try { - return Float.parseFloat(s); - } catch (NumberFormatException ignored) { - } - } - return fallback; - } - - private static int lighten(int argb, float amount) { - return adjust(argb, Math.abs(amount)); - } - - private static int darken(int argb, float amount) { - return adjust(argb, -Math.abs(amount)); - } - - private static int adjust(int argb, float delta) { - int a = (argb >>> 24) & 0xFF; - int r = (argb >>> 16) & 0xFF; - int g = (argb >>> 8) & 0xFF; - int b = argb & 0xFF; - r = channel(r, delta); - g = channel(g, delta); - b = channel(b, delta); - return (a << 24) | (r << 16) | (g << 8) | b; - } - - private static int channel(int value, float delta) { - int out = delta >= 0.0f - ? value + Math.round((255 - value) * delta) - : value - Math.round(value * -delta); - return Math.max(0, Math.min(255, out)); - } - - private static void computeLinearGradientCornerColors(float width, - float height, - int startArgb, - int endArgb, - float angleDeg, - float offsetPx, - int[] out) { - float angle = (float) Math.toRadians(angleDeg); - float dirX = (float) Math.cos(angle); - float dirY = (float) Math.sin(angle); - - float p0 = 0.0f; - float p1 = width * dirX; - float p2 = height * dirY; - float p3 = width * dirX + height * dirY; - float minProj = Math.min(Math.min(p0, p1), Math.min(p2, p3)); - float maxProj = Math.max(Math.max(p0, p1), Math.max(p2, p3)); - float range = Math.max(0.0001f, maxProj - minProj); - - out[0] = mixArgb(startArgb, endArgb, clamp01((p0 + offsetPx - minProj) / range)); - out[1] = mixArgb(startArgb, endArgb, clamp01((p1 + offsetPx - minProj) / range)); - out[2] = mixArgb(startArgb, endArgb, clamp01((p3 + offsetPx - minProj) / range)); - out[3] = mixArgb(startArgb, endArgb, clamp01((p2 + offsetPx - minProj) / range)); - } - - private static int mixArgb(int a, int b, float t) { - float u = 1.0f - t; - int aa = Math.round(((a >>> 24) & 0xFF) * u + ((b >>> 24) & 0xFF) * t); - int rr = Math.round(((a >>> 16) & 0xFF) * u + ((b >>> 16) & 0xFF) * t); - int gg = Math.round(((a >>> 8) & 0xFF) * u + ((b >>> 8) & 0xFF) * t); - int bb = Math.round((a & 0xFF) * u + (b & 0xFF) * t); - return (aa << 24) | (rr << 16) | (gg << 8) | bb; - } - - private static float clamp01(float value) { - if (value < 0.0f) return 0.0f; - if (value > 1.0f) return 1.0f; - return value; - } - - public void renderShape(UiNode node, UiRenderContext context) { - if (node == null || context == null || context.renderer() == null) return; - UiBounds bounds = node.bounds(); - if (bounds.width() <= 0.0f || bounds.height() <= 0.0f) return; - float previousAlpha = renderAlpha; - renderAlpha = context.alpha(); - try { - renderShapeInternal(node, context, bounds); - } finally { - renderAlpha = previousAlpha; - } - } - - private void renderShapeInternal(UiNode node, UiRenderContext context, UiBounds bounds) { - UiProps props = node.props(); - UiStyle style = node.style(); - Renderer2D renderer = context.renderer(); - String shape = props.string("shape", "chamfered").toLowerCase(Locale.ROOT); - int fill = color(props.get("fill"), style.backgroundColor() != null ? style.backgroundColor() : 0x00000000); - int stroke = color(props.get("stroke"), style.strokeColor() != null ? style.strokeColor() : 0x00000000); - float strokeWidth = props.number("strokeWidth", style.strokeWidth()); - double x = bounds.x(); - double y = bounds.y(); - double w = Math.max(0.0, props.number("renderWidth", bounds.width())); - double h = Math.max(0.0, props.number("renderHeight", bounds.height())); - double cut = props.number("cut", props.number("chamfer", style.radius())); - double cutTL = chamferCorner(props, "TL", "TopLeft", (float) cut); - double cutTR = chamferCorner(props, "TR", "TopRight", (float) cut); - double cutBR = chamferCorner(props, "BR", "BottomRight", (float) cut); - double cutBL = chamferCorner(props, "BL", "BottomLeft", (float) cut); - boolean linearGradient = hasLinearGradient(props); - int gradientStart = color(props.get("startColor"), fill); - int gradientEnd = color(props.get("endColor"), fill); - float gradientAngle = props.number("angle", 90.0f); - float gradientOffset = props.number("offset", 0.0f); - - renderShapeBlur(renderer, props, style, shape, x, y, w, h, cut); - - if (isBoxShape(shape, props)) { - UiBoxShape boxShape = buildBoxShape(props, style, shape, x, y, w, h); - UiPaint fillPaint = buildPaint(props, fill, linearGradient, gradientStart, gradientEnd, gradientAngle, gradientOffset); - if ((fillPaint.solidColor() >>> 24) > 0 || linearGradient || hasFillCornerColors(props)) { - renderer.box(boxShape, fillPaint); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - UiPaint strokePaint = buildStrokePaint(props, stroke, gradientAngle, gradientOffset); - renderer.boxStroke(boxShape, strokePaint, UiStroke.of(strokeWidth)); - } - return; - } - - switch (shape) { - case "rounded-soft-shadow", "rounded_soft_shadow", "soft-shadow", "soft_shadow" -> { - float radius = props.number("radius", style.radius()); - float blur = props.number("blur", props.number("shadowBlur", 8.0f)); - float innerAlpha = props.number("innerAlpha", props.number("shadowInnerAlpha", 0.18f)); - int color = color(props.get("color"), fill); - if ((color >>> 24) > 0 && blur > 0.0f) { - renderer.roundedRectSoftShadow(x, y, w, h, radius, blur, innerAlpha, color); - } - return; - } - case "rounded-shadow", "rounded_shadow", "shadow" -> { - float radius = props.number("radius", style.radius()); - float softness = props.number("softness", 8.0f); - float spread = props.number("spread", 12.0f); - int color = color(props.get("color"), fill); - if ((color >>> 24) > 0) { - renderer.roundedRectShadow(x, y, w, h, radius, softness, spread, color); - } - return; - } - case "rounded-glow", "rounded_glow", "glow" -> { - float radius = props.number("radius", style.radius()); - float softness = props.number("softness", 0.0f); - float glow = props.number("glow", props.number("spread", 8.0f)); - int color = color(props.get("color"), fill); - if ((color >>> 24) > 0 && glow > 0.0f) { - renderer.roundedRectGlow(x, y, w, h, radius, softness, glow, color); - } - return; - } - case "radial-glow-masked", "radial_glow_masked", "radial-glow", "radial_glow" -> { - float radius = props.number("radius", style.radius()); - float softness = props.number("softness", 0.0f); - float glowRadius = props.number("glowRadius", props.number("glow", (float) Math.max(w, h) * 0.5f)); - float cx = props.number("cx", (float) (w * 0.5)); - float cy = props.number("cy", (float) (h * 0.5)); - int color = color(props.get("color"), fill); - if ((color >>> 24) > 0 && glowRadius > 0.0f) { - renderer.radialGlowMasked(x, y, w, h, radius, softness, glowRadius, (float) x + cx, (float) y + cy, color); - } - return; - } - case "rounded-gradient-quad", "rounded_gradient_quad", "rounded-quad-gradient", "rounded_quad_gradient" -> { - float radius = props.number("radius", style.radius()); - float softness = props.number("softness", 0.0f); - renderer.roundedRectGradientQuad(x, y, w, h, radius, softness, - color(first(props, "topLeftColor", "cTopLeft"), gradientStart), - color(first(props, "topRightColor", "cTopRight"), gradientEnd), - color(first(props, "bottomRightColor", "cBottomRight"), gradientEnd), - color(first(props, "bottomLeftColor", "cBottomLeft"), gradientStart)); - return; - } - case "rounded-stroke-gradient", "rounded_stroke_gradient" -> { - float radius = props.number("radius", style.radius()); - float softness = props.number("softness", 0.0f); - float thickness = props.number("thickness", Math.max(1.0f, strokeWidth)); - int start = color(props.get("startColor"), color(props.get("strokeStartColor"), stroke)); - int end = color(props.get("endColor"), color(props.get("strokeEndColor"), stroke)); - if (((start | end) >>> 24) > 0 && thickness > 0.0f) { - renderer.roundedRectStrokeGradient(x, y, w, h, radius, softness, thickness, - start, end, props.number("angle", props.number("strokeAngle", 90.0f)), - props.number("offset", props.number("strokeOffset", 0.0f))); - } - return; - } - case "circle-soft-shadow", "circle_soft_shadow" -> { - double radius = props.number("radius", (float) (Math.min(w, h) * 0.5)); - double cx = x + props.number("cx", (float) (w * 0.5)); - double cy = y + props.number("cy", (float) (h * 0.5)); - float blur = props.number("blur", props.number("shadowBlur", 7.0f)); - float innerAlpha = props.number("innerAlpha", props.number("shadowInnerAlpha", 0.34f)); - int color = color(props.get("color"), fill); - if ((color >>> 24) > 0 && radius > 0.0 && blur > 0.0f) { - renderer.circleSoftShadow(cx, cy, radius, blur, innerAlpha, color); - } - return; - } - case "rect", "quad" -> { - if ((fill >>> 24) > 0) { - renderer.quad(x, y, w, h, fill); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - renderer.roundedRectStroke(x, y, w, h, 0.0f, 0.0f, strokeWidth, stroke); - } - return; - } - case "gradient", "rect-gradient", "rect_gradient", "quad-gradient", "quad_gradient" -> { - int start = color(props.get("startColor"), fill); - int end = color(props.get("endColor"), fill); - if (hasFillCornerColors(props)) { - renderer.quadGradient(x, y, w, h, - color(first(props, "topLeftColor", "cTopLeft"), start), - color(first(props, "topRightColor", "cTopRight"), end), - color(first(props, "bottomRightColor", "cBottomRight"), end), - color(first(props, "bottomLeftColor", "cBottomLeft"), start)); - } else if (((start | end) >>> 24) > 0) { - renderer.quadGradientLinear(x, y, w, h, start, end, - props.number("angle", 0.0f), - props.number("offset", 0.0f)); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - if (hasStrokeCornerColors(props)) { - renderer.roundedRectStrokeGradientQuad(x, y, w, h, 0.0f, 0.0f, strokeWidth, - color(props.get("strokeTopLeftColor"), stroke), - color(props.get("strokeTopRightColor"), stroke), - color(props.get("strokeBottomRightColor"), stroke), - color(props.get("strokeBottomLeftColor"), stroke)); - } else { - renderer.quadStrokeGradientLinear(x, y, w, h, strokeWidth, - color(props.get("strokeStartColor"), stroke), - color(props.get("strokeEndColor"), stroke), - props.number("strokeAngle", props.number("angle", 0.0f)), - props.number("strokeOffset", props.number("offset", 0.0f))); - } - } - return; - } - case "rounded", "rounded-rect", "rounded_rect" -> { - float radius = props.number("radius", style.radius()); - if ((fill >>> 24) > 0) { - renderer.roundedRect(x, y, w, h, radius, fill); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - renderer.roundedRectStroke(x, y, w, h, radius, strokeWidth, stroke); - } - return; - } - case "rounded-gradient", "rounded_gradient", "rounded-rect-gradient", "rounded_rect_gradient" -> { - float radius = props.number("radius", style.radius()); - int start = color(props.get("startColor"), fill); - int end = color(props.get("endColor"), fill); - if (hasFillCornerColors(props)) { - renderer.roundedRectGradientQuad(x, y, w, h, radius, - color(first(props, "topLeftColor", "cTopLeft"), start), - color(first(props, "topRightColor", "cTopRight"), end), - color(first(props, "bottomRightColor", "cBottomRight"), end), - color(first(props, "bottomLeftColor", "cBottomLeft"), start)); - } else if (((start | end) >>> 24) > 0) { - renderer.roundedRectGradient(x, y, w, h, radius, start, end, - props.number("angle", 90.0f), - props.number("offset", 0.0f)); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - if (hasStrokeCornerColors(props)) { - renderer.roundedRectStrokeGradientQuad(x, y, w, h, radius, strokeWidth, - color(props.get("strokeTopLeftColor"), stroke), - color(props.get("strokeTopRightColor"), stroke), - color(props.get("strokeBottomRightColor"), stroke), - color(props.get("strokeBottomLeftColor"), stroke)); - } else { - renderer.roundedRectStrokeGradient(x, y, w, h, radius, strokeWidth, - color(props.get("strokeStartColor"), stroke), - color(props.get("strokeEndColor"), stroke), - props.number("strokeAngle", props.number("angle", 90.0f)), - props.number("strokeOffset", props.number("offset", 0.0f))); - } - } - return; - } - case "rounded-progress-gradient", "rounded_progress_gradient", "progress-rounded-gradient", - "progress_rounded_gradient" -> { - float radius = props.number("radius", style.radius()); - float progress = props.number("progress", 1.0f); - boolean fromRight = props.bool("fromRight", false) || "right".equals(props.string("direction", "")); - int start = color(props.get("startColor"), fill); - int end = color(props.get("endColor"), start); - if (((start | end) >>> 24) > 0) { - renderer.roundedProgressRectGradient(x, y, w, h, radius, progress, fromRight, - start, - end, - props.number("angle", 0.0f), - props.number("offset", 0.0f)); - } - return; - } - case "rounded-smoke-fill", "rounded_smoke_fill", "smoke-fill", "smoke_fill" -> { - float radius = props.number("radius", style.radius()); - float fillRatio = props.number("fillRatio", props.number("progress", 1.0f)); - boolean fromRight = props.bool("fromRight", false) || "right".equals(props.string("direction", "")); - int first = color(first(props, "firstColor", "startColor"), fill); - int second = color(first(props, "secondColor", "endColor"), first); - int third = color(props.get("thirdColor"), second); - if (((first | second | third) >>> 24) > 0) { - renderer.roundedSmokeFill( - x, y, w, h, - radius, - fillRatio, - fromRight, - first, - second, - third, - props.number("time", 0.0f), - props.number("smokeScale", 3.0f), - props.number("smokeMix", 0.72f), - Math.round(props.number("octaves", 4.0f)), - props.number("flowX", 0.08f), - props.number("flowY", -0.05f), - props.number("intensity", 1.45f) - ); - } - return; - } - case "rounded-corners", "rounded_corners", "rounded-rect-corners", "rounded_rect_corners" -> { - float radius = props.number("radius", style.radius()); - float radiusTL = props.number("radiusTL", radius); - float radiusTR = props.number("radiusTR", radius); - float radiusBR = props.number("radiusBR", radius); - float radiusBL = props.number("radiusBL", radius); - if (hasFillCornerColors(props)) { - renderer.roundedRectCornersQuad(x, y, w, h, radiusTL, radiusTR, radiusBR, radiusBL, - color(first(props, "topLeftColor", "cTopLeft"), gradientStart), - color(first(props, "topRightColor", "cTopRight"), gradientEnd), - color(first(props, "bottomRightColor", "cBottomRight"), gradientEnd), - color(first(props, "bottomLeftColor", "cBottomLeft"), gradientStart)); - } else if (linearGradient) { - computeLinearGradientCornerColors((float) w, (float) h, gradientStart, gradientEnd, - gradientAngle, gradientOffset, gradientCornersTmp); - renderer.roundedRectCornersQuad(x, y, w, h, radiusTL, radiusTR, radiusBR, radiusBL, - gradientCornersTmp[0], - gradientCornersTmp[1], - gradientCornersTmp[2], - gradientCornersTmp[3]); - } else if ((fill >>> 24) > 0) { - renderer.roundedRectCorners(x, y, w, h, radiusTL, radiusTR, radiusBR, radiusBL, fill); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - renderer.roundedRectStrokeCorners(x, y, w, h, radiusTL, radiusTR, radiusBR, radiusBL, - strokeWidth, stroke); - } - return; - } - case "circle" -> { - double radius = props.number("radius", (float) (Math.min(w, h) * 0.5)); - double cx = x + props.number("cx", (float) (w * 0.5)); - double cy = y + props.number("cy", (float) (h * 0.5)); - if ((fill >>> 24) > 0) { - renderer.circle(cx, cy, radius, fill); - } - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - renderer.circleStroke(cx, cy, radius, strokeWidth, stroke); - } - return; - } - case "circle-stroke", "circle_stroke", "ring" -> { - double radius = props.number("radius", (float) (Math.min(w, h) * 0.5)); - double cx = x + props.number("cx", (float) (w * 0.5)); - double cy = y + props.number("cy", (float) (h * 0.5)); - float thickness = props.number("thickness", Math.max(1.0f, strokeWidth)); - int color = (stroke >>> 24) > 0 ? stroke : fill; - if ((color >>> 24) > 0 && thickness > 0.0f) { - renderer.circleStroke(cx, cy, radius, thickness, color); - } - return; - } - case "arc", "arc-stroke", "arc_stroke", "arc-flat", "arc_flat", "arc-gradient", "arc_gradient" -> { - float thickness = props.number("thickness", Math.max(1.0f, strokeWidth)); - double radius = props.number("radius", (float) Math.max(0.0, Math.min(w, h) * 0.5 - thickness * 0.5)); - double cx = x + props.number("cx", (float) (w * 0.5)); - double cy = y + props.number("cy", (float) (h * 0.5)); - float startAngle = props.number("startAngle", 0.0f); - float endAngle = props.number("endAngle", 360.0f); - int color = (stroke >>> 24) > 0 ? stroke : fill; - if (thickness <= 0.0f) return; - if (shape.equals("arc-gradient") || shape.equals("arc_gradient")) { - int start = color(props.get("startColor"), color); - int end = color(props.get("endColor"), color); - if (((start | end) >>> 24) > 0) { - renderer.arcStrokeGradient(cx, cy, radius, thickness, startAngle, endAngle, - props.number("softness", 0.0f), - start, end, props.number("angle", 0.0f), props.number("offset", 0.0f)); - } - } else if ((color >>> 24) > 0) { - if (shape.equals("arc-flat") || shape.equals("arc_flat")) { - renderer.arcStrokeFlat(cx, cy, radius, thickness, startAngle, endAngle, color); - } else { - renderer.arcStroke(cx, cy, radius, thickness, startAngle, endAngle, color); - } - } - return; - } - } - - if ((fill >>> 24) > 0 || (linearGradient && ((gradientStart | gradientEnd) >>> 24) > 0)) { - switch (shape) { - case "beveled", "bevel" -> { - if (linearGradient) { - renderer.beveledRectGradient( - x, y, w, h, - props.number("bevel", (float) cut), - gradientStart, - gradientEnd, - color(props.get("highlight"), lighten(gradientStart, 0.20f)), - color(props.get("shadow"), darken(gradientEnd, 0.24f)), - gradientAngle, - gradientOffset - ); - } else { - renderer.beveledRect( - x, y, w, h, - props.number("bevel", (float) cut), - fill, - color(props.get("highlight"), lighten(fill, 0.20f)), - color(props.get("shadow"), darken(fill, 0.24f)) - ); - } - } - case "notched", "notch" -> { - double notchWidth = props.number("notchWidth", (float) Math.min(w * 0.18, 18.0)); - double notchDepth = props.number("notchDepth", (float) Math.min(h * 0.28, 8.0)); - if (linearGradient) { - renderer.notchedRectGradient(x, y, w, h, notchWidth, notchDepth, - gradientStart, gradientEnd, gradientAngle, gradientOffset); - } else { - renderer.notchedRect(x, y, w, h, notchWidth, notchDepth, fill); - } - } - case "cut", "cut-corner", "cut_corner" -> { - if (linearGradient) { - renderer.chamferedRectGradient(x, y, w, h, - cutTL, cutTR, cutBR, cutBL, - gradientStart, gradientEnd, gradientAngle, gradientOffset); - } else { - renderer.chamferedRect(x, y, w, h, cutTL, cutTR, cutBR, cutBL, fill); - } - } - default -> { - if (linearGradient) { - renderer.chamferedRectGradient(x, y, w, h, - cutTL, cutTR, cutBR, cutBL, - gradientStart, gradientEnd, gradientAngle, gradientOffset); - } else { - renderer.chamferedRect(x, y, w, h, cutTL, cutTR, cutBR, cutBL, fill); - } - } - } - } - - if ((stroke >>> 24) > 0 && strokeWidth > 0.0f) { - int strokeStart = color(props.get("strokeStartColor"), stroke); - int strokeEnd = color(props.get("strokeEndColor"), stroke); - float strokeAngle = props.number("strokeAngle", gradientAngle); - float strokeOffset = props.number("strokeOffset", gradientOffset); - boolean strokeGradient = hasStrokeLinearGradient(props) || linearGradient; - switch (shape) { - case "beveled", "bevel" -> { - if (strokeGradient) { - renderer.beveledRectStrokeGradient(x, y, w, h, props.number("bevel", (float) cut), strokeWidth, - strokeStart, strokeEnd, strokeAngle, strokeOffset); - } else { - renderer.beveledRectStroke(x, y, w, h, props.number("bevel", (float) cut), strokeWidth, stroke); - } - } - case "notched", "notch" -> { - double notchWidth = props.number("notchWidth", (float) Math.min(w * 0.18, 18.0)); - double notchDepth = props.number("notchDepth", (float) Math.min(h * 0.28, 8.0)); - if (strokeGradient) { - renderer.notchedRectStrokeGradient(x, y, w, h, notchWidth, notchDepth, strokeWidth, - strokeStart, strokeEnd, strokeAngle, strokeOffset); - } else { - renderer.notchedRectStroke(x, y, w, h, notchWidth, notchDepth, strokeWidth, stroke); - } - } - case "cut", "cut-corner", "cut_corner" -> { - if (strokeGradient) { - renderer.chamferedRectStrokeGradient(x, y, w, h, - cutTL, cutTR, cutBR, cutBL, - strokeWidth, strokeStart, strokeEnd, strokeAngle, strokeOffset); - } else { - renderer.chamferedRectStroke(x, y, w, h, cutTL, cutTR, cutBR, cutBL, strokeWidth, stroke); - } - } - default -> { - if (strokeGradient) { - renderer.chamferedRectStrokeGradient(x, y, w, h, - cutTL, cutTR, cutBR, cutBL, - strokeWidth, strokeStart, strokeEnd, strokeAngle, strokeOffset); - } else { - renderer.chamferedRectStroke(x, y, w, h, cutTL, cutTR, cutBR, cutBL, strokeWidth, stroke); - } - } - } - } - } - - private UiBoxShape buildBoxShape(UiProps props, UiStyle style, String shape, - double x, double y, double w, double h) { - float radius = props.number("radius", style.radius()); - float cut = props.number("cut", props.number("chamfer", style.radius())); - - UiCornerSpec defaultCorner = switch (shape) { - case "rounded", "rounded-rect", "rounded_rect", "rounded-gradient", "rounded_gradient", - "rounded-rect-gradient", "rounded_rect_gradient" -> UiCornerSpec.rounded(radius, radius); - case "chamfered", "beveled", "bevel", "cut", "cut-corner", "cut_corner" -> UiCornerSpec.chamfered(cut); - default -> UiCornerSpec.square(); - }; - - if (shape.equals("rounded-corners") || shape.equals("rounded_corners") - || shape.equals("rounded-rect-corners") || shape.equals("rounded_rect_corners")) { - defaultCorner = UiCornerSpec.rounded(radius, radius); - } - - UiCornerSpec tl = corner(props, "TL", "TopLeft", defaultCorner, radius, cut); - UiCornerSpec tr = corner(props, "TR", "TopRight", defaultCorner, radius, cut); - UiCornerSpec br = corner(props, "BR", "BottomRight", defaultCorner, radius, cut); - UiCornerSpec bl = corner(props, "BL", "BottomLeft", defaultCorner, radius, cut); - - UiBoxShape.Builder builder = UiBoxShape.rect(x, y, w, h) - .corners(tl, tr, br, bl); - - Object edges = props.get("edges"); - UiEdgeSpec top = edgeFromObject(edgeValue(edges, "top"), w, true); - UiEdgeSpec right = edgeFromObject(edgeValue(edges, "right"), h, false); - UiEdgeSpec bottom = edgeFromObject(edgeValue(edges, "bottom"), w, true); - UiEdgeSpec left = edgeFromObject(edgeValue(edges, "left"), h, false); - - if (shape.equals("notched") || shape.equals("notch")) { - top = UiEdgeSpec.notchedCenter(props.number("notchWidth", (float) Math.min(w * 0.18, 18.0)), - props.number("notchDepth", (float) Math.min(h * 0.28, 8.0))); - } - if (props.get("edgeTop") != null || props.get("topEdge") != null) - top = edgeFromObject(first(props, "edgeTop", "topEdge"), w, true); - if (props.get("edgeRight") != null || props.get("rightEdge") != null) - right = edgeFromObject(first(props, "edgeRight", "rightEdge"), h, false); - if (props.get("edgeBottom") != null || props.get("bottomEdge") != null) - bottom = edgeFromObject(first(props, "edgeBottom", "bottomEdge"), w, true); - if (props.get("edgeLeft") != null || props.get("leftEdge") != null) - left = edgeFromObject(first(props, "edgeLeft", "leftEdge"), h, false); - - return builder.edges(top, right, bottom, left).build(); - } - - private UiPaint buildPaint(UiProps props, int fill, boolean linearGradient, - int gradientStart, int gradientEnd, float gradientAngle, float gradientOffset) { - if (hasFillCornerColors(props)) { - return UiPaint.corners( - color(first(props, "topLeftColor", "cTopLeft"), gradientStart), - color(first(props, "topRightColor", "cTopRight"), gradientEnd), - color(first(props, "bottomRightColor", "cBottomRight"), gradientEnd), - color(first(props, "bottomLeftColor", "cBottomLeft"), gradientStart) - ); - } - if (linearGradient) { - return UiPaint.linear(gradientStart, gradientEnd, gradientAngle, gradientOffset); - } - return UiPaint.solid(fill); - } - - private UiPaint buildStrokePaint(UiProps props, int stroke, float gradientAngle, float gradientOffset) { - if (hasStrokeCornerColors(props)) { - return UiPaint.corners( - color(props.get("strokeTopLeftColor"), stroke), - color(props.get("strokeTopRightColor"), stroke), - color(props.get("strokeBottomRightColor"), stroke), - color(props.get("strokeBottomLeftColor"), stroke) - ); - } - if (hasStrokeLinearGradient(props) || hasLinearGradient(props)) { - return UiPaint.linear( - color(props.get("strokeStartColor"), color(props.get("startColor"), stroke)), - color(props.get("strokeEndColor"), color(props.get("endColor"), stroke)), - props.number("strokeAngle", props.number("angle", gradientAngle)), - props.number("strokeOffset", props.number("offset", gradientOffset)) - ); - } - return UiPaint.solid(stroke); - } - - public void renderConnector(UiNode node, UiRenderContext context) { - if (node == null || context == null || context.renderer() == null) return; - float previousAlpha = renderAlpha; - renderAlpha = context.alpha(); - try { - renderConnectorInternal(node, context); - } finally { - renderAlpha = previousAlpha; - } - } - - private void renderConnectorInternal(UiNode node, UiRenderContext context) { - UiBounds bounds = node.bounds(); - UiProps props = node.props(); - UiStyle style = node.style(); - Renderer2D renderer = context.renderer(); - String type = props.string("connector", "line").toLowerCase(Locale.ROOT); - int stroke = color(props.get("stroke"), style.strokeColor() != null ? style.strokeColor() : 0xFFFFFFFF); - float thickness = props.number("strokeWidth", Math.max(1.0f, style.strokeWidth())); - boolean gradient = hasLinearGradient(props) || hasStrokeLinearGradient(props); - int start = color(props.get("startColor"), color(props.get("strokeStartColor"), stroke)); - int end = color(props.get("endColor"), color(props.get("strokeEndColor"), stroke)); - double x1 = bounds.x() + props.number("x1", 0.0f); - double y1 = bounds.y() + props.number("y1", bounds.height() * 0.5f); - double x2 = bounds.x() + props.number("x2", bounds.width()); - double y2 = bounds.y() + props.number("y2", bounds.height() * 0.5f); - - switch (type) { - case "rounded-edge", "rounded_edge", "rounded-line", "rounded_line" -> renderRoundedConnector( - renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.LINE - ); - case "rounded-node-edge", "rounded_node_edge", "rounded-edge-bezier", "rounded_edge_bezier" -> - renderRoundedConnector( - renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.NODE_EDGE - ); - case "rounded-orthogonal", "rounded_orthogonal", "rounded-orthogonal-connector", - "rounded_orthogonal_connector" -> renderRoundedConnector( - renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.ORTHOGONAL - ); - case "cable" -> { - if (gradient) { - renderer.cableGradient( - x1, y1, x2, y2, - thickness, - color(props.get("outerStartColor"), darken(start, 0.35f)), - color(props.get("outerEndColor"), darken(end, 0.35f)), - color(props.get("innerStartColor"), start), - color(props.get("innerEndColor"), end) - ); - } else { - renderer.cable( - x1, y1, x2, y2, - thickness, - color(props.get("outer"), darken(stroke, 0.35f)), - color(props.get("inner"), stroke) - ); - } - } - case "bezier", "bezier-connector", "bezier_connector" -> { - double cx1 = bounds.x() + props.number("cx1", props.number("x1", 0.0f) + bounds.width() * 0.33f); - double cy1 = bounds.y() + props.number("cy1", props.number("y1", bounds.height() * 0.5f)); - double cx2 = bounds.x() + props.number("cx2", props.number("x2", bounds.width()) - bounds.width() * 0.33f); - double cy2 = bounds.y() + props.number("cy2", props.number("y2", bounds.height() * 0.5f)); - int segments = (int) props.number("segments", 20.0f); - if (gradient) { - renderer.bezierConnectorGradient(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, thickness, start, end); - } else { - renderer.bezierConnector(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, thickness, stroke); - } - } - case "orthogonal", "orthogonal-connector", "orthogonal_connector" -> { - double midX = bounds.x() + props.number("midX", bounds.width() * 0.5f); - if (gradient) { - renderer.orthogonalConnectorGradient(x1, y1, x2, y2, midX, thickness, start, end); - } else { - renderer.orthogonalConnector(x1, y1, x2, y2, midX, thickness, stroke); - } - } - case "node-edge", "node_edge", "edge" -> { - if (gradient) { - renderer.nodeGraphEdgeGradient(x1, y1, x2, y2, thickness, start, end); - } else { - renderer.nodeGraphEdge(x1, y1, x2, y2, thickness, stroke); - } - } - case "spline" -> { - int count = readPoints(props.get("points"), bounds.x(), bounds.y()); - if (count >= 2) { - if (gradient) { - renderer.splineGradient(points, count, thickness, props.bool("closed", false), start, end); - } else { - renderer.spline(points, count, thickness, props.bool("closed", false), stroke); - } - } - } - case "wire" -> { - if (gradient) renderer.wireGradient(x1, y1, x2, y2, thickness, start, end); - else renderer.wire(x1, y1, x2, y2, thickness, stroke); - } - default -> { - if (gradient) renderer.connectorGradient(x1, y1, x2, y2, thickness, start, end); - else renderer.connector(x1, y1, x2, y2, thickness, stroke); - } - } - } - - private int readPoints(Object value, double offsetX, double offsetY) { - int count = 0; - if (value instanceof Iterable iterable) { - for (Object item : iterable) { - if (count >= points.length / 2) break; - if (item instanceof Map map) { - points[count * 2] = offsetX + number(map.get("x"), 0.0f); - points[count * 2 + 1] = offsetY + number(map.get("y"), 0.0f); - count++; - } else if (item instanceof Number) { - break; - } - } - if (count == 0) { - double pendingX = Double.NaN; - for (Object item : iterable) { - if (!(item instanceof Number n)) continue; - if (Double.isNaN(pendingX)) { - pendingX = n.doubleValue(); - } else { - if (0 >= points.length / 2) break; - points[0 * 2] = offsetX + pendingX; - points[count * 2 + 1] = offsetY + n.doubleValue(); - count++; - pendingX = Double.NaN; - } - } - } - } - return count; - } - - private int color(Object value, int fallback) { - int resolved; - if (value instanceof Number n) { - resolved = n.intValue(); - } else if (value instanceof String s) { - int themed = UiThemeRegistry.current().color(s, Integer.MIN_VALUE); - resolved = themed != Integer.MIN_VALUE ? themed : UiColor.parse(s, fallback); - } else { - resolved = fallback; - } - return renderAlpha >= 0.999f ? resolved : UiColor.multiplyAlpha(resolved, renderAlpha); - } - - private void renderShapeBlur(Renderer2D renderer, - UiProps props, - UiStyle style, - String shape, - double x, - double y, - double w, - double h, - double cut) { - if (!props.bool("blur", false)) return; - float quality = props.number("blurQuality", style.blurQuality()); - float brightness = props.number("blurBrightness", style.blurBrightness()); - float alpha = props.number("blurAlpha", style.blurAlpha()) * renderAlpha; - if (alpha <= 0.001f) return; - - switch (shape) { - case "rounded", "round" -> renderer.blurRect( - x, y, w, h, - props.number("radius", style.radius()), - quality, - brightness, - alpha, - 0xFFFFFF - ); - case "rounded-corners", "rounded_corners" -> { - float radius = props.number("radius", style.radius()); - float radiusTL = props.number("radiusTL", radius); - float radiusTR = props.number("radiusTR", radius); - float radiusBR = props.number("radiusBR", radius); - float radiusBL = props.number("radiusBL", radius); - renderer.blurComposite(blur -> blur.roundedRectCorners( - x, y, w, h, - radiusTL, radiusTR, radiusBR, radiusBL, - quality, - brightness, - alpha, - 0xFFFFFF - )); - } - default -> renderer.blurChamferedRect( - x, - y, - w, - h, - cut, - quality, - brightness, - alpha, - 0xFFFFFF - ); - } - } - - private enum RoundedConnectorMode { - LINE, - NODE_EDGE, - ORTHOGONAL - } -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiBlendSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiBlendSpec.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiBlendSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiBlendSpec.java index 2a23ed4..acee9f7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiBlendSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiBlendSpec.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge; import com.mojang.blaze3d.pipeline.BlendFunction; import com.mojang.blaze3d.platform.BlendFactor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiClipStack.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiClipStack.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiClipStack.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiClipStack.java index 226b9fa..05850a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiClipStack.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiClipStack.java @@ -5,13 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import java.util.ArrayDeque; import java.util.Deque; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiProjectionMode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; public final class UiClipStack { private final Deque pushed = new ArrayDeque<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiImageRendererBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiImageRendererBridge.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiImageRendererBridge.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiImageRendererBridge.java index 8ebc848..9e8dcc5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiImageRendererBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiImageRendererBridge.java @@ -5,21 +5,22 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import net.minecraft.resources.Identifier; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetKind; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetKind; import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetRef; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiColor; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiColor; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; -import dev.loki.lovisual.render.engine.svg.SvgRegistry; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.GuiSpriteBatch; -import dev.loki.lovisual.render.helpers.PlayerHeadRenderer; +import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.util.GuiSpriteBatch; +import dev.loki.lovisual.render.helpers.player.PlayerHeadRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; public final class UiImageRendererBridge { private static Identifier identifier(String raw) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiItemRendererBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiItemRendererBridge.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiItemRendererBridge.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiItemRendererBridge.java index c2540b1..f57e109 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiItemRendererBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/bridge/UiItemRendererBridge.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.Identifier; @@ -13,7 +13,8 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; public final class UiItemRendererBridge { public void render(UiNode node, UiRenderContext context) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiProjectionMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiProjectionMode.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiProjectionMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiProjectionMode.java index 59e1dda..c250433 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiProjectionMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiProjectionMode.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context; public enum UiProjectionMode { CURRENT, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiRenderContext.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiRenderContext.java index 445e00c..5bad764 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/context/UiRenderContext.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context; import net.minecraft.client.gui.GuiGraphicsExtractor; 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.engine.renderer.ui.runtime.render.context.UiProjectionMode; public record UiRenderContext(Renderer2D renderer, TextRenderer textRenderer, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiGlowPainter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiGlowPainter.java new file mode 100644 index 0000000..021c2fa --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiGlowPainter.java @@ -0,0 +1,147 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive; + +import dev.loki.lovisual.render.engine.renderer.Renderer2D; + +import static dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext.UiShapeFrame; + +/** + * Glow/shadow family and circle/arc primitives of the legacy JS shape contract. + */ +public final class UiGlowPainter { + private UiGlowPainter() { + } + + public static boolean paint(UiShapeFrame f) { + return switch (f.shape()) { + case "rounded-soft-shadow", "rounded_soft_shadow", "soft-shadow", "soft_shadow" -> paintSoftShadow(f); + case "rounded-shadow", "rounded_shadow", "shadow" -> paintShadow(f); + case "rounded-glow", "rounded_glow", "glow" -> paintGlow(f); + case "radial-glow-masked", "radial_glow_masked", "radial-glow", "radial_glow" -> paintRadialGlow(f); + case "circle-soft-shadow", "circle_soft_shadow" -> paintCircleSoftShadow(f); + case "circle" -> paintCircle(f); + case "circle-stroke", "circle_stroke", "ring" -> paintRing(f); + case "arc", "arc-stroke", "arc_stroke", "arc-flat", "arc_flat", "arc-gradient", "arc_gradient" -> paintArc(f); + default -> false; + }; + } + + private static boolean paintSoftShadow(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float blur = f.props().number("blur", f.props().number("shadowBlur", 8.0f)); + float innerAlpha = f.props().number("innerAlpha", f.props().number("shadowInnerAlpha", 0.18f)); + int color = f.color(f.props().get("color"), f.fill()); + if ((color >>> 24) > 0 && blur > 0.0f) { + f.renderer().roundedRectSoftShadow(f.x(), f.y(), f.w(), f.h(), radius, blur, innerAlpha, color); + } + return true; + } + + private static boolean paintShadow(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float softness = f.props().number("softness", 8.0f); + float spread = f.props().number("spread", 12.0f); + int color = f.color(f.props().get("color"), f.fill()); + if ((color >>> 24) > 0) { + f.renderer().roundedRectShadow(f.x(), f.y(), f.w(), f.h(), radius, softness, spread, color); + } + return true; + } + + private static boolean paintGlow(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float softness = f.props().number("softness", 0.0f); + float glow = f.props().number("glow", f.props().number("spread", 8.0f)); + int color = f.color(f.props().get("color"), f.fill()); + if ((color >>> 24) > 0 && glow > 0.0f) { + f.renderer().roundedRectGlow(f.x(), f.y(), f.w(), f.h(), radius, softness, glow, color); + } + return true; + } + + private static boolean paintRadialGlow(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float softness = f.props().number("softness", 0.0f); + float glowRadius = f.props().number("glowRadius", f.props().number("glow", (float) Math.max(f.w(), f.h()) * 0.5f)); + float cx = f.props().number("cx", (float) (f.w() * 0.5)); + float cy = f.props().number("cy", (float) (f.h() * 0.5)); + int color = f.color(f.props().get("color"), f.fill()); + if ((color >>> 24) > 0 && glowRadius > 0.0f) { + f.renderer().radialGlowMasked(f.x(), f.y(), f.w(), f.h(), radius, softness, glowRadius, + (float) f.x() + cx, (float) f.y() + cy, color); + } + return true; + } + + private static boolean paintCircleSoftShadow(UiShapeFrame f) { + double radius = f.props().number("radius", (float) (Math.min(f.w(), f.h()) * 0.5)); + double cx = f.x() + f.props().number("cx", (float) (f.w() * 0.5)); + double cy = f.y() + f.props().number("cy", (float) (f.h() * 0.5)); + float blur = f.props().number("blur", f.props().number("shadowBlur", 7.0f)); + float innerAlpha = f.props().number("innerAlpha", f.props().number("shadowInnerAlpha", 0.34f)); + int color = f.color(f.props().get("color"), f.fill()); + if ((color >>> 24) > 0 && radius > 0.0 && blur > 0.0f) { + f.renderer().circleSoftShadow(cx, cy, radius, blur, innerAlpha, color); + } + return true; + } + + private static boolean paintCircle(UiShapeFrame f) { + double radius = f.props().number("radius", (float) (Math.min(f.w(), f.h()) * 0.5)); + double cx = f.x() + f.props().number("cx", (float) (f.w() * 0.5)); + double cy = f.y() + f.props().number("cy", (float) (f.h() * 0.5)); + if ((f.fill() >>> 24) > 0) { + f.renderer().circle(cx, cy, radius, f.fill()); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + f.renderer().circleStroke(cx, cy, radius, f.strokeWidth(), f.stroke()); + } + return true; + } + + private static boolean paintRing(UiShapeFrame f) { + double radius = f.props().number("radius", (float) (Math.min(f.w(), f.h()) * 0.5)); + double cx = f.x() + f.props().number("cx", (float) (f.w() * 0.5)); + double cy = f.y() + f.props().number("cy", (float) (f.h() * 0.5)); + float thickness = f.props().number("thickness", Math.max(1.0f, f.strokeWidth())); + int color = (f.stroke() >>> 24) > 0 ? f.stroke() : f.fill(); + if ((color >>> 24) > 0 && thickness > 0.0f) { + f.renderer().circleStroke(cx, cy, radius, thickness, color); + } + return true; + } + + private static boolean paintArc(UiShapeFrame f) { + Renderer2D renderer = f.renderer(); + float thickness = f.props().number("thickness", Math.max(1.0f, f.strokeWidth())); + if (thickness <= 0.0f) return true; + double radius = f.props().number("radius", (float) Math.max(0.0, Math.min(f.w(), f.h()) * 0.5 - thickness * 0.5)); + double cx = f.x() + f.props().number("cx", (float) (f.w() * 0.5)); + double cy = f.y() + f.props().number("cy", (float) (f.h() * 0.5)); + float startAngle = f.props().number("startAngle", 0.0f); + float endAngle = f.props().number("endAngle", 360.0f); + int color = (f.stroke() >>> 24) > 0 ? f.stroke() : f.fill(); + if (f.shape().equals("arc-gradient") || f.shape().equals("arc_gradient")) { + int start = f.color(f.props().get("startColor"), color); + int end = f.color(f.props().get("endColor"), color); + if (((start | end) >>> 24) > 0) { + renderer.arcStrokeGradient(cx, cy, radius, thickness, startAngle, endAngle, + f.props().number("softness", 0.0f), + start, end, f.props().number("angle", 0.0f), f.props().number("offset", 0.0f)); + } + } else if ((color >>> 24) > 0) { + if (f.shape().equals("arc-flat") || f.shape().equals("arc_flat")) { + renderer.arcStrokeFlat(cx, cy, radius, thickness, startAngle, endAngle, color); + } else { + renderer.arcStroke(cx, cy, radius, thickness, startAngle, endAngle, color); + } + } + return true; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeContext.java new file mode 100644 index 0000000..4bbd1a9 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeContext.java @@ -0,0 +1,153 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive; + +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiColor; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiThemeRegistry; + +/** + * Resolved shape frame shared by primitive painters plus small color math helpers. + */ +public final class UiShapeContext { + private UiShapeContext() { + } + + public static int color(Object value, int fallback, float alpha) { + int resolved; + if (value instanceof Number n) { + resolved = n.intValue(); + } else if (value instanceof String s) { + int themed = UiThemeRegistry.current().color(s, Integer.MIN_VALUE); + resolved = themed != Integer.MIN_VALUE ? themed : UiColor.parse(s, fallback); + } else { + resolved = fallback; + } + return alpha >= 0.999f ? resolved : UiColor.multiplyAlpha(resolved, alpha); + } + + public static int lighten(int argb, float amount) { + return adjust(argb, Math.abs(amount)); + } + + public static int darken(int argb, float amount) { + return adjust(argb, -Math.abs(amount)); + } + + private static int adjust(int argb, float delta) { + int a = (argb >>> 24) & 0xFF; + int r = channel((argb >>> 16) & 0xFF, delta); + int g = channel((argb >>> 8) & 0xFF, delta); + int b = channel(argb & 0xFF, delta); + return (a << 24) | (r << 16) | (g << 8) | b; + } + + private static int channel(int value, float delta) { + int out = delta >= 0.0f + ? value + Math.round((255 - value) * delta) + : value - Math.round(value * -delta); + return Math.max(0, Math.min(255, out)); + } + + public static void computeLinearGradientCornerColors(float width, float height, int startArgb, int endArgb, + float angleDeg, float offsetPx, int[] out) { + float angle = (float) Math.toRadians(angleDeg); + float dirX = (float) Math.cos(angle); + float dirY = (float) Math.sin(angle); + float p0 = 0.0f; + float p1 = width * dirX; + float p2 = height * dirY; + float p3 = width * dirX + height * dirY; + float minProj = Math.min(Math.min(p0, p1), Math.min(p2, p3)); + float maxProj = Math.max(Math.max(p0, p1), Math.max(p2, p3)); + float range = Math.max(0.0001f, maxProj - minProj); + out[0] = mixArgb(startArgb, endArgb, clamp01((p0 + offsetPx - minProj) / range)); + out[1] = mixArgb(startArgb, endArgb, clamp01((p1 + offsetPx - minProj) / range)); + out[2] = mixArgb(startArgb, endArgb, clamp01((p3 + offsetPx - minProj) / range)); + out[3] = mixArgb(startArgb, endArgb, clamp01((p2 + offsetPx - minProj) / range)); + } + + public static int mixArgb(int a, int b, float t) { + float u = 1.0f - t; + int aa = Math.round(((a >>> 24) & 0xFF) * u + ((b >>> 24) & 0xFF) * t); + int rr = Math.round(((a >>> 16) & 0xFF) * u + ((b >>> 16) & 0xFF) * t); + int gg = Math.round(((a >>> 8) & 0xFF) * u + ((b >>> 8) & 0xFF) * t); + int bb = Math.round((a & 0xFF) * u + (b & 0xFF) * t); + return (aa << 24) | (rr << 16) | (gg << 8) | bb; + } + + public static float clamp01(float value) { + if (value < 0.0f) return 0.0f; + if (value > 1.0f) return 1.0f; + return value; + } + + /** + * Immutable snapshot of everything a shape painter needs for one draw call. + */ + public record UiShapeFrame(Renderer2D renderer, UiProps props, UiStyle style, String shape, + double x, double y, double w, double h, + int fill, int stroke, float strokeWidth, + double cut, double cutTL, double cutTR, double cutBR, double cutBL, + boolean linearGradient, int gradStart, int gradEnd, + float gradAngle, float gradOffset, float alpha) { + + public static UiShapeFrame of(UiNode node, UiRenderContext context) { + UiBounds bounds = node.bounds(); + UiProps props = node.props(); + UiStyle style = node.style(); + String shape = props.string("shape", "chamfered").toLowerCase(java.util.Locale.ROOT); + float alpha = context.alpha(); + int fill = UiShapeContext.color(props.get("fill"), style.backgroundColor() != null ? style.backgroundColor() : 0x00000000, alpha); + int stroke = UiShapeContext.color(props.get("stroke"), style.strokeColor() != null ? style.strokeColor() : 0x00000000, alpha); + float strokeWidth = props.number("strokeWidth", style.strokeWidth()); + double x = bounds.x(); + double y = bounds.y(); + double w = Math.max(0.0, props.number("renderWidth", bounds.width())); + double h = Math.max(0.0, props.number("renderHeight", bounds.height())); + double cut = props.number("cut", props.number("chamfer", style.radius())); + double cutTL = UiShapeProps.chamferCorner(props, "TL", "TopLeft", (float) cut); + double cutTR = UiShapeProps.chamferCorner(props, "TR", "TopRight", (float) cut); + double cutBR = UiShapeProps.chamferCorner(props, "BR", "BottomRight", (float) cut); + double cutBL = UiShapeProps.chamferCorner(props, "BL", "BottomLeft", (float) cut); + boolean linearGradient = props.get("startColor") != null || props.get("endColor") != null; + int gradStart = UiShapeContext.color(props.get("startColor"), fill, alpha); + int gradEnd = UiShapeContext.color(props.get("endColor"), fill, alpha); + float gradAngle = props.number("angle", 90.0f); + float gradOffset = props.number("offset", 0.0f); + return new UiShapeFrame(context.renderer(), props, style, shape, x, y, w, h, + fill, stroke, strokeWidth, cut, cutTL, cutTR, cutBR, cutBL, + linearGradient, gradStart, gradEnd, gradAngle, gradOffset, alpha); + } + + public boolean hasFillCornerColors() { + return UiShapeProps.first(props, "topLeftColor", "cTopLeft") != null + || UiShapeProps.first(props, "topRightColor", "cTopRight") != null + || UiShapeProps.first(props, "bottomRightColor", "cBottomRight") != null + || UiShapeProps.first(props, "bottomLeftColor", "cBottomLeft") != null; + } + + public boolean hasStrokeCornerColors() { + return props.get("strokeTopLeftColor") != null || props.get("strokeTopRightColor") != null + || props.get("strokeBottomRightColor") != null || props.get("strokeBottomLeftColor") != null; + } + + public boolean hasStrokeLinearGradient() { + return props.get("strokeStartColor") != null || props.get("strokeEndColor") != null; + } + + public int color(Object value, int fallback) { + return UiShapeContext.color(value, fallback, alpha); + } + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapePainter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapePainter.java new file mode 100644 index 0000000..d8dcd67 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapePainter.java @@ -0,0 +1,145 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiStroke; +import dev.loki.lovisual.render.engine.renderer.ui.draw.paint.UiPaint; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext.UiShapeFrame; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.rect.UiCornerPainter; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.rect.UiRectPainter; + +/** + * Orchestrates the legacy JS shape contract: blur pre-pass, flexible-box path, + * then glow/rect/corner painter families with a chamfer fallback. + */ +public final class UiShapePainter { + private UiShapePainter() { + } + + public static void paint(UiNode node, UiRenderContext context) { + if (node == null || context == null || context.renderer() == null) return; + if (node.bounds().width() <= 0.0f || node.bounds().height() <= 0.0f) return; + UiShapeFrame f = UiShapeFrame.of(node, context); + renderShapeBlur(f); + if (UiShapeProps.isBoxShape(f.shape(), f.props())) { + paintBoxShape(f); + return; + } + if (UiGlowPainter.paint(f)) return; + if (UiRectPainter.paint(f)) return; + if (UiCornerPainter.paint(f)) return; + UiCornerPainter.paintFallback(f); + } + + private static void paintBoxShape(UiShapeFrame f) { + UiBoxShape boxShape = buildBoxShape(f); + UiPaint fillPaint = buildPaint(f); + if ((fillPaint.solidColor() >>> 24) > 0 || f.linearGradient() || f.hasFillCornerColors()) { + f.renderer().box(boxShape, fillPaint); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + f.renderer().boxStroke(boxShape, buildStrokePaint(f), UiStroke.of(f.strokeWidth())); + } + } + + private static UiBoxShape buildBoxShape(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float cut = f.props().number("cut", f.props().number("chamfer", f.style().radius())); + UiCornerSpec defaultCorner = switch (f.shape()) { + case "rounded", "rounded-rect", "rounded_rect", "rounded-gradient", "rounded_gradient", + "rounded-rect-gradient", "rounded_rect_gradient" -> UiCornerSpec.rounded(radius, radius); + case "chamfered", "beveled", "bevel", "cut", "cut-corner", "cut_corner" -> UiCornerSpec.chamfered(cut); + default -> UiCornerSpec.square(); + }; + if (f.shape().equals("rounded-corners") || f.shape().equals("rounded_corners") + || f.shape().equals("rounded-rect-corners") || f.shape().equals("rounded_rect_corners")) { + defaultCorner = UiCornerSpec.rounded(radius, radius); + } + UiCornerSpec tl = UiShapeProps.corner(f.props(), "TL", "TopLeft", defaultCorner, radius, cut); + UiCornerSpec tr = UiShapeProps.corner(f.props(), "TR", "TopRight", defaultCorner, radius, cut); + UiCornerSpec br = UiShapeProps.corner(f.props(), "BR", "BottomRight", defaultCorner, radius, cut); + UiCornerSpec bl = UiShapeProps.corner(f.props(), "BL", "BottomLeft", defaultCorner, radius, cut); + + Object edges = f.props().get("edges"); + UiEdgeSpec top = UiShapeProps.edgeFromObject(UiShapeProps.edgeValue(edges, "top"), f.w(), true); + UiEdgeSpec right = UiShapeProps.edgeFromObject(UiShapeProps.edgeValue(edges, "right"), f.h(), false); + UiEdgeSpec bottom = UiShapeProps.edgeFromObject(UiShapeProps.edgeValue(edges, "bottom"), f.w(), true); + UiEdgeSpec left = UiShapeProps.edgeFromObject(UiShapeProps.edgeValue(edges, "left"), f.h(), false); + if (f.shape().equals("notched") || f.shape().equals("notch")) { + top = UiEdgeSpec.notchedCenter(f.props().number("notchWidth", (float) Math.min(f.w() * 0.18, 18.0)), + f.props().number("notchDepth", (float) Math.min(f.h() * 0.28, 8.0))); + } + if (f.props().get("edgeTop") != null || f.props().get("topEdge") != null) + top = UiShapeProps.edgeFromObject(UiShapeProps.first(f.props(), "edgeTop", "topEdge"), f.w(), true); + if (f.props().get("edgeRight") != null || f.props().get("rightEdge") != null) + right = UiShapeProps.edgeFromObject(UiShapeProps.first(f.props(), "edgeRight", "rightEdge"), f.h(), false); + if (f.props().get("edgeBottom") != null || f.props().get("bottomEdge") != null) + bottom = UiShapeProps.edgeFromObject(UiShapeProps.first(f.props(), "edgeBottom", "bottomEdge"), f.w(), true); + if (f.props().get("edgeLeft") != null || f.props().get("leftEdge") != null) + left = UiShapeProps.edgeFromObject(UiShapeProps.first(f.props(), "edgeLeft", "leftEdge"), f.h(), false); + return UiBoxShape.rect(f.x(), f.y(), f.w(), f.h()).corners(tl, tr, br, bl) + .edges(top, right, bottom, left).build(); + } + + private static UiPaint buildPaint(UiShapeFrame f) { + if (f.hasFillCornerColors()) { + return UiPaint.corners( + f.color(UiShapeProps.first(f.props(), "topLeftColor", "cTopLeft"), f.gradStart()), + f.color(UiShapeProps.first(f.props(), "topRightColor", "cTopRight"), f.gradEnd()), + f.color(UiShapeProps.first(f.props(), "bottomRightColor", "cBottomRight"), f.gradEnd()), + f.color(UiShapeProps.first(f.props(), "bottomLeftColor", "cBottomLeft"), f.gradStart())); + } + if (f.linearGradient()) return UiPaint.linear(f.gradStart(), f.gradEnd(), f.gradAngle(), f.gradOffset()); + return UiPaint.solid(f.fill()); + } + + private static UiPaint buildStrokePaint(UiShapeFrame f) { + if (f.hasStrokeCornerColors()) { + return UiPaint.corners( + f.color(f.props().get("strokeTopLeftColor"), f.stroke()), + f.color(f.props().get("strokeTopRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomLeftColor"), f.stroke())); + } + if (f.hasStrokeLinearGradient() || f.linearGradient()) { + return UiPaint.linear( + f.color(f.props().get("strokeStartColor"), f.color(f.props().get("startColor"), f.stroke())), + f.color(f.props().get("strokeEndColor"), f.color(f.props().get("endColor"), f.stroke())), + f.props().number("strokeAngle", f.props().number("angle", f.gradAngle())), + f.props().number("strokeOffset", f.props().number("offset", f.gradOffset()))); + } + return UiPaint.solid(f.stroke()); + } + + private static void renderShapeBlur(UiShapeFrame f) { + if (!f.props().bool("blur", false)) return; + float quality = f.props().number("blurQuality", f.style().blurQuality()); + float brightness = f.props().number("blurBrightness", f.style().blurBrightness()); + float alpha = f.props().number("blurAlpha", f.style().blurAlpha()) * f.alpha(); + if (alpha <= 0.001f) return; + switch (f.shape()) { + case "rounded", "round" -> f.renderer().blurRect(f.x(), f.y(), f.w(), f.h(), + f.props().number("radius", f.style().radius()), quality, brightness, alpha, 0xFFFFFF); + case "rounded-corners", "rounded_corners" -> { + float radius = f.props().number("radius", f.style().radius()); + float radiusTL = f.props().number("radiusTL", radius); + float radiusTR = f.props().number("radiusTR", radius); + float radiusBR = f.props().number("radiusBR", radius); + float radiusBL = f.props().number("radiusBL", radius); + f.renderer().blurComposite(blur -> blur.roundedRectCorners(f.x(), f.y(), f.w(), f.h(), + radiusTL, radiusTR, radiusBR, radiusBL, quality, brightness, alpha, 0xFFFFFF)); + } + default -> f.renderer().blurChamferedRect(f.x(), f.y(), f.w(), f.h(), f.cut(), quality, brightness, alpha, 0xFFFFFF); + } + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeProps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeProps.java new file mode 100644 index 0000000..fcb4591 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/primitive/UiShapeProps.java @@ -0,0 +1,158 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive; + +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.edge.UiEdgeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; + +import java.util.Locale; +import java.util.Map; + +/** + * Parsing of legacy JS shape props into corner/edge specs and flexible-box descriptors. + */ +public final class UiShapeProps { + private static final String[] BOX_KEYS = { + "corners", "edges", "cornerTL", "cornerTopLeft", "cornerTR", "cornerTopRight", + "cornerBR", "cornerBottomRight", "cornerBL", "cornerBottomLeft", + "edgeTop", "topEdge", "edgeRight", "rightEdge", "edgeBottom", "bottomEdge", + "edgeLeft", "leftEdge" + }; + + private UiShapeProps() { + } + + public static boolean isBoxShape(String shape, UiProps props) { + // Only the flexible-box contract is routed through UiBoxShape; legacy JS shapes + // such as "rounded-gradient"/"chamfered"/"notched" keep their tuned Renderer2D paths. + for (String key : BOX_KEYS) { + if (props.get(key) != null) return true; + } + return switch (shape) { + case "box", "mixed", "flex", "flex-box", "flex_box" -> true; + default -> false; + }; + } + + public static Object first(UiProps props, String a, String b) { + Object value = props.get(a); + return value != null ? value : props.get(b); + } + + public static float number(Object value, float fallback) { + if (value instanceof Number n) return n.floatValue(); + if (value instanceof String s) { + try { + return Float.parseFloat(s); + } catch (NumberFormatException ignored) { + } + } + return fallback; + } + + public static float chamferCorner(UiProps props, String shortName, String longName, float fallback) { + Object value = props.get("cut" + shortName); + if (value == null) value = props.get("chamfer" + shortName); + if (value == null) value = props.get("cut" + longName); + if (value == null) value = props.get("chamfer" + longName); + return number(value, fallback); + } + + public static UiCornerSpec corner(UiProps props, String shortName, String longName, + UiCornerSpec fallback, float radius, float cut) { + Object explicit = cornerValue(props.get("corners"), shortName, longName); + if (explicit == null) explicit = first(props, "corner" + shortName, "corner" + longName); + if (explicit != null) return cornerFromObject(explicit, fallback, radius, cut); + Object mode = first(props, "cornerMode" + shortName, "cornerMode" + longName); + if (mode != null) return cornerFromObject(mode, fallback, radius, cut); + float r = props.number("radius" + shortName, props.number("radius" + longName, fallback.radiusX())); + float c = props.number("cut" + shortName, props.number("cut" + longName, + props.number("chamfer" + shortName, props.number("chamfer" + longName, fallback.cutX())))); + if (r > 0.0f && (fallback.kind() == UiCornerKind.ROUNDED || fallback.kind() == UiCornerKind.SQUARE)) { + return UiCornerSpec.rounded(r, r); + } + if (c > 0.0f && fallback.kind() != UiCornerKind.ROUNDED) { + return UiCornerSpec.chamfered(c); + } + return fallback; + } + + private static UiCornerSpec cornerFromObject(Object value, UiCornerSpec fallback, float radius, float cut) { + if (value instanceof Map map) { + Object rawKind = map.get("kind"); + if (rawKind == null) rawKind = map.get("type"); + String kind = String.valueOf(rawKind != null ? rawKind : "").toLowerCase(Locale.ROOT); + float r = number(map.get("radius"), radius); + float rx = number(map.get("radiusX"), r); + float ry = number(map.get("radiusY"), r); + float c = number(map.get("cut"), number(map.get("chamfer"), cut)); + float cx = number(map.get("cutX"), c); + float cy = number(map.get("cutY"), c); + return switch (kind) { + case "round", "rounded", "radius" -> UiCornerSpec.rounded(rx, ry); + case "chamfer", "chamfered", "cut", "bevel", "beveled" -> UiCornerSpec.chamfered(cx, cy); + case "concave", "inverse", "inverse-round", "inverse_round" -> UiCornerSpec.concaveRounded(r); + case "square", "none" -> UiCornerSpec.square(); + default -> fallback; + }; + } + if (value instanceof String s) { + String normalized = s.trim().toLowerCase(Locale.ROOT); + if (normalized.startsWith("round")) return UiCornerSpec.rounded(radius, radius); + if (normalized.startsWith("chamfer") || normalized.startsWith("cut") || normalized.startsWith("bevel")) + return UiCornerSpec.chamfered(cut); + if (normalized.startsWith("concave") || normalized.startsWith("inverse")) + return UiCornerSpec.concaveRounded(radius); + if (normalized.startsWith("square") || normalized.startsWith("none")) return UiCornerSpec.square(); + } + return fallback; + } + + private static Object cornerValue(Object corners, String shortName, String longName) { + if (!(corners instanceof Map map)) return null; + Object value = map.get(shortName); + if (value == null) value = map.get(shortName.toLowerCase(Locale.ROOT)); + if (value == null) value = map.get(longName); + if (value == null) value = map.get(Character.toLowerCase(longName.charAt(0)) + longName.substring(1)); + return value; + } + + static Object edgeValue(Object edges, String name) { + if (!(edges instanceof Map map)) return null; + Object value = map.get(name); + if (value == null) value = map.get(name.toUpperCase(Locale.ROOT)); + return value; + } + + public static UiEdgeSpec edgeFromObject(Object value, double length, boolean horizontal) { + if (value == null) return UiEdgeSpec.straight(); + if (value instanceof Map map) { + Object rawKind = map.get("kind"); + if (rawKind == null) rawKind = map.get("type"); + String kind = String.valueOf(rawKind != null ? rawKind : "").toLowerCase(Locale.ROOT); + if (kind.equals("notch") || kind.equals("notched")) { + float width = number(map.get("width"), number(map.get("size"), (float) Math.min(length * 0.18, 18.0))); + float depth = number(map.get("depth"), (float) Math.min(length * 0.10, 8.0)); + Object offset = map.get("offset"); + if (offset == null || "center".equals(String.valueOf(offset))) + return UiEdgeSpec.notchedCenter(width, depth); + return UiEdgeSpec.notched(number(offset, 0.0f), width, depth); + } + if (kind.equals("inset")) return UiEdgeSpec.inset(number(map.get("depth"), 0.0f)); + return UiEdgeSpec.straight(); + } + if (value instanceof String s) { + String normalized = s.trim().toLowerCase(Locale.ROOT); + if (normalized.equals("notch") || normalized.equals("notched")) + return UiEdgeSpec.notchedCenter(Math.min(length * 0.18, 18.0), Math.min(length * 0.10, 8.0)); + } + return UiEdgeSpec.straight(); + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiCornerPainter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiCornerPainter.java new file mode 100644 index 0000000..7282861 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiCornerPainter.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.rect; + +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext.UiShapeFrame; + +import static dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeProps.first; + +/** + * Per-corner radius shapes and the chamfer/bevel/notch fallback family. + */ +public final class UiCornerPainter { + private UiCornerPainter() { + } + + public static boolean paint(UiShapeFrame f) { + if (!f.shape().equals("rounded-corners") && !f.shape().equals("rounded_corners") + && !f.shape().equals("rounded-rect-corners") && !f.shape().equals("rounded_rect_corners")) { + return false; + } + paintCorners(f); + return true; + } + + private static void paintCorners(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float radiusTL = f.props().number("radiusTL", radius); + float radiusTR = f.props().number("radiusTR", radius); + float radiusBR = f.props().number("radiusBR", radius); + float radiusBL = f.props().number("radiusBL", radius); + int[] cornerColors = new int[4]; + if (f.hasFillCornerColors()) { + fillCorners(f, radiusTL, radiusTR, radiusBR, radiusBL); + } else if (f.linearGradient()) { + UiShapeContext.computeLinearGradientCornerColors((float) f.w(), (float) f.h(), f.gradStart(), f.gradEnd(), + f.gradAngle(), f.gradOffset(), cornerColors); + f.renderer().roundedRectCornersQuad(f.x(), f.y(), f.w(), f.h(), radiusTL, radiusTR, radiusBR, radiusBL, + cornerColors[0], cornerColors[1], cornerColors[2], cornerColors[3]); + } else if ((f.fill() >>> 24) > 0) { + f.renderer().roundedRectCorners(f.x(), f.y(), f.w(), f.h(), radiusTL, radiusTR, radiusBR, radiusBL, f.fill()); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + f.renderer().roundedRectStrokeCorners(f.x(), f.y(), f.w(), f.h(), radiusTL, radiusTR, radiusBR, radiusBL, + f.strokeWidth(), f.stroke()); + } + } + + private static void fillCorners(UiShapeFrame f, float radiusTL, float radiusTR, float radiusBR, float radiusBL) { + f.renderer().roundedRectCornersQuad(f.x(), f.y(), f.w(), f.h(), radiusTL, radiusTR, radiusBR, radiusBL, + f.color(first(f.props(), "topLeftColor", "cTopLeft"), f.gradStart()), + f.color(first(f.props(), "topRightColor", "cTopRight"), f.gradEnd()), + f.color(first(f.props(), "bottomRightColor", "cBottomRight"), f.gradEnd()), + f.color(first(f.props(), "bottomLeftColor", "cBottomLeft"), f.gradStart())); + } + + /** + * Legacy fallback path: beveled/notched/chamfered fills plus optional gradient stroke. + */ + public static void paintFallback(UiShapeFrame f) { + if ((f.fill() >>> 24) > 0 || (f.linearGradient() && ((f.gradStart() | f.gradEnd()) >>> 24) > 0)) { + paintFallbackFill(f); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + paintFallbackStroke(f); + } + } + + private static void paintFallbackFill(UiShapeFrame f) { + switch (f.shape()) { + case "beveled", "bevel" -> { + if (f.linearGradient()) { + f.renderer().beveledRectGradient(f.x(), f.y(), f.w(), f.h(), + f.props().number("bevel", (float) f.cut()), f.gradStart(), f.gradEnd(), + f.color(f.props().get("highlight"), UiShapeContext.lighten(f.gradStart(), 0.20f)), + f.color(f.props().get("shadow"), UiShapeContext.darken(f.gradEnd(), 0.24f)), + f.gradAngle(), f.gradOffset()); + } else { + f.renderer().beveledRect(f.x(), f.y(), f.w(), f.h(), + f.props().number("bevel", (float) f.cut()), f.fill(), + f.color(f.props().get("highlight"), UiShapeContext.lighten(f.fill(), 0.20f)), + f.color(f.props().get("shadow"), UiShapeContext.darken(f.fill(), 0.24f))); + } + } + case "notched", "notch" -> { + double notchWidth = f.props().number("notchWidth", (float) Math.min(f.w() * 0.18, 18.0)); + double notchDepth = f.props().number("notchDepth", (float) Math.min(f.h() * 0.28, 8.0)); + if (f.linearGradient()) { + f.renderer().notchedRectGradient(f.x(), f.y(), f.w(), f.h(), notchWidth, notchDepth, + f.gradStart(), f.gradEnd(), f.gradAngle(), f.gradOffset()); + } else { + f.renderer().notchedRect(f.x(), f.y(), f.w(), f.h(), notchWidth, notchDepth, f.fill()); + } + } + default -> { + if (f.linearGradient()) { + f.renderer().chamferedRectGradient(f.x(), f.y(), f.w(), f.h(), + f.cutTL(), f.cutTR(), f.cutBR(), f.cutBL(), + f.gradStart(), f.gradEnd(), f.gradAngle(), f.gradOffset()); + } else { + f.renderer().chamferedRect(f.x(), f.y(), f.w(), f.h(), f.cutTL(), f.cutTR(), f.cutBR(), f.cutBL(), f.fill()); + } + } + } + } + + private static void paintFallbackStroke(UiShapeFrame f) { + int strokeStart = f.color(f.props().get("strokeStartColor"), f.stroke()); + int strokeEnd = f.color(f.props().get("strokeEndColor"), f.stroke()); + float strokeAngle = f.props().number("strokeAngle", f.gradAngle()); + float strokeOffset = f.props().number("strokeOffset", f.gradOffset()); + boolean strokeGradient = f.hasStrokeLinearGradient() || f.linearGradient(); + switch (f.shape()) { + case "beveled", "bevel" -> { + if (strokeGradient) { + f.renderer().beveledRectStrokeGradient(f.x(), f.y(), f.w(), f.h(), + f.props().number("bevel", (float) f.cut()), f.strokeWidth(), strokeStart, strokeEnd, strokeAngle, strokeOffset); + } else { + f.renderer().beveledRectStroke(f.x(), f.y(), f.w(), f.h(), + f.props().number("bevel", (float) f.cut()), f.strokeWidth(), f.stroke()); + } + } + case "notched", "notch" -> { + double notchWidth = f.props().number("notchWidth", (float) Math.min(f.w() * 0.18, 18.0)); + double notchDepth = f.props().number("notchDepth", (float) Math.min(f.h() * 0.28, 8.0)); + if (strokeGradient) { + f.renderer().notchedRectStrokeGradient(f.x(), f.y(), f.w(), f.h(), notchWidth, notchDepth, f.strokeWidth(), + strokeStart, strokeEnd, strokeAngle, strokeOffset); + } else { + f.renderer().notchedRectStroke(f.x(), f.y(), f.w(), f.h(), notchWidth, notchDepth, f.strokeWidth(), f.stroke()); + } + } + default -> { + if (strokeGradient) { + f.renderer().chamferedRectStrokeGradient(f.x(), f.y(), f.w(), f.h(), + f.cutTL(), f.cutTR(), f.cutBR(), f.cutBL(), + f.strokeWidth(), strokeStart, strokeEnd, strokeAngle, strokeOffset); + } else { + f.renderer().chamferedRectStroke(f.x(), f.y(), f.w(), f.h(), f.cutTL(), f.cutTR(), f.cutBR(), f.cutBL(), + f.strokeWidth(), f.stroke()); + } + } + } + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiRectPainter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiRectPainter.java new file mode 100644 index 0000000..77c6749 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/rect/UiRectPainter.java @@ -0,0 +1,150 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.rect; + +import static dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext.UiShapeFrame; +import static dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeProps.first; + +/** + * Rect/rounded-rect fill and gradient families of the legacy JS shape contract. + */ +public final class UiRectPainter { + private UiRectPainter() { + } + + public static boolean paint(UiShapeFrame f) { + return switch (f.shape()) { + case "rect", "quad" -> paintQuad(f); + case "gradient", "rect-gradient", "rect_gradient", "quad-gradient", "quad_gradient" -> paintQuadGradient(f); + case "rounded", "rounded-rect", "rounded_rect" -> paintRounded(f); + case "rounded-gradient", "rounded_gradient", "rounded-rect-gradient", "rounded_rect_gradient" -> paintRoundedGradient(f); + case "rounded-progress-gradient", "rounded_progress_gradient", "progress-rounded-gradient", + "progress_rounded_gradient" -> paintProgress(f); + case "rounded-smoke-fill", "rounded_smoke_fill", "smoke-fill", "smoke_fill" -> paintSmoke(f); + default -> false; + }; + } + + private static boolean paintQuad(UiShapeFrame f) { + if ((f.fill() >>> 24) > 0) { + f.renderer().quad(f.x(), f.y(), f.w(), f.h(), f.fill()); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + f.renderer().roundedRectStroke(f.x(), f.y(), f.w(), f.h(), 0.0f, f.strokeWidth(), f.stroke()); + } + return true; + } + + private static boolean paintQuadGradient(UiShapeFrame f) { + int start = f.color(f.props().get("startColor"), f.fill()); + int end = f.color(f.props().get("endColor"), f.fill()); + if (f.hasFillCornerColors()) { + f.renderer().quadGradient(f.x(), f.y(), f.w(), f.h(), + f.color(first(f.props(), "topLeftColor", "cTopLeft"), start), + f.color(first(f.props(), "topRightColor", "cTopRight"), end), + f.color(first(f.props(), "bottomRightColor", "cBottomRight"), end), + f.color(first(f.props(), "bottomLeftColor", "cBottomLeft"), start)); + } else if (((start | end) >>> 24) > 0) { + f.renderer().quadGradientLinear(f.x(), f.y(), f.w(), f.h(), start, end, + f.props().number("angle", 0.0f), f.props().number("offset", 0.0f)); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + if (f.hasStrokeCornerColors()) { + f.renderer().roundedRectStrokeGradientQuad(f.x(), f.y(), f.w(), f.h(), 0.0f, 0.0f, f.strokeWidth(), + f.color(f.props().get("strokeTopLeftColor"), f.stroke()), + f.color(f.props().get("strokeTopRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomLeftColor"), f.stroke())); + } else { + f.renderer().quadStrokeGradientLinear(f.x(), f.y(), f.w(), f.h(), f.strokeWidth(), + f.color(f.props().get("strokeStartColor"), f.stroke()), + f.color(f.props().get("strokeEndColor"), f.stroke()), + f.props().number("strokeAngle", f.props().number("angle", 0.0f)), + f.props().number("strokeOffset", f.props().number("offset", 0.0f))); + } + } + return true; + } + + private static boolean paintRounded(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + if ((f.fill() >>> 24) > 0) { + f.renderer().roundedRect(f.x(), f.y(), f.w(), f.h(), radius, f.fill()); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + f.renderer().roundedRectStroke(f.x(), f.y(), f.w(), f.h(), radius, f.strokeWidth(), f.stroke()); + } + return true; + } + + private static boolean paintRoundedGradient(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + int start = f.color(f.props().get("startColor"), f.fill()); + int end = f.color(f.props().get("endColor"), f.fill()); + if (f.hasFillCornerColors()) { + f.renderer().roundedRectGradientQuad(f.x(), f.y(), f.w(), f.h(), radius, + f.color(first(f.props(), "topLeftColor", "cTopLeft"), start), + f.color(first(f.props(), "topRightColor", "cTopRight"), end), + f.color(first(f.props(), "bottomRightColor", "cBottomRight"), end), + f.color(first(f.props(), "bottomLeftColor", "cBottomLeft"), start)); + } else if (((start | end) >>> 24) > 0) { + f.renderer().roundedRectGradient(f.x(), f.y(), f.w(), f.h(), radius, start, end, + f.props().number("angle", 90.0f), f.props().number("offset", 0.0f)); + } + if ((f.stroke() >>> 24) > 0 && f.strokeWidth() > 0.0f) { + if (f.hasStrokeCornerColors()) { + f.renderer().roundedRectStrokeGradientQuad(f.x(), f.y(), f.w(), f.h(), radius, f.strokeWidth(), + f.color(f.props().get("strokeTopLeftColor"), f.stroke()), + f.color(f.props().get("strokeTopRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomRightColor"), f.stroke()), + f.color(f.props().get("strokeBottomLeftColor"), f.stroke())); + } else { + f.renderer().roundedRectStrokeGradient(f.x(), f.y(), f.w(), f.h(), radius, f.strokeWidth(), + f.color(f.props().get("strokeStartColor"), f.stroke()), + f.color(f.props().get("strokeEndColor"), f.stroke()), + f.props().number("strokeAngle", f.props().number("angle", 90.0f)), + f.props().number("strokeOffset", f.props().number("offset", 0.0f))); + } + } + return true; + } + + private static boolean paintProgress(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float progress = f.props().number("progress", 1.0f); + boolean fromRight = f.props().bool("fromRight", false) || "right".equals(f.props().string("direction", "")); + int start = f.color(f.props().get("startColor"), f.fill()); + int end = f.color(f.props().get("endColor"), start); + if (((start | end) >>> 24) > 0) { + f.renderer().roundedProgressRectGradient(f.x(), f.y(), f.w(), f.h(), radius, progress, fromRight, + start, end, f.props().number("angle", 0.0f), f.props().number("offset", 0.0f)); + } + return true; + } + + private static boolean paintSmoke(UiShapeFrame f) { + float radius = f.props().number("radius", f.style().radius()); + float fillRatio = f.props().number("fillRatio", f.props().number("progress", 1.0f)); + boolean fromRight = f.props().bool("fromRight", false) || "right".equals(f.props().string("direction", "")); + int first = f.color(first(f.props(), "firstColor", "startColor"), f.fill()); + int second = f.color(first(f.props(), "secondColor", "endColor"), first); + int third = f.color(f.props().get("thirdColor"), second); + if (((first | second | third) >>> 24) > 0) { + f.renderer().roundedSmokeFill(f.x(), f.y(), f.w(), f.h(), radius, fillRatio, fromRight, + first, second, third, + f.props().number("time", 0.0f), + f.props().number("smokeScale", 3.0f), + f.props().number("smokeMix", 0.72f), + Math.round(f.props().number("octaves", 4.0f)), + f.props().number("flowX", 0.08f), + f.props().number("flowY", -0.05f), + f.props().number("intensity", 1.0f)); + } + return true; + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiPrimitiveRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiPrimitiveRenderer.java new file mode 100644 index 0000000..625a519 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiPrimitiveRenderer.java @@ -0,0 +1,188 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render; + +import dev.loki.lovisual.render.engine.renderer.Renderer2D; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapePainter; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.primitive.UiShapeProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; + +import java.util.Locale; +import java.util.Map; + +/** + * Entry point for primitive shape and connector rendering; shape families live in + * {@code render.primitive} / {@code render.rect}, connectors stay here. + */ +public final class UiPrimitiveRenderer { + private final double[] points = new double[64]; + + public void renderShape(UiNode node, UiRenderContext context) { + UiShapePainter.paint(node, context); + } + + public void renderConnector(UiNode node, UiRenderContext context) { + if (node == null || context == null || context.renderer() == null) return; + renderConnectorInternal(node, context); + } + + private void renderConnectorInternal(UiNode node, UiRenderContext context) { + UiBounds bounds = node.bounds(); + UiProps props = node.props(); + UiStyle style = node.style(); + Renderer2D renderer = context.renderer(); + float alpha = context.alpha(); + String type = props.string("connector", "line").toLowerCase(Locale.ROOT); + int stroke = UiShapeContext.color(props.get("stroke"), style.strokeColor() != null ? style.strokeColor() : 0xFFFFFFFF, alpha); + float thickness = props.number("strokeWidth", Math.max(1.0f, style.strokeWidth())); + boolean gradient = props.get("startColor") != null || props.get("endColor") != null + || props.get("strokeStartColor") != null || props.get("strokeEndColor") != null; + int start = UiShapeContext.color(props.get("startColor"), UiShapeContext.color(props.get("strokeStartColor"), stroke, alpha), alpha); + int end = UiShapeContext.color(props.get("endColor"), UiShapeContext.color(props.get("strokeEndColor"), stroke, alpha), alpha); + double x1 = bounds.x() + props.number("x1", 0.0f); + double y1 = bounds.y() + props.number("y1", bounds.height() * 0.5f); + double x2 = bounds.x() + props.number("x2", bounds.width()); + double y2 = bounds.y() + props.number("y2", bounds.height() * 0.5f); + + switch (type) { + case "rounded-edge", "rounded_edge", "rounded-line", "rounded_line" -> renderRoundedConnector( + renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.LINE); + case "rounded-node-edge", "rounded_node_edge", "rounded-edge-bezier", "rounded_edge_bezier" -> renderRoundedConnector( + renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.NODE_EDGE); + case "rounded-orthogonal", "rounded_orthogonal", "rounded-orthogonal-connector", + "rounded_orthogonal_connector" -> renderRoundedConnector( + renderer, bounds, props, thickness, stroke, gradient, start, end, RoundedConnectorMode.ORTHOGONAL); + case "cable" -> renderCable(renderer, props, x1, y1, x2, y2, thickness, stroke, gradient, start, end, alpha); + case "bezier", "bezier-connector", "bezier_connector" -> { + double cx1 = bounds.x() + props.number("cx1", props.number("x1", 0.0f) + bounds.width() * 0.33f); + double cy1 = bounds.y() + props.number("cy1", props.number("y1", bounds.height() * 0.5f)); + double cx2 = bounds.x() + props.number("cx2", props.number("x2", bounds.width()) - bounds.width() * 0.33f); + double cy2 = bounds.y() + props.number("cy2", props.number("y2", bounds.height() * 0.5f)); + int segments = (int) props.number("segments", 20.0f); + if (gradient) renderer.bezierConnectorGradient(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, thickness, start, end); + else renderer.bezierConnector(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, thickness, stroke); + } + case "orthogonal", "orthogonal-connector", "orthogonal_connector" -> { + double midX = bounds.x() + props.number("midX", bounds.width() * 0.5f); + if (gradient) renderer.orthogonalConnectorGradient(x1, y1, x2, y2, midX, thickness, start, end); + else renderer.orthogonalConnector(x1, y1, x2, y2, midX, thickness, stroke); + } + case "node-edge", "node_edge", "edge" -> { + if (gradient) renderer.nodeGraphEdgeGradient(x1, y1, x2, y2, thickness, start, end); + else renderer.nodeGraphEdge(x1, y1, x2, y2, thickness, stroke); + } + case "spline" -> { + int count = readPoints(props.get("points"), bounds.x(), bounds.y()); + if (count >= 2) { + if (gradient) renderer.splineGradient(points, count, thickness, props.bool("closed", false), start, end); + else renderer.spline(points, count, thickness, props.bool("closed", false), stroke); + } + } + case "wire" -> { + if (gradient) renderer.wireGradient(x1, y1, x2, y2, thickness, start, end); + else renderer.wire(x1, y1, x2, y2, thickness, stroke); + } + default -> { + if (gradient) renderer.connectorGradient(x1, y1, x2, y2, thickness, start, end); + else renderer.connector(x1, y1, x2, y2, thickness, stroke); + } + } + } + + private static void renderCable(Renderer2D renderer, UiProps props, double x1, double y1, double x2, double y2, + float thickness, int stroke, boolean gradient, int start, int end, float alpha) { + if (gradient) { + renderer.cableGradient(x1, y1, x2, y2, thickness, + UiShapeContext.color(props.get("outerStartColor"), UiShapeContext.darken(start, 0.35f), alpha), + UiShapeContext.color(props.get("outerEndColor"), UiShapeContext.darken(end, 0.35f), alpha), + UiShapeContext.color(props.get("innerStartColor"), start, alpha), + UiShapeContext.color(props.get("innerEndColor"), end, alpha)); + } else { + renderer.cable(x1, y1, x2, y2, thickness, + UiShapeContext.color(props.get("outer"), UiShapeContext.darken(stroke, 0.35f), alpha), + UiShapeContext.color(props.get("inner"), stroke, alpha)); + } + } + + private static void renderRoundedConnector(Renderer2D renderer, UiBounds bounds, UiProps props, + double thickness, int stroke, boolean gradient, + int start, int end, RoundedConnectorMode mode) { + double sx = bounds.x() + props.number("sourceX", props.number("x1", 0.0f)); + double sy = bounds.y() + props.number("sourceY", props.number("y1", 0.0f)); + double sw = props.number("sourceWidth", props.number("sourceW", 1.0f)); + double sh = props.number("sourceHeight", props.number("sourceH", 1.0f)); + double sr = props.number("sourceRadius", 0.0f); + double tx = bounds.x() + props.number("targetX", props.number("x2", bounds.width())); + double ty = bounds.y() + props.number("targetY", props.number("y2", 0.0f)); + double tw = props.number("targetWidth", props.number("targetW", 1.0f)); + double th = props.number("targetHeight", props.number("targetH", 1.0f)); + double tr = props.number("targetRadius", 0.0f); + + switch (mode) { + case NODE_EDGE -> { + if (gradient) + renderer.roundedRectNodeGraphEdgeGradient(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, start, end); + else renderer.roundedRectNodeGraphEdge(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, stroke); + } + case ORTHOGONAL -> { + double midX = bounds.x() + props.number("midX", bounds.width() * 0.5f); + if (gradient) + renderer.roundedRectOrthogonalConnectorGradient(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, midX, thickness, start, end); + else renderer.roundedRectOrthogonalConnector(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, midX, thickness, stroke); + } + default -> { + if (gradient) + renderer.roundedRectConnectorGradient(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, start, end); + else renderer.roundedRectConnector(sx, sy, sw, sh, sr, tx, ty, tw, th, tr, thickness, stroke); + } + } + } + + private int readPoints(Object value, double offsetX, double offsetY) { + int count = 0; + if (value instanceof Iterable iterable) { + for (Object item : iterable) { + if (count >= points.length / 2) break; + if (item instanceof Map map) { + points[count * 2] = offsetX + UiShapeProps.number(map.get("x"), 0.0f); + points[count * 2 + 1] = offsetY + UiShapeProps.number(map.get("y"), 0.0f); + count++; + } else if (item instanceof Number) { + break; + } + } + if (count == 0) { + double pendingX = Double.NaN; + for (Object item : iterable) { + if (!(item instanceof Number n)) continue; + if (Double.isNaN(pendingX)) { + pendingX = n.doubleValue(); + } else { + if (count >= points.length / 2) break; + points[count * 2] = offsetX + pendingX; + points[count * 2 + 1] = offsetY + n.doubleValue(); + count++; + pendingX = Double.NaN; + } + } + } + } + return count; + } + + private enum RoundedConnectorMode { + LINE, + NODE_EDGE, + ORTHOGONAL + } +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiRenderer.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiRenderer.java index ae62f99..b7a9cde 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiRenderer.java @@ -5,19 +5,25 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetRef; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetRegistry; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.registry.UiAssetRegistry; import dev.loki.lovisual.render.engine.renderer.ui.runtime.asset.UiAssetResolver; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNode; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeType; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiColor; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNode; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiColor; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; -import dev.loki.lovisual.render.engine.text.TextEffectSpec; +import dev.loki.lovisual.render.engine.text.command.TextEffectSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge.UiClipStack; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge.UiImageRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge.UiItemRendererBridge; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.context.UiRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiPrimitiveRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiTextRenderer; public final class UiRenderer { private final UiTextRenderer textRenderer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextEffectRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextEffectRenderer.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextEffectRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextEffectRenderer.java index de3ee8c..68182b8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextEffectRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextEffectRenderer.java @@ -5,11 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render; -import dev.loki.lovisual.render.engine.text.Font; -import dev.loki.lovisual.render.engine.text.TextEffectSpec; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.command.TextEffectSpec; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public enum UiTextEffectRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextRenderer.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextRenderer.java index 8fff46a..cce623d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/UiTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/render/render/UiTextRenderer.java @@ -5,17 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.render; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; -import dev.loki.lovisual.render.engine.text.VanillaTextRenderer; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextEffectSpec; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.VanillaTextRenderer; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.command.TextEffectSpec; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.render.UiTextEffectRenderer; public final class UiTextRenderer { private static final int WIDTH_CACHE_LIMIT = 1024; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetNativeResourceLoader.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetNativeResourceLoader.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetNativeResourceLoader.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetNativeResourceLoader.java index 7cbc1a9..2378c44 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetNativeResourceLoader.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetNativeResourceLoader.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine; import com.caoccao.javet.enums.JSRuntimeType; import com.caoccao.javet.interop.loader.IJavetLibLoadingListener; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetUiScriptEngine.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetUiScriptEngine.java index d6c65f8..d1f6437 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/JavetUiScriptEngine.java @@ -5,19 +5,30 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Host; import com.caoccao.javet.interop.V8Runtime; import com.caoccao.javet.interop.converters.JavetObjectConverter; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.JavetNativeResourceLoader; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.UiScriptEngine; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry.UiScriptModuleTransform; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry.UiTypeScriptStripper; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptObjectConverter; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderResult; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeSource; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptSourceKind; public final class JavetUiScriptEngine implements UiScriptEngine { private static final String BOOTSTRAP_SOURCE = """ @@ -130,7 +141,8 @@ public final class JavetUiScriptEngine implements UiScriptEngine { return map; } - static Object plainValue(Object value) { + public static Object plainValue(Object value) { + if (value instanceof Map rawMap) { Map map = new LinkedHashMap<>(rawMap.size()); for (Map.Entry entry : rawMap.entrySet()) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngine.java similarity index 58% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngine.java index ac1e04f..c4e5a5a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngine.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderResult; public interface UiScriptEngine extends AutoCloseable { UiScriptRenderResult render(UiScriptModule module, UiScriptRenderContext context); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngineProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngineProvider.java similarity index 65% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngineProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngineProvider.java index cad448c..31bb746 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptEngineProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/engine/UiScriptEngineProvider.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.JavetUiScriptEngine; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.UiScriptEngine; public enum UiScriptEngineProvider { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModule.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModule.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModule.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModule.java index cdc63d9..ddc004c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModule.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModule.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptSourceKind; public record UiScriptModule(UiScriptModuleId id, UiScriptSourceKind sourceKind, String source, UiProps metadata) { public UiScriptModule(UiScriptModuleId id, String source, UiProps metadata) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleHandle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleHandle.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleHandle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleHandle.java index 8207c5d..948f926 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleHandle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleHandle.java @@ -5,13 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module; import net.minecraft.server.packs.resources.ResourceManager; import dev.loki.lovisual.util.logging.DebugLog; import java.nio.charset.StandardCharsets; import java.util.zip.CRC32; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleLoader; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; public final class UiScriptModuleHandle { private final UiScriptModuleId id; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleId.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleId.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleId.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleId.java index 4c430f9..cd20562 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleId.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleId.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleLoader.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleLoader.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleLoader.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleLoader.java index afe6319..0b09625 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleLoader.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/module/UiScriptModuleLoader.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; -import dev.loki.lovisual.config.ConfigPaths; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.config.io.ConfigPaths; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -21,6 +21,9 @@ import java.nio.file.Path; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptSourceKind; public final class UiScriptModuleLoader { private static final Pattern IMPORT_PATTERN = Pattern.compile("(?m)^\\s*import\\s+[^;]*?from\\s+['\"]([^'\"]+)['\"]\\s*;?\\s*$|^\\s*import\\s+['\"]([^'\"]+)['\"]\\s*;?\\s*$"); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiBoundsPatchSet.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiBoundsPatchSet.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiBoundsPatchSet.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiBoundsPatchSet.java index dec1ead..c989711 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiBoundsPatchSet.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiBoundsPatchSet.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptColor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptColor.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptColor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptColor.java index e49d57d..7b6958d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptColor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptColor.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch; /** Utility color helpers shared by Java-side UI script patch builders. */ public final class UiScriptColor { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptComponent.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptComponent.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptComponent.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptComponent.java index 82a2f4e..11f70e8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptComponent.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptComponent.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderContext; public interface UiScriptComponent { UiNodeSpec render(UiScriptRenderContext context); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptPatchSet.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptPatchSet.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptPatchSet.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptPatchSet.java index e9f813a..c3bdb0b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptPatchSet.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/patch/UiScriptPatchSet.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.patch; import java.util.LinkedHashMap; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleRegistry.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleRegistry.java index c12d9bc..830327d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleRegistry.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry; import net.minecraft.server.packs.resources.ResourceManager; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; public final class UiScriptModuleRegistry { private final Map handles = new LinkedHashMap<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleTransform.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleTransform.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleTransform.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleTransform.java index d1deba9..bcbc4ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptModuleTransform.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiScriptModuleTransform.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry; public enum UiScriptModuleTransform { ; - static String toExecutableScript(String source) { + public static String toExecutableScript(String source) { + String out = source != null ? source : ""; out = out.replaceAll("(?m)^\\s*import\\s+[^;]+;?\\s*$", ""); out = out.replace("export default", "globalThis.__ui_default ="); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiTypeScriptStripper.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiTypeScriptStripper.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiTypeScriptStripper.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiTypeScriptStripper.java index 61ba629..2ca31f2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiTypeScriptStripper.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/registry/UiTypeScriptStripper.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.registry; public enum UiTypeScriptStripper { ; - static String strip(String source) { + public static String strip(String source) { + String out = source != null ? source : ""; out = out.replaceAll("(?m)^\\s*import\\s+type\\s+[^;]+;?\\s*$", ""); out = out.replaceAll("(?m)^\\s*export\\s+type\\s+[^;]+;?\\s*$", ""); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptObjectConverter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptObjectConverter.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptObjectConverter.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptObjectConverter.java index fd4f491..f00094b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptObjectConverter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptObjectConverter.java @@ -5,11 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeType; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeType; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptProps.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptProps.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptProps.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptProps.java index 9b14aa2..5d81af1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptProps.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptProps.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render; import java.util.LinkedHashMap; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderContext.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderContext.java index 8a9c887..e464bcd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderContext.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; public record UiScriptRenderContext( long frame, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderResult.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderResult.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderResult.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderResult.java index bae083c..85be6ea 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRenderResult.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/render/UiScriptRenderResult.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; public record UiScriptRenderResult(UiNodeSpec root, UiScriptRuntimeError error) { public static UiScriptRenderResult ok(UiNodeSpec root) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/CachedUiScriptRuntime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/CachedUiScriptRuntime.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/CachedUiScriptRuntime.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/CachedUiScriptRuntime.java index d683927..f52065a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/CachedUiScriptRuntime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/CachedUiScriptRuntime.java @@ -5,17 +5,24 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime; import java.util.LinkedHashMap; import net.minecraft.util.Util; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiBounds; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiProps; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiRuntime; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiProps; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.runtime.UiRuntime; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.Map; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.UiScriptEngine; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.UiScriptEngineProvider; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModule; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleHandle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderContext; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.render.UiScriptRenderResult; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime.UiScriptRuntimeError; /** * Caches script output as runtime trees. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeError.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeError.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeError.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeError.java index 17e0391..555fa7f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeError.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeError.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime; import java.io.PrintWriter; import java.io.StringWriter; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.module.UiScriptModuleId; public record UiScriptRuntimeError(UiScriptModuleId moduleId, String phase, String message, Throwable cause) { public UiScriptRuntimeError { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeSource.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeSource.java index 7aefb4f..16965dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptRuntimeSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptRuntimeSource.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime; public enum UiScriptRuntimeSource { ; - static final String UI_FACTORY = """ + public static final String UI_FACTORY = """ + (() => { function normalize(type, init) { const { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptSourceKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptSourceKind.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptSourceKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptSourceKind.java index 3e32dd7..4806b62 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/UiScriptSourceKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/runtime/UiScriptSourceKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.script; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.script.runtime; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyle.java index 85ed240..6b2012a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyle.java @@ -6,9 +6,13 @@ */ package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiAlign; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiJustify; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiOverflow; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiBlendSpec; -import dev.loki.lovisual.render.engine.text.FontInfo; + +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge.UiBlendSpec; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public final class UiStyle { public static final UiStyle DEFAULT = builder().build(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleCache.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleCache.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleCache.java index 8f5c4db..6099d63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleCache.java @@ -5,7 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse.UiStyleParser; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiThemeRegistry; + import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleParser.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleParser.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleParser.java index 562981c..a2e5de7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleParser.java @@ -5,11 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiAlign; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiColor; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiJustify; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiOverflow; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token.UiStyleToken; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiThemeRegistry; + import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.UiBlendSpec; -import dev.loki.lovisual.render.engine.text.FontInfo; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.render.bridge.UiBlendSpec; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; import java.util.List; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleResolver.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleResolver.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleResolver.java index 7a8aad4..d71964b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/parse/UiStyleResolver.java @@ -5,9 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.UiStyle; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.parse.UiStyleCache; -import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.UiNodeSpec; + +import dev.loki.lovisual.render.engine.renderer.ui.runtime.core.node.UiNodeSpec; public final class UiStyleResolver { private final UiStyleCache cache; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiColor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiColor.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiColor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiColor.java index c736d75..dc1b982 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiColor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiColor.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme; public enum UiColor { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiTheme.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiTheme.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiTheme.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiTheme.java index 08dfafc..2b0dcca 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiTheme.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiTheme.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiThemeRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiThemeRegistry.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiThemeRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiThemeRegistry.java index f4cecda..68d43ad 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiThemeRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/theme/UiThemeRegistry.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.style.theme.UiTheme; + public enum UiThemeRegistry { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiAlign.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiAlign.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiAlign.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiAlign.java index bb781eb..59ffc71 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiAlign.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiAlign.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiJustify.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiJustify.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiJustify.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiJustify.java index d061c96..e40e5ad 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiJustify.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiJustify.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiOverflow.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiOverflow.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiOverflow.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiOverflow.java index fb2a5b6..2b9e71a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiOverflow.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiOverflow.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleToken.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiStyleToken.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleToken.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiStyleToken.java index bb389cb..c9327a9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/UiStyleToken.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/style/token/UiStyleToken.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer.ui.runtime.style; +package dev.loki.lovisual.render.engine.renderer.ui.runtime.style.token; public record UiStyleToken(String raw, String variant, String name, String value) { public static UiStyleToken parse(String raw) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarp.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarp.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarp.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarp.java index bee2a4c..1396c95 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarp.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarp.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer; +package dev.loki.lovisual.render.engine.renderer.warp; import dev.loki.lovisual.features.gui.hud.draggable.impl.metrics.Coordinates; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarpStack.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarpStack.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarpStack.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarpStack.java index fb2b959..032f661 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/RenderWarpStack.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/renderer/warp/RenderWarpStack.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.renderer; +package dev.loki.lovisual.render.engine.renderer.warp; /** * Thread-local stack for screen-space UI warp while emitting 2D meshes. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/SodiumGlBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/SodiumGlBackend.java index 105aca7..3ec9314 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/SodiumGlBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/SodiumGlBackend.java @@ -11,14 +11,35 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.systems.RenderPass; import com.mojang.blaze3d.systems.RenderSystem; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.rhi.*; +import dev.loki.lovisual.render.engine.rhi.backend.SodiumGlBackend; +import dev.loki.lovisual.render.engine.rhi.backend.gl.clip.GlStencilShapeClipBackend; +import dev.loki.lovisual.render.engine.rhi.backend.gl.state.SodiumGlPipelineStateBackend; +import dev.loki.lovisual.render.engine.rhi.blit.Blaze3dTextureBlitter; +import dev.loki.lovisual.render.engine.rhi.blit.TextureBlitter; +import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiSamplerBinding; +import dev.loki.lovisual.render.engine.rhi.command.RhiUniformBinding; +import dev.loki.lovisual.render.engine.rhi.fullscreen.Blaze3dFullscreenBackend; +import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; +import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; +import dev.loki.lovisual.render.engine.rhi.msaa.SodiumGlMsaaControl; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.state.PipelineStateBackend; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStats; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dDynamicMeshBackend; +import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; import net.minecraft.client.Minecraft; import org.joml.Matrix4f; import org.joml.Matrix4fStack; import org.joml.Vector4f; import org.joml.Vector4fc; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.rhi.backend.gl.clip.GlStencilShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.backend.gl.state.SodiumGlPipelineStateBackend; import dev.loki.lovisual.render.engine.rhi.blit.Blaze3dTextureBlitter; @@ -28,12 +49,12 @@ import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; import dev.loki.lovisual.render.engine.rhi.fullscreen.Blaze3dFullscreenBackend; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; import dev.loki.lovisual.render.engine.rhi.msaa.SodiumGlMsaaControl; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; import dev.loki.lovisual.render.engine.rhi.state.PipelineStateBackend; import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; -import dev.loki.lovisual.render.engine.rhi.upload.Blaze3dDynamicMeshBackend; -import dev.loki.lovisual.render.engine.uniform.impl.MeshUniforms; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dDynamicMeshBackend; +import dev.loki.lovisual.render.engine.uniform.impl.world.MeshUniforms; import java.util.OptionalDouble; import java.util.OptionalInt; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/GlBackendAccess.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/GlBackendAccess.java index 57a923b..13b87e4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/GlBackendAccess.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/GlBackendAccess.java @@ -11,7 +11,7 @@ import com.mojang.blaze3d.systems.GpuDevice; import com.mojang.blaze3d.systems.GpuDeviceBackend; import com.mojang.blaze3d.systems.RenderSystem; import org.jetbrains.annotations.Nullable; -import dev.loki.lovisual.mixininterface.IGlBackendInfo; +import dev.loki.lovisual.mixininterface.device.IGlBackendInfo; import dev.loki.lovisual.mixins.accessors.blaze3d.GpuDeviceAccessor; public enum GlBackendAccess { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilFramebufferSupport.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilFramebufferSupport.java index 5a91f4b..5891183 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilFramebufferSupport.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilFramebufferSupport.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.render.engine.rhi.backend.gl.clip; +import dev.loki.lovisual.render.engine.texture.Texture; + import com.mojang.blaze3d.opengl.FrameBufferAttachment; import com.mojang.blaze3d.opengl.GlConst; @@ -16,7 +18,7 @@ import com.mojang.blaze3d.textures.GpuTextureView; import net.minecraft.client.Minecraft; import org.jetbrains.annotations.Nullable; import org.lwjgl.opengl.*; -import dev.loki.lovisual.mixininterface.IGlBackendInfo; +import dev.loki.lovisual.mixininterface.device.IGlBackendInfo; import dev.loki.lovisual.render.engine.msaa.MsaaTextureRegistry; import dev.loki.lovisual.render.engine.rhi.backend.gl.GlBackendAccess; import dev.loki.lovisual.util.logging.DebugLog; @@ -25,6 +27,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import dev.loki.lovisual.render.engine.rhi.backend.gl.clip.GlStencilShapeClipBackend; /** * GL-only runtime stencil attachment/probe for Mojang framebuffers. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilShapeClipBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilShapeClipBackend.java index 99c7d9a..9f74180 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilShapeClipBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/clip/GlStencilShapeClipBackend.java @@ -15,6 +15,7 @@ import org.lwjgl.opengl.GL20C; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.engine.rhi.backend.gl.clip.GlStencilFramebufferSupport; /** * GL implementation of shape clipping using a render-pass-bound stencil attachment. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/state/SodiumGlPipelineStateBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/state/SodiumGlPipelineStateBackend.java index 1d813a4..c167886 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/state/SodiumGlPipelineStateBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/gl/state/SodiumGlPipelineStateBackend.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine.rhi.backend.gl.state; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/LoVisualVulkanBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/LoVisualVulkanBackend.java index a636f4c..cba5e82 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/LoVisualVulkanBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/LoVisualVulkanBackend.java @@ -11,14 +11,35 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.systems.RenderPass; import com.mojang.blaze3d.systems.RenderSystem; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.rhi.*; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.LoVisualVulkanBackend; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanShapeClipBackend; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.msaa.VulkanMsaaControl; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.state.VulkanPipelineStateBackend; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; +import dev.loki.lovisual.render.engine.rhi.blit.Blaze3dTextureBlitter; +import dev.loki.lovisual.render.engine.rhi.blit.TextureBlitter; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiSamplerBinding; +import dev.loki.lovisual.render.engine.rhi.command.RhiUniformBinding; +import dev.loki.lovisual.render.engine.rhi.fullscreen.Blaze3dFullscreenBackend; +import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; +import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.state.PipelineStateBackend; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStats; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dDynamicMeshBackend; +import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; import net.minecraft.client.Minecraft; import org.joml.Matrix4f; import org.joml.Matrix4fStack; import org.joml.Vector4f; import org.joml.Vector4fc; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.msaa.VulkanMsaaControl; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.state.VulkanPipelineStateBackend; @@ -28,12 +49,12 @@ import dev.loki.lovisual.render.engine.rhi.blit.TextureBlitter; import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; import dev.loki.lovisual.render.engine.rhi.fullscreen.Blaze3dFullscreenBackend; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; import dev.loki.lovisual.render.engine.rhi.state.PipelineStateBackend; import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; -import dev.loki.lovisual.render.engine.rhi.upload.Blaze3dDynamicMeshBackend; -import dev.loki.lovisual.render.engine.uniform.impl.MeshUniforms; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dDynamicMeshBackend; +import dev.loki.lovisual.render.engine.uniform.impl.world.MeshUniforms; import java.util.Optional; import java.util.OptionalDouble; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBackend.java index 141c343..aa09827 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBackend.java @@ -14,6 +14,8 @@ import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderState import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanShapeClipBridge; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanStencilAttachmentManager; /** * Vulkan implementation of LoVisual shape clipping using an injected S8 dynamic-rendering attachment. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBridge.java index 58277bd..00c98ce 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/clip/VulkanShapeClipBridge.java @@ -11,6 +11,8 @@ import com.mojang.blaze3d.systems.RenderPassDescriptor; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.clip.VulkanStencilAttachmentManager; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; /** * Static entry used by Vulkan mixins without reaching through LoVisualRenderSystem repeatedly. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaControl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaControl.java index 1eb17c7..f813ade 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaControl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaControl.java @@ -15,10 +15,11 @@ import com.mojang.blaze3d.systems.RenderPass; import com.mojang.blaze3d.systems.RenderPassDescriptor; import com.mojang.blaze3d.textures.GpuTexture; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.mixininterface.IMsaaTexture; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.msaa.VulkanMsaaResolveBridge; /** * Vulkan implementation of LoVisual MSAA allocation and dynamic-rendering resolve. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaResolveBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaResolveBridge.java index f33ebd4..65d9376 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaResolveBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/msaa/VulkanMsaaResolveBridge.java @@ -14,7 +14,7 @@ import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.vulkan.VulkanGpuTextureView; import org.lwjgl.vulkan.VkRenderingAttachmentInfo; import org.lwjgl.vulkan.VkRenderingInfo; -import dev.loki.lovisual.mixininterface.IMsaaTexture; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRenderStateBridge; import java.util.IdentityHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/state/VulkanPipelineStateBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/state/VulkanPipelineStateBackend.java index 05ee86c..30bbfdc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/state/VulkanPipelineStateBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/state/VulkanPipelineStateBackend.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine.rhi.backend.vulkan.state; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/util/VulkanRenderStateBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/util/VulkanRenderStateBridge.java index daccd57..5bd3c44 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/util/VulkanRenderStateBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/backend/vulkan/util/VulkanRenderStateBridge.java @@ -11,14 +11,15 @@ import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.systems.RenderPassDescriptor; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.mixininterface.IRenderPipeline; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.mixininterface.render.IRenderPipeline; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; import dev.loki.lovisual.util.logging.DebugLog; import java.util.List; import static org.lwjgl.vulkan.VK12.*; +import dev.loki.lovisual.render.engine.rhi.backend.vulkan.util.VulkanRuntimeGuards; /** * Vulkan-side fixed pipeline state bridge for LoVisual's GL-era dynamic state. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/blit/Blaze3dTextureBlitter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/blit/Blaze3dTextureBlitter.java index 962e18f..41b6768 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/blit/Blaze3dTextureBlitter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/blit/Blaze3dTextureBlitter.java @@ -10,7 +10,8 @@ package dev.loki.lovisual.render.engine.rhi.blit; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuTexture; import com.mojang.blaze3d.textures.GpuTextureView; -import dev.loki.lovisual.render.engine.rhi.RhiStats; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStats; +import dev.loki.lovisual.render.engine.rhi.blit.TextureBlitter; public final class Blaze3dTextureBlitter implements TextureBlitter { private final RhiStats stats; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/clip/ShapeClipBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/clip/ShapeClipBackend.java index ef002f0..ab1c763 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/clip/ShapeClipBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/clip/ShapeClipBackend.java @@ -10,6 +10,7 @@ package dev.loki.lovisual.render.engine.rhi.clip; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; +import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipRenderPassContract; /** * Backend-neutral hard shape clipping contract. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/FullscreenDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/FullscreenDrawCommand.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/FullscreenDrawCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/FullscreenDrawCommand.java index ec6706f..37f9284 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/FullscreenDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/FullscreenDrawCommand.java @@ -5,19 +5,21 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.command; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineSpec; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.RenderPipelineSpec; import java.util.ArrayList; import java.util.List; import java.util.OptionalInt; +import dev.loki.lovisual.render.engine.rhi.command.RhiSamplerBinding; +import dev.loki.lovisual.render.engine.rhi.command.RhiUniformBinding; public final class FullscreenDrawCommand { public final String label; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiDrawCommand.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiDrawCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiDrawCommand.java index da3c2b5..ab1df50 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiDrawCommand.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.command; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.pipeline.RenderPipeline; @@ -13,13 +13,16 @@ import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineSpec; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.RenderPipelineSpec; import java.util.ArrayList; import java.util.List; import java.util.OptionalDouble; import java.util.OptionalInt; +import dev.loki.lovisual.render.engine.rhi.command.RhiSamplerBinding; +import dev.loki.lovisual.render.engine.rhi.command.RhiUniformBinding; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; public final class RhiDrawCommand { public final String label; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiSamplerBinding.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiSamplerBinding.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiSamplerBinding.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiSamplerBinding.java index 35bb2db..7b34777 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiSamplerBinding.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiSamplerBinding.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.command; import com.mojang.blaze3d.textures.GpuSampler; import com.mojang.blaze3d.textures.GpuTextureView; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiUniformBinding.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiUniformBinding.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiUniformBinding.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiUniformBinding.java index 611f99c..8dfaa94 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiUniformBinding.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/command/RhiUniformBinding.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.command; import com.mojang.blaze3d.buffers.GpuBufferSlice; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/Blaze3dFullscreenBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/Blaze3dFullscreenBackend.java index b16d388..0f6a37f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/Blaze3dFullscreenBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/Blaze3dFullscreenBackend.java @@ -10,11 +10,12 @@ package dev.loki.lovisual.render.engine.rhi.fullscreen; import com.mojang.blaze3d.buffers.GpuBuffer; import com.mojang.blaze3d.systems.RenderSystem; import org.lwjgl.BufferUtils; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.MeshOwnership; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.MeshOwnership; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; /** * Persistent fullscreen quad mesh owned by Blaze3D GPU buffers. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/FullscreenBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/FullscreenBackend.java index af07686..4600284 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/FullscreenBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/fullscreen/FullscreenBackend.java @@ -8,7 +8,7 @@ package dev.loki.lovisual.render.engine.rhi.fullscreen; import com.mojang.blaze3d.buffers.GpuBuffer; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; public interface FullscreenBackend extends AutoCloseable { void ensureInitialized(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/msaa/SodiumGlMsaaControl.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/msaa/SodiumGlMsaaControl.java index 59b608e..dc3d8d6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/msaa/SodiumGlMsaaControl.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/msaa/SodiumGlMsaaControl.java @@ -19,8 +19,8 @@ import net.minecraft.resources.Identifier; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL32; -import dev.loki.lovisual.mixininterface.IGlBackendInfo; -import dev.loki.lovisual.mixininterface.IMsaaTexture; +import dev.loki.lovisual.mixininterface.device.IGlBackendInfo; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; import dev.loki.lovisual.mixins.accessors.blaze3d.GlTextureInvoker; import dev.loki.lovisual.render.engine.msaa.MsaaTextureRegistry; import dev.loki.lovisual.render.engine.msaa.MsaaWorldTarget; @@ -30,6 +30,7 @@ import dev.loki.lovisual.util.logging.DebugLog; import static org.lwjgl.opengl.GL11C.glDisable; import static org.lwjgl.opengl.GL11C.glEnable; import static org.lwjgl.opengl.GL13C.GL_SAMPLE_ALPHA_TO_COVERAGE; +import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; /** * Current MSAA implementation for the GL/Sodium backend. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/BlendPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/BlendPolicy.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/BlendPolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/BlendPolicy.java index 48f46c9..585ce15 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/BlendPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/BlendPolicy.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.depth; public enum BlendPolicy { OPAQUE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/CullPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/CullPolicy.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/CullPolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/CullPolicy.java index 8dc031a..cff5a1c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/CullPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/CullPolicy.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.depth; public enum CullPolicy { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/DepthPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/DepthPolicy.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/DepthPolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/DepthPolicy.java index 3bb135f..5fdca68 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/DepthPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/DepthPolicy.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.depth; public enum DepthPolicy { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/FogPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/FogPolicy.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/FogPolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/FogPolicy.java index 4d3912c..48eca63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/FogPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/depth/FogPolicy.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.depth; public enum FogPolicy { NONE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/RenderPipelineRegistry.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/RenderPipelineRegistry.java index e738e5e..de8a158 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/RenderPipelineRegistry.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.layout; import com.mojang.blaze3d.pipeline.RenderPipeline; import com.mojang.blaze3d.vertex.VertexFormat; @@ -15,6 +15,12 @@ import java.util.Collection; import java.util.IdentityHashMap; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.DepthPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.VertexLayoutSpec; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineDomain; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineKey; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineMetadata; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.RenderPipelineSpec; /** * Central metadata registry for all LoVisual render pipelines. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/UniformLayoutSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/UniformLayoutSpec.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/UniformLayoutSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/UniformLayoutSpec.java index 750d10e..2eb0a40 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/UniformLayoutSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/UniformLayoutSpec.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.layout; import java.util.LinkedHashSet; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/VertexLayoutSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/VertexLayoutSpec.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/VertexLayoutSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/VertexLayoutSpec.java index 812218f..15c4a88 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/VertexLayoutSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/layout/VertexLayoutSpec.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.layout; import com.mojang.blaze3d.vertex.VertexFormat; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineDomain.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineDomain.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineDomain.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineDomain.java index 6500b9f..ef82e63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineDomain.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineDomain.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.pipeline; /** * High-level render domain used by pass compilers and profilers. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineKey.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineKey.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineKey.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineKey.java index b3d3937..396e431 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineKey.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineKey.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.pipeline; import com.mojang.blaze3d.pipeline.RenderPipeline; import net.minecraft.resources.Identifier; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineMetadata.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineMetadata.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineMetadata.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineMetadata.java index f53480d..b6c00e0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/PipelineMetadata.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/PipelineMetadata.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.pipeline; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineDomain; /** * Metadata used by compilers/backends instead of native RenderPipeline identity checks. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/RenderPipelineSpec.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/RenderPipelineSpec.java index cfbceae..56fbdb0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/RenderPipelineSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/pipeline/pipeline/RenderPipelineSpec.java @@ -5,9 +5,18 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.pipeline; +package dev.loki.lovisual.render.engine.rhi.pipeline.pipeline; -import dev.loki.lovisual.render.engine.core.RenderPhase; +import dev.loki.lovisual.render.engine.core.frame.RenderPhase; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.BlendPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.CullPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.DepthPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.FogPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.UniformLayoutSpec; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.VertexLayoutSpec; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineDomain; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineKey; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.PipelineMetadata; /** * Backend-neutral pipeline policy. Native RenderPipeline still exists in the SodiumGL backend era, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/GpuMeshHandle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GpuMeshHandle.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/GpuMeshHandle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GpuMeshHandle.java index 5da4df3..e2144bc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/GpuMeshHandle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GpuMeshHandle.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.resource; import com.mojang.blaze3d.IndexType; import com.mojang.blaze3d.buffers.GpuBuffer; import com.mojang.blaze3d.systems.RenderPass; import org.jetbrains.annotations.Nullable; +import dev.loki.lovisual.render.engine.rhi.resource.MeshOwnership; /** * GPU mesh range prepared by LoVisualRHI. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/LoVisualRhi.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/LoVisualRhi.java similarity index 73% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/LoVisualRhi.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/LoVisualRhi.java index 97f3a6a..00b9ebd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/LoVisualRhi.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/LoVisualRhi.java @@ -5,16 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.resource; import dev.loki.lovisual.render.engine.rhi.blit.TextureBlitter; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.render.engine.rhi.fullscreen.FullscreenBackend; import dev.loki.lovisual.render.engine.rhi.msaa.MsaaControl; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.resource.RenderResourceManager; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; import dev.loki.lovisual.render.engine.rhi.state.PipelineStateBackend; import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; +import dev.loki.lovisual.render.engine.rhi.command.FullscreenDrawCommand; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStats; public interface LoVisualRhi extends AutoCloseable { DynamicMeshBackend dynamicMeshes(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/MeshOwnership.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/MeshOwnership.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/MeshOwnership.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/MeshOwnership.java index 7476feb..bd6969b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/MeshOwnership.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/MeshOwnership.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.resource; public enum MeshOwnership { /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasManager.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasManager.java index ccf3637..8de9e99 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasManager.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.atlas; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.text.backend.atlas.GlyphAtlasPage; /** * Resource-owned glyph atlas registry and dirty-upload stats. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasPage.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasPage.java similarity index 69% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasPage.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasPage.java index ffc6a50..2148e8b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/GlyphAtlasPage.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/atlas/GlyphAtlasPage.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.atlas; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; public record GlyphAtlasPage(String id, Texture texture, int width, int height, boolean msdf) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FrameResourceRetirementQueue.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/FrameResourceRetirementQueue.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FrameResourceRetirementQueue.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/FrameResourceRetirementQueue.java index 9080f84..541536c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FrameResourceRetirementQueue.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/FrameResourceRetirementQueue.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.manager; import java.util.ArrayDeque; import java.util.Queue; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceManager.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceManager.java index a5c9e5c..93c25a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceManager.java @@ -5,10 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.manager; import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.textures.GpuTexture; +import dev.loki.lovisual.render.engine.rhi.resource.atlas.GlyphAtlasManager; +import dev.loki.lovisual.render.engine.rhi.resource.manager.FrameResourceRetirementQueue; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceStatsSnapshot; +import dev.loki.lovisual.render.engine.rhi.resource.manager.ResourceLeakTracker; +import dev.loki.lovisual.render.engine.rhi.resource.pool.FramebufferPool; +import dev.loki.lovisual.render.engine.rhi.resource.pool.SamplerCache; +import dev.loki.lovisual.render.engine.rhi.resource.pool.TexturePool; /** * Single lifecycle owner for LoVisual render resources. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceStatsSnapshot.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceStatsSnapshot.java index d3e2b6c..6ea4fd8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/RenderResourceStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/RenderResourceStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.manager; public record RenderResourceStatsSnapshot( long frameId, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/ResourceLeakTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/ResourceLeakTracker.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/ResourceLeakTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/ResourceLeakTracker.java index a3effc6..24db858 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/ResourceLeakTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/manager/ResourceLeakTracker.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.manager; import java.util.Collections; import java.util.IdentityHashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferDescriptor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferDescriptor.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferDescriptor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferDescriptor.java index a70881e..4d6e88b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferDescriptor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferDescriptor.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.pool; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; /** * Stable descriptor for framebuffer resources owned by RenderResourceManager. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferPool.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferPool.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferPool.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferPool.java index c137559..1e4f198 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/FramebufferPool.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/FramebufferPool.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.pool; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.pipeline.TextureTarget; import java.util.*; +import dev.loki.lovisual.render.engine.rhi.resource.manager.ResourceLeakTracker; +import dev.loki.lovisual.render.engine.rhi.resource.pool.FramebufferDescriptor; /** * Central framebuffer pool. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/SamplerCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/SamplerCache.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/SamplerCache.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/SamplerCache.java index 868c52b..5c20bdb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/SamplerCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/SamplerCache.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.pool; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.AddressMode; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/TexturePool.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/TexturePool.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/TexturePool.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/TexturePool.java index 9901fb6..56d481f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/TexturePool.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/resource/pool/TexturePool.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.resource; +package dev.loki.lovisual.render.engine.rhi.resource.pool; import com.mojang.blaze3d.textures.GpuTexture; import java.util.ArrayDeque; import java.util.Queue; +import dev.loki.lovisual.render.engine.rhi.resource.manager.ResourceLeakTracker; public final class TexturePool implements AutoCloseable { private final Queue retired = new ArrayDeque<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStats.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStats.java index 125ece8..bc0fd14 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStats.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.stats; import dev.loki.lovisual.render.engine.guard.LegacyRenderPath; import java.util.EnumMap; import java.util.Map; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStatsSnapshot; public final class RhiStats { private final EnumMap legacyPathBreakdown = new EnumMap<>(LegacyRenderPath.class); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStatsSnapshot.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStatsSnapshot.java index 6898f1a..a8b1f98 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/RhiStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/stats/RhiStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi; +package dev.loki.lovisual.render.engine.rhi.stats; import dev.loki.lovisual.render.engine.guard.LegacyRenderPath; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LegacyUniformFrameResource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LegacyUniformFrameResource.java index cac1ed3..e948d18 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LegacyUniformFrameResource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LegacyUniformFrameResource.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.render.engine.rhi.uniform; +import dev.loki.lovisual.render.engine.rhi.uniform.FrameResource; +import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; /** * Adapter for old DynamicUniformStorage owners while they are migrated into LoVisualUniformAllocator. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LoVisualUniformAllocator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LoVisualUniformAllocator.java index 130a94a..f74e773 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LoVisualUniformAllocator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/LoVisualUniformAllocator.java @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStats; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStatsSnapshot; /** * Single owner of LoVisual dynamic uniform allocation. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStats.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStats.java index 917b499..c435f7b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStats.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.uniform; +package dev.loki.lovisual.render.engine.rhi.uniform.stats; +import dev.loki.lovisual.render.engine.rhi.uniform.stats.UniformAllocatorStatsSnapshot; public final class UniformAllocatorStats { private long frameId; @@ -20,7 +21,7 @@ public final class UniformAllocatorStats { private long blockingBufferRequests; private long staleReadMisses; - void beginFrame(long frameId) { + public void beginFrame(long frameId) { this.frameId = frameId; writes = 0L; uploadedBytes = 0L; @@ -32,40 +33,40 @@ public final class UniformAllocatorStats { staleReadMisses = 0L; } - void write(long bytes) { + public void write(long bytes) { writes++; uploadedBytes += bytes; } - void activeStreams(long count) { + public void activeStreams(long count) { activeStreams = count; } - void streamCount(long count) { + public void streamCount(long count) { streamCount = count; } - void ringCapacityBytes(long bytes) { + public void ringCapacityBytes(long bytes) { ringCapacityBytes = bytes; } - void ringCursorBytes(long bytes) { + public void ringCursorBytes(long bytes) { ringCursorBytes = bytes; } - void ringRotation() { + public void ringRotation() { ringRotations++; } - void ringGrow() { + public void ringGrow() { ringGrows++; } - void blockingBufferRequest() { + public void blockingBufferRequest() { blockingBufferRequests++; } - void staleReadMiss() { + public void staleReadMiss() { staleReadMisses++; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStatsSnapshot.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStatsSnapshot.java index 1a728e9..9ada112 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/UniformAllocatorStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/uniform/stats/UniformAllocatorStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.uniform; +package dev.loki.lovisual.render.engine.rhi.uniform.stats; public record UniformAllocatorStatsSnapshot(long frameId, long writes, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/DynamicMeshBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/DynamicMeshBackend.java index 206bc02..42ecf41 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/DynamicMeshBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/DynamicMeshBackend.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.render.engine.rhi.upload; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; public interface DynamicMeshBackend extends AutoCloseable { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dDynamicMeshBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dDynamicMeshBackend.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dDynamicMeshBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dDynamicMeshBackend.java index f7d1e9f..77ab734 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dDynamicMeshBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dDynamicMeshBackend.java @@ -5,18 +5,22 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.upload; +package dev.loki.lovisual.render.engine.rhi.upload.blaze3d; import com.mojang.blaze3d.systems.RenderSystem; -import dev.loki.lovisual.render.engine.profiler.RenderCostProfiler; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.MeshOwnership; -import dev.loki.lovisual.render.engine.rhi.RhiStats; +import dev.loki.lovisual.render.engine.profiler.frame.RenderCostProfiler; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.MeshOwnership; +import dev.loki.lovisual.render.engine.rhi.stats.RhiStats; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dFrameFence; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dMeshAllocation; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dMeshArena; +import dev.loki.lovisual.render.engine.rhi.upload.DynamicMeshBackend; /** * Production dynamic mesh upload path built on Blaze3D GPU buffers. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dFrameFence.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dFrameFence.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dFrameFence.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dFrameFence.java index 0a12720..f978f71 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dFrameFence.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dFrameFence.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.upload; +package dev.loki.lovisual.render.engine.rhi.upload.blaze3d; import com.mojang.blaze3d.buffers.GpuFence; @@ -20,25 +20,25 @@ public final class Blaze3dFrameFence implements AutoCloseable { private int references = 1; private boolean completed; - Blaze3dFrameFence(GpuFence fence) { + public Blaze3dFrameFence(GpuFence fence) { if (fence == null) throw new IllegalArgumentException("fence"); this.fence = fence; } - Blaze3dFrameFence retain() { + public Blaze3dFrameFence retain() { if (fence == null) throw new IllegalStateException("Cannot retain closed frame fence"); references++; return this; } - boolean isCompleted() { + public boolean isCompleted() { if (completed) return true; if (fence == null) return true; completed = fence.awaitCompletion(0L); return completed; } - void release() { + public void release() { if (references <= 0) return; references--; if (references == 0) close(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshAllocation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshAllocation.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshAllocation.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshAllocation.java index 69c603b..d50a2b4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshAllocation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshAllocation.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.upload; +package dev.loki.lovisual.render.engine.rhi.upload.blaze3d; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.MeshOwnership; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.resource.MeshOwnership; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dMeshArena; public record Blaze3dMeshAllocation(Blaze3dMeshArena arena, int vertexOffsetBytes, @@ -28,7 +29,7 @@ public record Blaze3dMeshAllocation(Blaze3dMeshArena arena, return vertexOffsetBytes / vertexStride; } - GpuMeshHandle toHandle(MeshBuilder mesh) { + public GpuMeshHandle toHandle(MeshBuilder mesh) { return GpuMeshHandle.arena( arena.vertexBuffer(), arena.indexBuffer(), @@ -43,7 +44,7 @@ public record Blaze3dMeshAllocation(Blaze3dMeshArena arena, ); } - void write(MeshBuilder mesh) { + public void write(MeshBuilder mesh) { mesh.validateComplete("dynamic mesh allocation write"); arena.writeVertices(vertexOffsetBytes, vertexBytes, mesh.vertexBufferView()); arena.writeIndices(indexOffsetBytes, indexBytes, mesh.indexBufferView()); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshArena.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshArena.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshArena.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshArena.java index ecd1e75..6a8eaf4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/Blaze3dMeshArena.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/rhi/upload/blaze3d/Blaze3dMeshArena.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.rhi.upload; +package dev.loki.lovisual.render.engine.rhi.upload.blaze3d; import com.mojang.blaze3d.buffers.GpuBuffer; import com.mojang.blaze3d.buffers.GpuBufferSlice; @@ -14,6 +14,8 @@ import org.jetbrains.annotations.Nullable; import java.nio.ByteBuffer; import java.util.function.Supplier; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dFrameFence; +import dev.loki.lovisual.render.engine.rhi.upload.blaze3d.Blaze3dMeshAllocation; /** * Backend-owned dynamic mesh arena. @@ -34,7 +36,7 @@ public final class Blaze3dMeshArena implements AutoCloseable { private boolean usedThisFrame; private @Nullable Blaze3dFrameFence fence; - Blaze3dMeshArena(String name, int vertexCapacity, int indexCapacity, boolean persistent) { + public Blaze3dMeshArena(String name, int vertexCapacity, int indexCapacity, boolean persistent) { this.name = name; this.persistent = persistent; this.vertexCapacity = vertexCapacity; @@ -85,35 +87,35 @@ public final class Blaze3dMeshArena implements AutoCloseable { return remainder == 0 ? value : value + alignment - remainder; } - GpuBuffer vertexBuffer() { + public GpuBuffer vertexBuffer() { return vertexBuffer; } - GpuBuffer indexBuffer() { + public GpuBuffer indexBuffer() { return indexBuffer; } - int vertexCapacity() { + public int vertexCapacity() { return vertexCapacity; } - int indexCapacity() { + public int indexCapacity() { return indexCapacity; } - boolean persistent() { + public boolean persistent() { return persistent; } - boolean usedThisFrame() { + public boolean usedThisFrame() { return usedThisFrame; } - boolean isRetired() { + public boolean isRetired() { return fence != null; } - boolean reclaimIfComplete() { + public boolean reclaimIfComplete() { if (fence == null) return true; if (!fence.isCompleted()) return false; fence.release(); @@ -122,24 +124,24 @@ public final class Blaze3dMeshArena implements AutoCloseable { return true; } - boolean canStartFrame() { + public boolean canStartFrame() { return !usedThisFrame && reclaimIfComplete(); } - void resetForFrame() { + public void resetForFrame() { vertexCursor = 0; indexCursor = 0; usedThisFrame = false; } - boolean canAllocate(int vertexBytes, int indexBytes, int vertexStride) { + public boolean canAllocate(int vertexBytes, int indexBytes, int vertexStride) { validateRequest(vertexBytes, indexBytes, vertexStride); int alignedVertexCursor = align(vertexCursor, Math.max(4, vertexStride)); int alignedIndexCursor = align(indexCursor, Integer.BYTES); return alignedVertexCursor + vertexBytes <= vertexCapacity && alignedIndexCursor + indexBytes <= indexCapacity; } - Blaze3dMeshAllocation allocate(int vertexBytes, int indexBytes, int vertexStride) { + public Blaze3dMeshAllocation allocate(int vertexBytes, int indexBytes, int vertexStride) { validateRequest(vertexBytes, indexBytes, vertexStride); int alignedVertexCursor = align(vertexCursor, Math.max(4, vertexStride)); int alignedIndexCursor = align(indexCursor, Integer.BYTES); @@ -188,12 +190,12 @@ public final class Blaze3dMeshArena implements AutoCloseable { } } - void writeVertices(int offsetBytes, int bytes, ByteBuffer src) { + public void writeVertices(int offsetBytes, int bytes, ByteBuffer src) { validateRange("vertex upload", offsetBytes, bytes, vertexCapacity); write(name + " vertex upload", vertexBuffer.slice(offsetBytes, bytes), src, bytes); } - void writeIndices(int offsetBytes, int bytes, ByteBuffer src) { + public void writeIndices(int offsetBytes, int bytes, ByteBuffer src) { validateRange("index upload", offsetBytes, bytes, indexCapacity); write(name + " index upload", indexBuffer.slice(offsetBytes, bytes), src, bytes); } @@ -205,7 +207,7 @@ public final class Blaze3dMeshArena implements AutoCloseable { } } - void retire(Blaze3dFrameFence frameFence) { + public void retire(Blaze3dFrameFence frameFence) { if (!usedThisFrame) return; if (fence != null) fence.release(); fence = frameFence; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgInlineText.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgInlineText.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgInlineText.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgInlineText.java index d98ce15..7cd4634 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgInlineText.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgInlineText.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.backend; import dev.loki.lovisual.render.engine.color.RenderColor; 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.engine.svg.model.SvgRenderOptions; public enum SvgInlineText { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMeshBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgMeshBackend.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMeshBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgMeshBackend.java index 8276a81..d10a0e5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMeshBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/backend/SvgMeshBackend.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.backend; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.textures.AddressMode; @@ -18,8 +18,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import dev.loki.lovisual.render.engine.Texture; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.texture.Texture; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.logging.DebugLog; @@ -36,6 +36,12 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.List; +import dev.loki.lovisual.render.engine.svg.model.SvgColorMode; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgStyle; +import dev.loki.lovisual.render.engine.svg.model.SvgStyleUtil; +import dev.loki.lovisual.render.engine.svg.parser.SvgMsdfRegistry; +import dev.loki.lovisual.render.engine.svg.parser.SvgPathParser; public enum SvgMeshBackend { ; @@ -937,7 +943,7 @@ public enum SvgMeshBackend { @FunctionalInterface private interface QuadSink { - void quad(double x, double y, double w, double h, int argb); + public void quad(double x, double y, double w, double h, int argb); } private record SvgDoc(String cacheKey, double vx, double vy, double vw, double vh, List shapes) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgColorMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgColorMode.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgColorMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgColorMode.java index 8a1be9a..0b7a80e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgColorMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgColorMode.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.model; public enum SvgColorMode { FROM_FILE, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRenderOptions.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgRenderOptions.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRenderOptions.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgRenderOptions.java index eec499a..256b85b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRenderOptions.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgRenderOptions.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.model; +import dev.loki.lovisual.render.engine.svg.model.SvgColorMode; public record SvgRenderOptions(SvgColorMode colorMode, int overrideArgb, float alpha, float curveFlatness, boolean textureCache, int rasterScale, int gradientStartArgb, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyle.java similarity index 71% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyle.java index 2cd3644..dfcb8e1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyle.java @@ -5,27 +5,37 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.model; import org.jetbrains.annotations.Nullable; import java.awt.*; public final class SvgStyle { - @Nullable Integer fill; - @Nullable Integer stroke; - float strokeWidth; - float fillOpacity; - float strokeOpacity; - float groupOpacity; - int lineCap; - int lineJoin; - float miterLimit; - boolean visible; - String fillRule; - int currentColor; + @Nullable public Integer fill; + @Nullable public Integer stroke; + public float strokeWidth; + + public float fillOpacity; + + public float strokeOpacity; + + public float groupOpacity; + + public int lineCap; + + public int lineJoin; + + public float miterLimit; + + public boolean visible; + + public String fillRule; + + public int currentColor; + + public static SvgStyle root() { - static SvgStyle root() { SvgStyle s = new SvgStyle(); s.fill = 0xFF000000; s.stroke = null; @@ -42,7 +52,8 @@ public final class SvgStyle { return s; } - SvgStyle copy() { + public SvgStyle copy() { + SvgStyle out = new SvgStyle(); out.fill = fill; out.stroke = stroke; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyleUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyleUtil.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyleUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyleUtil.java index 8c9fc03..b28e7e1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgStyleUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/model/SvgStyleUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.model; import org.w3c.dom.Element; @@ -15,12 +15,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import dev.loki.lovisual.render.engine.svg.model.SvgColorMode; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.engine.svg.model.SvgStyle; public enum SvgStyleUtil { ; private static final Map NAMED_COLORS = namedColors(); - static void applyElementStyle(SvgStyle style, Element element) { + public static void applyElementStyle(SvgStyle style, Element element) { + applyProperty(style, "fill", element.getAttribute("fill")); applyProperty(style, "stroke", element.getAttribute("stroke")); applyProperty(style, "stroke-width", element.getAttribute("stroke-width")); @@ -86,7 +90,8 @@ public enum SvgStyleUtil { } } - static int resolvePaint(Integer paint, float channelOpacity, float groupOpacity, SvgRenderOptions options) { + public static int resolvePaint(Integer paint, float channelOpacity, float groupOpacity, SvgRenderOptions options) { + if (paint == null) return 0; int base = paint; int baseA = (base >>> 24) & 0xFF; @@ -109,7 +114,8 @@ public enum SvgStyleUtil { return (a << 24) | (base & 0x00FFFFFF); } - static AffineTransform parseTransform(String raw) { + public static AffineTransform parseTransform(String raw) { + AffineTransform out = new AffineTransform(); if (raw == null || raw.isBlank()) return out; @@ -165,7 +171,8 @@ public enum SvgStyleUtil { return out; } - static double parseLength(String raw, double fallback) { + public static double parseLength(String raw, double fallback) { + if (raw == null || raw.isBlank()) return fallback; String s = raw.trim().toLowerCase(Locale.ROOT); if (s.endsWith("px") || s.endsWith("pt") || s.endsWith("pc") @@ -183,7 +190,8 @@ public enum SvgStyleUtil { } } - static double[] parseNumberList(String raw) { + public static double[] parseNumberList(String raw) { + if (raw == null || raw.isBlank()) return new double[0]; ArrayList out = new ArrayList<>(8); int i = 0; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMsdfRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgMsdfRegistry.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMsdfRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgMsdfRegistry.java index 1e563ff..603aaa8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgMsdfRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgMsdfRegistry.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.parser; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.textures.AddressMode; import com.mojang.blaze3d.textures.FilterMode; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import dev.loki.lovisual.util.logging.DebugLog; import net.minecraft.client.Minecraft; @@ -30,6 +30,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import dev.loki.lovisual.render.engine.svg.model.SvgColorMode; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; public enum SvgMsdfRegistry { ; @@ -287,11 +289,11 @@ public enum SvgMsdfRegistry { } private record Entry(Texture texture, int width, int height, float pxRange) { - boolean isReady() { + public boolean isReady() { return texture != null && texture.isReady(); } - void close() { + public void close() { if (texture != null) texture.close(); } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgPathParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgPathParser.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgPathParser.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgPathParser.java index 9680dd7..60a9ad4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgPathParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgPathParser.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.parser; import java.awt.geom.Path2D; @@ -30,7 +30,8 @@ public final class SvgPathParser { this.data = data; } - static Path2D.Double parse(String data) { + public static Path2D.Double parse(String data) { + return new SvgPathParser(data).parseInternal(); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgRegistry.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgRegistry.java index 86ff1f1..c40dcaf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/SvgRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/svg/parser/SvgRegistry.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.svg; +package dev.loki.lovisual.render.engine.svg.parser; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; @@ -15,6 +15,8 @@ import org.jetbrains.annotations.Nullable; import dev.loki.lovisual.util.logging.DebugLog; import java.util.*; +import dev.loki.lovisual.render.engine.svg.backend.SvgMeshBackend; +import dev.loki.lovisual.render.engine.svg.parser.SvgMsdfRegistry; public enum SvgRegistry { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/BitmapAtlasTextBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/BitmapAtlasTextBackend.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/BitmapAtlasTextBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/BitmapAtlasTextBackend.java index 7e4d67a..1de8933 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/BitmapAtlasTextBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/BitmapAtlasTextBackend.java @@ -5,16 +5,20 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.atlas; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.text.CustomTextRenderer; -import dev.loki.lovisual.render.engine.text.TextBackendPreference; -import dev.loki.lovisual.render.engine.text.TextCommandStats; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.text.glyph.CustomTextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; +import dev.loki.lovisual.render.engine.text.command.TextCommandStats; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.List; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; /** * Bitmap atlas backend for custom/icon/special UI text. Mesh submission is owned by TextRenderSystem. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasManager.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasManager.java index 02d818b..1a2033a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasManager.java @@ -5,12 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.atlas; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.msdf.MsdfFont; +import dev.loki.lovisual.render.engine.rhi.resource.manager.RenderResourceManager; /** * Owner for glyph atlas metadata. Existing Font/MsdfFont atlas textures can be registered here while Stage 11 moves diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasPage.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasPage.java similarity index 69% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasPage.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasPage.java index 5b32974..3b459fb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/GlyphAtlasPage.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/GlyphAtlasPage.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.atlas; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; public record GlyphAtlasPage(String id, Texture texture, int width, int height, boolean msdf) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/MsdfTextBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/MsdfTextBackend.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/MsdfTextBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/MsdfTextBackend.java index 56e4600..26cbd2d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/MsdfTextBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/atlas/MsdfTextBackend.java @@ -5,16 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.atlas; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.text.CustomTextRenderer; -import dev.loki.lovisual.render.engine.text.TextBackendPreference; -import dev.loki.lovisual.render.engine.text.TextCommandStats; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.text.glyph.CustomTextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; +import dev.loki.lovisual.render.engine.text.command.TextCommandStats; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.List; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; /** * MSDF backend for large, animated, scalable and special text. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackend.java similarity index 68% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackend.java index 6450bfc..7e616fe 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackend.java @@ -5,12 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.backend; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; import java.util.List; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementResolver; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; public interface TextBackend { String id(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackendRouter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackendRouter.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackendRouter.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackendRouter.java index 7af43e2..64b8a9f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextBackendRouter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextBackendRouter.java @@ -5,15 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.backend; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.text.TextCommandStats; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.text.command.TextCommandStats; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementResolver; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; public final class TextBackendRouter { private final List backends = new ArrayList<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextDrawCommand.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextDrawCommand.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextDrawCommand.java index f9d58ec..0bbcbff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/TextDrawCommand.java @@ -5,13 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.backend; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.text.TextBackendPreference; -import dev.loki.lovisual.render.engine.text.TextClipSpec; -import dev.loki.lovisual.render.engine.text.TextEffectSpec; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; +import dev.loki.lovisual.render.engine.text.font.info.TextClipSpec; +import dev.loki.lovisual.render.engine.text.command.TextEffectSpec; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.backend.placement.TextRenderDomain; public record TextDrawCommand(TextRenderer renderer, String text, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/VanillaSodiumTextBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/VanillaSodiumTextBackend.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/VanillaSodiumTextBackend.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/VanillaSodiumTextBackend.java index 344663e..dee54ab 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/VanillaSodiumTextBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/backend/VanillaSodiumTextBackend.java @@ -5,16 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.backend; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.text.TextBackendPreference; -import dev.loki.lovisual.render.engine.text.TextCommandStats; -import dev.loki.lovisual.render.engine.text.TextRenderer; -import dev.loki.lovisual.render.engine.text.VanillaTextRenderer; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; +import dev.loki.lovisual.render.engine.text.command.TextCommandStats; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.VanillaTextRenderer; import java.util.List; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; /** * Route ordinary UI text through the vanilla/Sodium text path where it is explicitly requested and effect-free. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementMode.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementMode.java index 5164c9d..d92119e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementMode.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.placement; +import dev.loki.lovisual.render.engine.text.backend.placement.TextRenderDomain; /** * Placement is orthogonal to the glyph backend. It answers where text is placed, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementResolver.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementResolver.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementResolver.java index b4d122d..6cc43ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementResolver.java @@ -5,10 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.placement; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementTransform; /** * Converts command placement intent into a backend-consumable transform. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementTransform.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementTransform.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementTransform.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementTransform.java index 449c3b2..5e2ef1e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextPlacementTransform.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextPlacementTransform.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.placement; import net.minecraft.world.phys.Vec3; import org.joml.Matrix4f; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; /** * Resolved placement data consumed by text backends. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextRenderDomain.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextRenderDomain.java similarity index 77% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextRenderDomain.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextRenderDomain.java index aad4798..649bdbc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/TextRenderDomain.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/backend/placement/TextRenderDomain.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text.backend; +package dev.loki.lovisual.render.engine.text.backend.placement; public enum TextRenderDomain { UI, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandBuffer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandBuffer.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandBuffer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandBuffer.java index 0122c5e..49346a0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandBuffer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandBuffer.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.command; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; -import dev.loki.lovisual.render.engine.rhi.LoVisualRhi; -import dev.loki.lovisual.render.engine.text.backend.TextBackendRouter; -import dev.loki.lovisual.render.engine.text.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; +import dev.loki.lovisual.render.engine.rhi.resource.LoVisualRhi; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackendRouter; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; import java.util.ArrayList; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStats.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStats.java index fc682bb..d2c4706 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStats.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.command; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; public final class TextCommandStats { private int recorded; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStatsSnapshot.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStatsSnapshot.java index a5462e8..0db3f31 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextCommandStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextCommandStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.command; public record TextCommandStatsSnapshot(int recorded, int submitted, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextEffectSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextEffectSpec.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextEffectSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextEffectSpec.java index 0d8e033..6950e96 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextEffectSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/command/TextEffectSpec.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.command; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Font.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Font.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Font.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Font.java index 7897858..38ab566 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Font.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Font.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.textures.FilterMode; @@ -13,12 +13,15 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import org.lwjgl.system.MemoryUtil; import org.lwjgl.stb.*; import org.lwjgl.system.MemoryStack; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.nio.ByteBuffer; import java.nio.IntBuffer; +import dev.loki.lovisual.render.engine.text.font.info.FontDebugStats; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; public class Font implements GlyphFont { private static final int SIZE = 4096; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFace.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontFace.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFace.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontFace.java index 297176d..b95d58f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFace.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontFace.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font; import java.io.InputStream; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public abstract class FontFace { public final FontInfo info; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontUtils.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontUtils.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontUtils.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontUtils.java index 8d87126..f0a76b8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontUtils.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/FontUtils.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; @@ -20,6 +20,10 @@ import java.nio.file.Path; import java.util.*; import java.util.List; import java.util.stream.Stream; +import dev.loki.lovisual.render.engine.text.font.faces.BuiltinFontFace; +import dev.loki.lovisual.render.engine.text.font.faces.FontFamily; +import dev.loki.lovisual.render.engine.text.font.faces.SystemFontFace; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public enum FontUtils { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Fonts.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Fonts.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Fonts.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Fonts.java index aa9bb91..aebee4a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/Fonts.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/Fonts.java @@ -5,10 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font; import java.io.File; import java.util.*; +import dev.loki.lovisual.render.engine.text.font.faces.FontFamily; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.glyph.CustomTextRenderer; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public enum Fonts { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/BuiltinFontFace.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/BuiltinFontFace.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/BuiltinFontFace.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/BuiltinFontFace.java index fca8b3a..49e850e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/BuiltinFontFace.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/BuiltinFontFace.java @@ -5,9 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.faces; import java.io.InputStream; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.FontUtils; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public class BuiltinFontFace extends FontFace { private final String name; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/EmptyGlyphFont.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/EmptyGlyphFont.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/EmptyGlyphFont.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/EmptyGlyphFont.java index 6aa22c5..8eb1ff6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/EmptyGlyphFont.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/EmptyGlyphFont.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.faces; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; public record EmptyGlyphFont(int height) implements GlyphFont { public EmptyGlyphFont(int height) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFamily.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/FontFamily.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFamily.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/FontFamily.java index c4349dc..8755217 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontFamily.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/FontFamily.java @@ -5,10 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.faces; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public class FontFamily { private final String name; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/SystemFontFace.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/SystemFontFace.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/SystemFontFace.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/SystemFontFace.java index 1909007..bd3eacd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/SystemFontFace.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/faces/SystemFontFace.java @@ -5,10 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.faces; import java.io.InputStream; import java.nio.file.Path; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.FontUtils; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; public class SystemFontFace extends FontFace { private final Path path; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontDebugStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontDebugStats.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontDebugStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontDebugStats.java index 706d438..a597d38 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontDebugStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontDebugStats.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.info; import java.util.concurrent.atomic.AtomicInteger; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontInfo.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontInfo.java index 909ad9d..daff703 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/FontInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/FontInfo.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.info; public record FontInfo(String family, Type type) { @Override diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextBackendPreference.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextBackendPreference.java similarity index 71% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextBackendPreference.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextBackendPreference.java index ce7a8c7..8089ffd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextBackendPreference.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextBackendPreference.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.info; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; /** * Preferred glyph backend. Placement is handled by TextPlacementMode, not by this enum. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextClipSpec.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextClipSpec.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextClipSpec.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextClipSpec.java index 201e70d..a6d08e3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextClipSpec.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/font/info/TextClipSpec.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.font.info; /** * Optional text clip/fade region. Scissor stays external; this spec controls glyph alpha/animation. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/CustomTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/CustomTextRenderer.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/CustomTextRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/CustomTextRenderer.java index ccfd10e..0fea0f8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/CustomTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/CustomTextRenderer.java @@ -5,16 +5,25 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.glyph; -import dev.loki.lovisual.render.engine.text.backend.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import org.lwjgl.system.MemoryUtil; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import java.nio.ByteBuffer; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.FontUtils; +import dev.loki.lovisual.render.engine.text.font.faces.BuiltinFontFace; +import dev.loki.lovisual.render.engine.text.font.faces.EmptyGlyphFont; +import dev.loki.lovisual.render.engine.text.font.info.FontDebugStats; +import dev.loki.lovisual.render.engine.text.msdf.MsdfFont; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public class CustomTextRenderer implements TextRenderer { public static final RenderColor SHADOW_COLOR = new RenderColor(60, 60, 60, 180); @@ -162,7 +171,8 @@ public class CustomTextRenderer implements TextRenderer { return new GlyphSelection(font, glyphScale, fontScale * glyphScale); } - GlyphSelection prepareGlyphFont(double requestedScale, boolean big) { + public GlyphSelection prepareGlyphFont(double requestedScale, boolean big) { + GlyphSelection selection = selectGlyphFont(requestedScale, big); if (!selection.font().isReady() && rebuildFonts()) { selection = selectGlyphFont(requestedScale, big); @@ -444,6 +454,7 @@ public class CustomTextRenderer implements TextRenderer { } } - record GlyphSelection(GlyphFont font, double glyphScale, double shadowOffset) { + public record GlyphSelection(GlyphFont font, double glyphScale, double shadowOffset) { + } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/GlyphFont.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/GlyphFont.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/GlyphFont.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/GlyphFont.java index f232bb4..50b7963 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/GlyphFont.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/GlyphFont.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.glyph; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; +import dev.loki.lovisual.render.engine.text.font.Font; public interface GlyphFont { Texture getTexture(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextGlyphFallback.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/TextGlyphFallback.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextGlyphFallback.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/TextGlyphFallback.java index ebff87b..151a264 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextGlyphFallback.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/TextGlyphFallback.java @@ -5,9 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.glyph; import java.util.Set; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; /** * Shared codepoint fallback order for procedural text. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/VanillaTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/VanillaTextRenderer.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/VanillaTextRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/VanillaTextRenderer.java index 9522245..70996bd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/VanillaTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/glyph/VanillaTextRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.glyph; import com.mojang.blaze3d.vertex.PoseStack; import dev.loki.lovisual.render.engine.renderer.Renderer2D; @@ -15,9 +15,11 @@ import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; import net.minecraft.network.chat.Style; import net.minecraft.util.FormattedCharSequence; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; import static net.minecraft.client.Minecraft.getInstance; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public class VanillaTextRenderer implements TextRenderer { public static final VanillaTextRenderer INSTANCE = new VanillaTextRenderer(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/MsdfFont.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/MsdfFont.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/MsdfFont.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/MsdfFont.java index d9d52fb..8eb56e2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/MsdfFont.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/MsdfFont.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.msdf; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -18,7 +18,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.ResourceManager; import org.lwjgl.system.MemoryUtil; -import dev.loki.lovisual.render.engine.Texture; +import dev.loki.lovisual.render.engine.texture.Texture; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; @@ -29,6 +29,13 @@ import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.LinkedHashMap; import java.util.Map; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.font.FontFace; +import dev.loki.lovisual.render.engine.text.font.FontUtils; +import dev.loki.lovisual.render.engine.text.font.faces.BuiltinFontFace; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.render.TextRenderSystem; public final class MsdfFont implements GlyphFont { private static final int FONT_SIZES = 5; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/WorldTextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/WorldTextRenderer.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/WorldTextRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/WorldTextRenderer.java index 9290ce4..4077666 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/WorldTextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/msdf/WorldTextRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.msdf; import net.minecraft.client.renderer.texture.AbstractTexture; import net.minecraft.world.phys.Vec3; @@ -15,7 +15,10 @@ import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.MsdfTextUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.MsdfTextUniforms; +import dev.loki.lovisual.render.engine.text.glyph.CustomTextRenderer; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; public enum WorldTextRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderSystem.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderSystem.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderSystem.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderSystem.java index b0b39e9..a26af00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderSystem.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderSystem.java @@ -5,20 +5,36 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.render; import com.mojang.blaze3d.pipeline.RenderPipeline; -import dev.loki.lovisual.render.engine.text.backend.*; +import dev.loki.lovisual.render.engine.text.backend.atlas.BitmapAtlasTextBackend; +import dev.loki.lovisual.render.engine.text.backend.atlas.MsdfTextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackendRouter; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.backend.VanillaSodiumTextBackend; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.AbstractTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.RhiDrawCommand; -import dev.loki.lovisual.render.engine.rhi.resource.GlyphAtlasManager; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.resource.atlas.GlyphAtlasManager; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.MsdfTextUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.ui.MsdfTextUniforms; +import dev.loki.lovisual.render.engine.text.backend.atlas.BitmapAtlasTextBackend; +import dev.loki.lovisual.render.engine.text.backend.atlas.MsdfTextBackend; +import dev.loki.lovisual.render.engine.text.backend.backend.TextBackendRouter; +import dev.loki.lovisual.render.engine.text.backend.backend.TextDrawCommand; +import dev.loki.lovisual.render.engine.text.backend.placement.TextPlacementMode; +import dev.loki.lovisual.render.engine.text.backend.backend.VanillaSodiumTextBackend; +import dev.loki.lovisual.render.engine.text.command.TextCommandBuffer; +import dev.loki.lovisual.render.engine.text.command.TextCommandStats; +import dev.loki.lovisual.render.engine.text.command.TextCommandStatsSnapshot; +import dev.loki.lovisual.render.engine.text.font.info.TextBackendPreference; +import dev.loki.lovisual.render.engine.text.glyph.GlyphFont; /** * Stage 10 text owner: command buffer, backend router and RHI mesh submission for glyph text. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderer.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderer.java index 5009f02..ebd7801 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/TextRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/text/render/TextRenderer.java @@ -5,13 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.text; +package dev.loki.lovisual.render.engine.text.render; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.svg.SvgInlineText; -import dev.loki.lovisual.render.engine.svg.SvgRenderOptions; -import dev.loki.lovisual.render.helpers.ScissorFunction; +import dev.loki.lovisual.render.engine.svg.backend.SvgInlineText; +import dev.loki.lovisual.render.engine.svg.model.SvgRenderOptions; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; +import dev.loki.lovisual.render.engine.text.font.Font; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.glyph.VanillaTextRenderer; public interface TextRenderer { static TextRenderer get() { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Texture.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/Texture.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Texture.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/Texture.java index 3a2f273..318f3e5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/Texture.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/Texture.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine; +package dev.loki.lovisual.render.engine.texture; import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.platform.NativeImage; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/TextureStorage.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/TextureStorage.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/TextureStorage.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/TextureStorage.java index 08120a6..a5f44d8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/TextureStorage.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/texture/TextureStorage.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine; +package dev.loki.lovisual.render.engine.texture; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureManager; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/MeshBuilder.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/MeshBuilder.java index fa7eba3..74e5f68 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/MeshBuilder.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/MeshBuilder.java @@ -18,8 +18,8 @@ import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.guard.LegacyRenderPath; import dev.loki.lovisual.render.engine.guard.RenderArchitectureGuard; -import dev.loki.lovisual.render.engine.renderer.RenderWarp; -import dev.loki.lovisual.render.engine.renderer.RenderWarpStack; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarp; +import dev.loki.lovisual.render.engine.renderer.warp.RenderWarpStack; import java.nio.ByteBuffer; import java.nio.ByteOrder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspBlurUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspBlurUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspBlurUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspBlurUniforms.java index 82a4a88..d0a0f0a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspBlurUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspBlurUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.esp; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspGradientUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspGradientUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspGradientUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspGradientUniforms.java index c2d8358..cc2f560 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspGradientUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspGradientUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.esp; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspSmokeUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspSmokeUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspSmokeUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspSmokeUniforms.java index a6878c5..5367493 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderEspSmokeUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/esp/ShaderEspSmokeUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.esp; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandBlendUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandBlendUniforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandBlendUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandBlendUniforms.java index 41e0017..7d4865a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandBlendUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandBlendUniforms.java @@ -1,9 +1,9 @@ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; import java.nio.ByteBuffer; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandChamsUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandChamsUniforms.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandChamsUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandChamsUniforms.java index daed279..3fa72e9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandChamsUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandChamsUniforms.java @@ -1,9 +1,9 @@ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandGlassUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandGlassUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandGlassUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandGlassUniforms.java index 868196c..86ed3f3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandGlassUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandGlassUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandMetallicUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandMetallicUniforms.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandMetallicUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandMetallicUniforms.java index c845198..cacdad1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandMetallicUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/HandMetallicUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandNoiseUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandNoiseUniforms.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandNoiseUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandNoiseUniforms.java index dd8a0c7..17b6eb9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandNoiseUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandNoiseUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand.effects; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandSmokeUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandSmokeUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandSmokeUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandSmokeUniforms.java index 234fa28..cfe5e84 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HandSmokeUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/HandSmokeUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand.effects; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/TextureTintUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/TextureTintUniforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/TextureTintUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/TextureTintUniforms.java index 377ce4c..fee620b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/TextureTintUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/hand/effects/TextureTintUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.hand.effects; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/DepthOfFieldUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/DepthOfFieldUniforms.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/DepthOfFieldUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/DepthOfFieldUniforms.java index 40211be..0a49d74 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/DepthOfFieldUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/DepthOfFieldUniforms.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.post; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; import org.joml.Matrix4f; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; public enum DepthOfFieldUniforms { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MotionBlurUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/MotionBlurUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MotionBlurUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/MotionBlurUniforms.java index cc2ad1a..ffc441a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MotionBlurUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/MotionBlurUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.post; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostFXUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostFXUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostFXUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostFXUniforms.java index 524e39b..f588ef7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostFXUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostFXUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.post; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostProcessUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostProcessUniforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostProcessUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostProcessUniforms.java index c1186ac..2ef6896 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/PostProcessUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/post/PostProcessUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.post; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderSkyUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/ShaderSkyUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderSkyUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/ShaderSkyUniforms.java index 70735e2..cd03b30 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ShaderSkyUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/ShaderSkyUniforms.java @@ -1,9 +1,9 @@ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.sky; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; import dev.loki.lovisual.features.module.modules.visuals.weather.ShaderSky; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderNebulaUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderNebulaUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderNebulaUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderNebulaUniforms.java index 0559730..a35d86c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderNebulaUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderNebulaUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.sky; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderUniforms.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderUniforms.java index 7dca7b6..d9c8c11 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyShaderUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyShaderUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.sky; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyboxShaderUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyboxShaderUniforms.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyboxShaderUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyboxShaderUniforms.java index 07e0ffd..8129469 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkyboxShaderUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/SkyboxShaderUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.sky; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkySunUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/sun/SkySunUniforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkySunUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/sun/SkySunUniforms.java index 62412cd..b9ab8ff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/SkySunUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/sky/sun/SkySunUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.sky.sun; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MenuBackgroundUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MenuBackgroundUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MenuBackgroundUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MenuBackgroundUniforms.java index 1ec384b..e8f37b6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MenuBackgroundUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MenuBackgroundUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.ui; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MsdfTextUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MsdfTextUniforms.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MsdfTextUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MsdfTextUniforms.java index f76b7bc..5af48c0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MsdfTextUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/MsdfTextUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.ui; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBatchUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBatchUniforms.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBatchUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBatchUniforms.java index dd7352d..5ed49d4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBatchUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBatchUniforms.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.ui; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBlurUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBlurUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBlurUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBlurUniforms.java index e44e18c..efcfdf0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/UIBlurUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/ui/UIBlurUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.ui; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HeatUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/HeatUniforms.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HeatUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/HeatUniforms.java index 2ef7e57..1595f1b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/HeatUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/HeatUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.world; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/KillEffectBeamUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/KillEffectBeamUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/KillEffectBeamUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/KillEffectBeamUniforms.java index b0262ac..8dc1684 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/KillEffectBeamUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/KillEffectBeamUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.world; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MeshUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/MeshUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MeshUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/MeshUniforms.java index 7225197..87a3ad3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/MeshUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/MeshUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.world; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WaterHighlightUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WaterHighlightUniforms.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WaterHighlightUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WaterHighlightUniforms.java index c49316e..6ac0e57 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WaterHighlightUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WaterHighlightUniforms.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.world.liquid; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WetSurfaceUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WetSurfaceUniforms.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WetSurfaceUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WetSurfaceUniforms.java index fc300f3..fb8bfdc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/WetSurfaceUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/uniform/impl/world/liquid/WetSurfaceUniforms.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.uniform.impl; +package dev.loki.lovisual.render.engine.uniform.impl.world.liquid; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; import org.joml.Matrix4f; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.rhi.uniform.LoVisualUniformAllocator; public enum WetSurfaceUniforms { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/visuals/LoVisualVisuals.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/visuals/LoVisualVisuals.java index 2a1b372..fcc6df8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/visuals/LoVisualVisuals.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/visuals/LoVisualVisuals.java @@ -16,12 +16,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.server.packs.resources.ResourceManager; import org.joml.Matrix4f; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.depth.PreTranslucentDepth; -import dev.loki.lovisual.render.engine.postprocess.PostProcessManager; +import dev.loki.lovisual.render.engine.postprocess.post.PostProcessManager; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; -import dev.loki.lovisual.render.engine.uniform.impl.PostProcessUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostProcessUniforms; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldBatcher.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldBatcher.java index 9252c0e..f2efe23 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldBatcher.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldBatcher.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.render.engine.world; import com.mojang.blaze3d.pipeline.RenderPipeline; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldDrawCommand.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldDrawCommand.java index bda7b8d..ad8e26a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldDrawCommand.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldDrawCommand.java @@ -10,6 +10,7 @@ package dev.loki.lovisual.render.engine.world; import com.mojang.blaze3d.pipeline.RenderPipeline; import dev.loki.lovisual.render.engine.renderer.Renderer3D; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; /** * Renderer3D draw command before RHI compilation. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldPassCompiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldPassCompiler.java index fa1a57e..071a33f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldPassCompiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldPassCompiler.java @@ -6,6 +6,10 @@ */ package dev.loki.lovisual.render.engine.world; +import dev.loki.lovisual.render.engine.world.mesh.WorldWideLineMeshCompiler; +import dev.loki.lovisual.render.engine.world.stats.WorldRenderStats; +import dev.loki.lovisual.render.engine.world.stats.WorldRenderStatsSnapshot; + import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.pipeline.RenderPipeline; @@ -15,17 +19,17 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; -import dev.loki.lovisual.mixininterface.IMsaaTexture; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.mixininterface.device.IMsaaTexture; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; import dev.loki.lovisual.render.engine.core.policy.DepthProvider; import dev.loki.lovisual.render.engine.depth.PreTranslucentDepth; import dev.loki.lovisual.render.engine.renderer.Renderer3D; -import dev.loki.lovisual.render.engine.rhi.GpuMeshHandle; -import dev.loki.lovisual.render.engine.rhi.RhiDrawCommand; -import dev.loki.lovisual.render.engine.rhi.pipeline.DepthPolicy; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineRegistry; -import dev.loki.lovisual.render.engine.rhi.pipeline.RenderPipelineSpec; +import dev.loki.lovisual.render.engine.rhi.resource.GpuMeshHandle; +import dev.loki.lovisual.render.engine.rhi.command.RhiDrawCommand; +import dev.loki.lovisual.render.engine.rhi.pipeline.depth.DepthPolicy; +import dev.loki.lovisual.render.engine.rhi.pipeline.layout.RenderPipelineRegistry; +import dev.loki.lovisual.render.engine.rhi.pipeline.pipeline.RenderPipelineSpec; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldWideLineMeshCompiler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/mesh/WorldWideLineMeshCompiler.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldWideLineMeshCompiler.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/mesh/WorldWideLineMeshCompiler.java index 11272b0..45dd96b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldWideLineMeshCompiler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/mesh/WorldWideLineMeshCompiler.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.world; +package dev.loki.lovisual.render.engine.world.mesh; +import dev.loki.lovisual.render.engine.world.WorldDrawCommand; + import com.mojang.blaze3d.pipeline.RenderPipeline; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStats.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStats.java index 7d97c58..5f8f919 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStats.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.world; +package dev.loki.lovisual.render.engine.world.stats; /** * Lightweight Renderer3D/World command stats. RHI still owns GPU upload/draw counters. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStatsSnapshot.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStatsSnapshot.java index b1a10c6..150c746 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/WorldRenderStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/engine/world/stats/WorldRenderStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.engine.world; +package dev.loki.lovisual.render.engine.world.stats; public record WorldRenderStatsSnapshot(long frameId, long recordedCommands, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeContext.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeContext.java index df81e5c..97e804a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/ViewObstructionFadeContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render; +package dev.loki.lovisual.render.fade; import java.util.ArrayDeque; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeState.java new file mode 100644 index 0000000..e4116b1 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/fade/ViewObstructionFadeState.java @@ -0,0 +1,18 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.fade; + +public interface ViewObstructionFadeState { + public boolean lovisual$isViewObstructionFadeActive(); + + public float lovisual$getViewObstructionFadeAlpha(); + + public void lovisual$setViewObstructionFadeActive(boolean active); + + public void lovisual$setViewObstructionFadeAlpha(float alpha); +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ClipFunction.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ClipFunction.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ClipFunction.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ClipFunction.java index 7b8e715..15c8a6a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ClipFunction.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ClipFunction.java @@ -5,16 +5,34 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.clip; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.renderer.ui.draw.*; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiChamferRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiRect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerMode; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShapeKind; import dev.loki.lovisual.render.engine.rhi.clip.ShapeClipBackend; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayDeque; import java.util.Deque; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiBoxShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiChamferRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerKind; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerMode; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerRadii; +import dev.loki.lovisual.render.engine.renderer.ui.draw.corner.UiCornerSpec; +import dev.loki.lovisual.render.engine.renderer.ui.draw.box.UiRect; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShape; +import dev.loki.lovisual.render.engine.renderer.ui.draw.shape.UiShapeKind; +import dev.loki.lovisual.render.helpers.clip.ScissorFunction; /** * Higher-level clipping stack. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScissorFunction.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScissorFunction.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScissorFunction.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScissorFunction.java index 53f7b3e..56e29b7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScissorFunction.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScissorFunction.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.clip; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; -import dev.loki.lovisual.mixininterface.IGpuDevice; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.mixininterface.device.IGpuDevice; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; import java.util.ArrayDeque; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenProjection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenProjection.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenProjection.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenProjection.java index 0fea78f..68696df 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenProjection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenProjection.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.clip; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; @@ -15,7 +15,7 @@ import org.joml.Matrix4f; import org.joml.Quaternionf; import org.joml.Vector4f; import dev.loki.lovisual.features.module.modules.visuals.camera.AspectRatio; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; /** * Helper for projecting world-space points into screen-space pixels. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenSpaceOverlay2D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenSpaceOverlay2D.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenSpaceOverlay2D.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenSpaceOverlay2D.java index cfd4c41..9d74986 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ScreenSpaceOverlay2D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/clip/ScreenSpaceOverlay2D.java @@ -5,18 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.clip; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.render.engine.color.RenderColor; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.render.engine.text.FontInfo; -import dev.loki.lovisual.render.engine.text.Fonts; -import dev.loki.lovisual.render.engine.text.TextRenderer; +import dev.loki.lovisual.render.engine.text.font.info.FontInfo; +import dev.loki.lovisual.render.engine.text.font.Fonts; +import dev.loki.lovisual.render.engine.text.render.TextRenderer; import java.util.List; +import dev.loki.lovisual.render.helpers.clip.ScreenProjection; public enum ScreenSpaceOverlay2D { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/EffectIconRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/EffectIconRenderer.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/EffectIconRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/EffectIconRenderer.java index 631b8f0..ef23ba1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/EffectIconRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/EffectIconRenderer.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.material; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.Hud; import net.minecraft.resources.Identifier; import net.minecraft.world.effect.MobEffectInstance; +import dev.loki.lovisual.render.helpers.util.GuiSpriteBatch; public enum EffectIconRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/MatteHudStyle.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/MatteHudStyle.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/MatteHudStyle.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/MatteHudStyle.java index 394adbd..15ddf1a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/MatteHudStyle.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/MatteHudStyle.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.material; import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.features.theme.Themes; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumMaterialFlags.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumMaterialFlags.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumMaterialFlags.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumMaterialFlags.java index 677c8cc..744f6d0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumMaterialFlags.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumMaterialFlags.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.material; public enum SodiumMaterialFlags { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumSurfaceFlagContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumSurfaceFlagContext.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumSurfaceFlagContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumSurfaceFlagContext.java index cbe0084..fcdbefc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SodiumSurfaceFlagContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/material/SodiumSurfaceFlagContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.material; import net.minecraft.tags.BlockTags; import net.minecraft.core.BlockPos; @@ -20,6 +20,7 @@ import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; import dev.loki.lovisual.util.logging.DebugLog; import java.util.ArrayDeque; +import dev.loki.lovisual.render.helpers.material.SodiumMaterialFlags; public enum SodiumSurfaceFlagContext { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/HeadAnchor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/HeadAnchor.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/HeadAnchor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/HeadAnchor.java index 16c7dd5..5b68985 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/HeadAnchor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/HeadAnchor.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.player; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; @@ -207,4 +207,4 @@ public final class HeadAnchor { this.current = current; } } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/Particle3D.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/Particle3D.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/Particle3D.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/Particle3D.java index d0bddfb..df317e2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/Particle3D.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/Particle3D.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.player; import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/PlayerHeadRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/PlayerHeadRenderer.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/PlayerHeadRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/PlayerHeadRenderer.java index 9e59214..8eac5b5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/PlayerHeadRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/PlayerHeadRenderer.java @@ -5,16 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.player; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.resources.Identifier; -import dev.loki.lovisual.mixininterface.IGuiGraphics; +import dev.loki.lovisual.mixininterface.render.IGuiGraphics; import dev.loki.lovisual.render.engine.color.RenderColor; -import dev.loki.lovisual.render.engine.core.ViewportContext; +import dev.loki.lovisual.render.engine.core.context.ViewportContext; import dev.loki.lovisual.render.engine.renderer.Renderer2D; -import dev.loki.lovisual.util.player.PlayerSkinResolver; +import dev.loki.lovisual.util.player.health.PlayerSkinResolver; public enum PlayerHeadRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TrailPoint.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/TrailPoint.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TrailPoint.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/TrailPoint.java index a64b8cb..523ae71 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TrailPoint.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/player/TrailPoint.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.player; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/GuiSpriteBatch.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/GuiSpriteBatch.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/GuiSpriteBatch.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/GuiSpriteBatch.java index 911b358..ed29c07 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/GuiSpriteBatch.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/GuiSpriteBatch.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.util; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureAtlas; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ParticleTextureMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/ParticleTextureMode.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ParticleTextureMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/ParticleTextureMode.java index f06bfcb..2ac4b13 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/ParticleTextureMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/ParticleTextureMode.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.util; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum ParticleTextureMode implements EnumValue.IdProvider { BLOOM("bloom"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SystemCursor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/SystemCursor.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SystemCursor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/SystemCursor.java index 246201c..72aa91e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/SystemCursor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/SystemCursor.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.util; import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.platform.cursor.CursorTypes; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; -import dev.loki.lovisual.render.engine.core.LoVisualRenderSystem; -import dev.loki.lovisual.render.engine.core.RenderFrameContext; +import dev.loki.lovisual.render.engine.core.system.LoVisualRenderSystem; +import dev.loki.lovisual.render.engine.core.frame.RenderFrameContext; public enum SystemCursor { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TickDelta.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/TickDelta.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TickDelta.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/TickDelta.java index 6e45f8b..dc7e632 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/TickDelta.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/helpers/util/TickDelta.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.helpers; +package dev.loki.lovisual.render.helpers.util; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesReveal.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesReveal.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesReveal.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesReveal.java index 33a0a66..0fd4864 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesReveal.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesReveal.java @@ -5,11 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render; +package dev.loki.lovisual.render.invisible; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.InvisEsp; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; import net.minecraft.client.renderer.rendertype.RenderType; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesState.java similarity index 66% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesState.java index 149af2e..d9d0a8d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/SeeInvisiblesState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/invisible/SeeInvisiblesState.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render; +package dev.loki.lovisual.render.invisible; /** * Marker injected into entity render states when InvisESP reveals * an invisible player this frame. */ public interface SeeInvisiblesState { - boolean lovisual$isSeeInvisRevealed(); + public boolean lovisual$isSeeInvisRevealed(); - void lovisual$setSeeInvisRevealed(boolean revealed); + public void lovisual$setSeeInvisRevealed(boolean revealed); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityFeature.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityFeature.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityFeature.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityFeature.java index 1889de0..845f2ac 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityFeature.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityFeature.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.compat; public enum IrisCompatibilityFeature { FOG_POLICY, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityGuards.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityGuards.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityGuards.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityGuards.java index 76c4cd7..8495562 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityGuards.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityGuards.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.compat; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.fx.MotionBlur; import dev.loki.lovisual.Lifecycle; import dev.loki.lovisual.features.module.modules.visuals.scene.Chams; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityFeature; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; public enum IrisCompatibilityGuards { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfile.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfile.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfile.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfile.java index fe2df8e..e52039c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfile.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfile.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.compat; import java.util.EnumSet; import java.util.Set; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityFeature; public record IrisCompatibilityProfile( String id, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfiles.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfiles.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfiles.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfiles.java index 6772de3..b42ee92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisCompatibilityProfiles.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/compat/IrisCompatibilityProfiles.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.compat; import java.util.Locale; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfile; public enum IrisCompatibilityProfiles { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchCompilerCli.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchCompilerCli.java index d2aa731..406b2cc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchCompilerCli.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchCompilerCli.java @@ -17,6 +17,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import dev.loki.lovisual.render.iris.patch.ShaderPatchEngine; public final class ShaderPatchCompilerCli { private static final Pattern INCLUDE = Pattern.compile("^\\s*#include\\s+\"([^\"]+)\""); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchEngine.java index 4745678..0235790 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/patch/ShaderPatchEngine.java @@ -24,6 +24,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import dev.loki.lovisual.render.iris.patch.ShaderPatchCompiler; public enum ShaderPatchEngine { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntime.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntime.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntime.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntime.java index afb8a0f..89e6222 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntime.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntime.java @@ -5,10 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.runtime; import net.fabricmc.loader.api.FabricLoader; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityFeature; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfile; +import dev.loki.lovisual.render.iris.runtime.IrisRuntimeBridge; +import dev.loki.lovisual.render.iris.runtime.IrisRuntimeSnapshot; public enum IrisRuntime { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeBridge.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeBridge.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeBridge.java index 995923e..fcfbe09 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeBridge.java @@ -5,13 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.runtime; import com.mojang.blaze3d.pipeline.RenderPipeline; import net.irisshaders.iris.Iris; import net.irisshaders.iris.api.v0.IrisApi; import net.irisshaders.iris.api.v0.IrisProgram; import dev.loki.lovisual.render.LoVisualEntityRenderTypes; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfile; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfiles; +import dev.loki.lovisual.render.iris.runtime.IrisRuntimeSnapshot; public enum IrisRuntimeBridge { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeSnapshot.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeSnapshot.java index 409ecf3..95ef1ff 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisRuntimeSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/IrisRuntimeSnapshot.java @@ -5,7 +5,8 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.runtime; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityProfile; public record IrisRuntimeSnapshot( boolean modLoaded, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/LoVisualIrisUniforms.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/LoVisualIrisUniforms.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/LoVisualIrisUniforms.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/LoVisualIrisUniforms.java index b5ea12c..c2d64e7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/LoVisualIrisUniforms.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/runtime/LoVisualIrisUniforms.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.runtime; import net.irisshaders.iris.gl.uniform.UniformHolder; import net.irisshaders.iris.gl.uniform.UniformUpdateFrequency; @@ -13,12 +13,13 @@ import net.minecraft.client.Minecraft; import net.minecraft.world.level.Level; import net.minecraft.world.level.material.FogType; import org.joml.Vector3f; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.player.FullBright; import dev.loki.lovisual.features.module.modules.visuals.weather.WorldTweaks; import dev.loki.lovisual.render.engine.RenderState; import dev.loki.lovisual.render.engine.light.LightmapState; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityGuards; public enum LoVisualIrisUniforms { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisFinalizedSceneRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisFinalizedSceneRenderer.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisFinalizedSceneRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisFinalizedSceneRenderer.java index f00d914..9ef2417 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisFinalizedSceneRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisFinalizedSceneRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.scene; import net.minecraft.client.DeltaTracker; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSceneDepth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSceneDepth.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSceneDepth.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSceneDepth.java index 945a98d..2b0ba61 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSceneDepth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSceneDepth.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.scene; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuTexture; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSecondHandScene.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSecondHandScene.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSecondHandScene.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSecondHandScene.java index 2c411f9..602981a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisSecondHandScene.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/scene/IrisSecondHandScene.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.scene; import net.irisshaders.iris.pipeline.WorldRenderingPipeline; import net.minecraft.client.Minecraft; import dev.loki.lovisual.render.engine.depth.WorldSceneDepth; +import dev.loki.lovisual.render.iris.compat.IrisCompatibilityGuards; public enum IrisSecondHandScene { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisHandMaskState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisHandMaskState.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisHandMaskState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisHandMaskState.java index 3169a00..0a720a7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisHandMaskState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisHandMaskState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.state; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisLoVisualFrameHooks.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisLoVisualFrameHooks.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisLoVisualFrameHooks.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisLoVisualFrameHooks.java index 9894952..aa71a37 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/IrisLoVisualFrameHooks.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/iris/state/IrisLoVisualFrameHooks.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.iris; +package dev.loki.lovisual.render.iris.state; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import dev.loki.lovisual.util.logging.DebugLog; +import dev.loki.lovisual.render.iris.scene.IrisFinalizedSceneRenderer; public enum IrisLoVisualFrameHooks { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sky/CustomSkyboxRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sky/CustomSkyboxRenderer.java index f9699e9..d590925 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sky/CustomSkyboxRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sky/CustomSkyboxRenderer.java @@ -27,7 +27,7 @@ import org.joml.Matrix4f; import org.joml.Matrix4fStack; import org.joml.Quaternionf; import org.joml.Vector3f; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.module.modules.visuals.camera.Freecam; import dev.loki.lovisual.features.module.modules.visuals.visibility.NoRender; import dev.loki.lovisual.features.module.modules.visuals.scene.ReimaginedVisual; @@ -36,15 +36,15 @@ import dev.loki.lovisual.features.theme.Theme; import dev.loki.lovisual.mixins.accessors.renderer.GameRendererAccessor; import dev.loki.lovisual.mixins.accessors.entity.LocalPlayerAccessor; import dev.loki.lovisual.render.engine.RenderState; -import dev.loki.lovisual.render.engine.core.LoVisualWorldMatrices; +import dev.loki.lovisual.render.engine.core.system.LoVisualWorldMatrices; import dev.loki.lovisual.render.engine.animation.AnimationUtility; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.renderer.FullScreenRenderer; import dev.loki.lovisual.render.engine.renderer.MeshRenderer; import dev.loki.lovisual.render.engine.uniform.MeshBuilder; -import dev.loki.lovisual.render.engine.uniform.impl.ShaderSkyUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.SkySunUniforms; -import dev.loki.lovisual.render.engine.uniform.impl.SkyboxShaderUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.sky.ShaderSkyUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.sky.sun.SkySunUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.sky.SkyboxShaderUniforms; public enum CustomSkyboxRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumFrameContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumFrameContext.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumFrameContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumFrameContext.java index 2fc6417..43531a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumFrameContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumFrameContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.bridge; /** * Captured Sodium world-renderer state for the current LoVisual frame. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumRenderBridge.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumRenderBridge.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumRenderBridge.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumRenderBridge.java index 7aeada6..c140531 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumRenderBridge.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumRenderBridge.java @@ -5,7 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.bridge; +import dev.loki.lovisual.render.sodium.interop.SodiumTerrainInterop; +import dev.loki.lovisual.render.sodium.visibility.SodiumSectionVisibilityProvider; +import dev.loki.lovisual.render.sodium.visibility.SodiumVisibilityStatsSnapshot; + import net.minecraft.world.phys.AABB; import dev.loki.lovisual.render.engine.core.policy.VisibilityQuery; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumShaderWorkarounds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumShaderWorkarounds.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumShaderWorkarounds.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumShaderWorkarounds.java index f5beab9..88fdba9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumShaderWorkarounds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/bridge/SodiumShaderWorkarounds.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.bridge; import net.minecraft.resources.Identifier; import dev.loki.lovisual.util.logging.DebugLog; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInterop.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInterop.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInterop.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInterop.java index 237f46f..faaa5ac 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInterop.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInterop.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.interop; +import dev.loki.lovisual.render.sodium.bridge.SodiumRenderBridge; + /** * Central terrain interop state for Sodium mixins and LoVisual render code. @@ -17,7 +19,7 @@ public final class SodiumTerrainInterop { private long rebuildsScheduled; private long interopErrors; - SodiumTerrainInterop(SodiumRenderBridge bridge) { + public SodiumTerrainInterop(SodiumRenderBridge bridge) { this.bridge = bridge; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInteropStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInteropStatsSnapshot.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInteropStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInteropStatsSnapshot.java index 2963b6f..646a3f2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumTerrainInteropStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/interop/SodiumTerrainInteropStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.interop; public record SodiumTerrainInteropStatsSnapshot(long terrainUpdatesScheduled, long rebuildsScheduled, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkMeshFormats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkMeshFormats.java index ad0a55c..0b22556 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkMeshFormats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkMeshFormats.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.render.sodium.terrain; +import dev.loki.lovisual.render.sodium.terrain.vertex.LoVisualModelVertexType; + import net.caffeinemc.mods.sodium.client.render.chunk.vertex.format.ChunkVertexType; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkVertexExtension.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkVertexExtension.java deleted file mode 100644 index fd61128..0000000 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualChunkVertexExtension.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of the LoVisual Client distribution. - * Copyright (c) 2026 loki5512344. - * - * Licensed under the GNU General Public License v3.0. - */ - -package dev.loki.lovisual.render.sodium.terrain; - -public interface LoVisualChunkVertexExtension { - void lovisual$setSurfaceFlags(int surfaceFlags); - - int lovisual$getSurfaceFlags(); - - void lovisual$copyData(LoVisualChunkVertexExtension dest); -} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualChunkVertexExtension.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualChunkVertexExtension.java new file mode 100644 index 0000000..3727324 --- /dev/null +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualChunkVertexExtension.java @@ -0,0 +1,16 @@ +/* + * This file is part of the LoVisual Client distribution. + * Copyright (c) 2026 loki5512344. + * + * Licensed under the GNU General Public License v3.0. + */ + +package dev.loki.lovisual.render.sodium.terrain.vertex; + +public interface LoVisualChunkVertexExtension { + public void lovisual$setSurfaceFlags(int surfaceFlags); + + public int lovisual$getSurfaceFlags(); + + public void lovisual$copyData(LoVisualChunkVertexExtension dest); +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualModelVertexType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualModelVertexType.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualModelVertexType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualModelVertexType.java index 73a861e..9f11106 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualModelVertexType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualModelVertexType.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium.terrain; +package dev.loki.lovisual.render.sodium.terrain.vertex; +import dev.loki.lovisual.render.sodium.terrain.LoVisualChunkMeshAttributes; + import com.mojang.blaze3d.GpuFormat; import com.mojang.blaze3d.vertex.VertexFormat; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualTerrainVertex.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualTerrainVertex.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualTerrainVertex.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualTerrainVertex.java index 710ad38..cd79261 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/LoVisualTerrainVertex.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/terrain/vertex/LoVisualTerrainVertex.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium.terrain; +package dev.loki.lovisual.render.sodium.terrain.vertex; import net.caffeinemc.mods.sodium.api.util.ColorARGB; import net.caffeinemc.mods.sodium.client.render.chunk.vertex.format.ChunkVertexEncoder; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumSectionVisibilityProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumSectionVisibilityProvider.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumSectionVisibilityProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumSectionVisibilityProvider.java index 0329ecc..f72bb2c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumSectionVisibilityProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumSectionVisibilityProvider.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.visibility; +import dev.loki.lovisual.render.sodium.bridge.SodiumRenderBridge; + import net.minecraft.world.phys.AABB; import dev.loki.lovisual.render.engine.core.policy.VisibilityProvider; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumVisibilityStatsSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumVisibilityStatsSnapshot.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumVisibilityStatsSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumVisibilityStatsSnapshot.java index 68fb2b4..7f84271 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/SodiumVisibilityStatsSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/render/sodium/visibility/SodiumVisibilityStatsSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.render.sodium; +package dev.loki.lovisual.render.sodium.visibility; public record SodiumVisibilityStatsSnapshot(long queries, long accepts, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/NarratorBlocker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/NarratorBlocker.java index 1f440dc..0d2e1b2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/NarratorBlocker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/NarratorBlocker.java @@ -10,7 +10,7 @@ package dev.loki.lovisual.util; import net.minecraft.client.Minecraft; import net.minecraft.client.NarratorStatus; import net.minecraft.client.Options; -import dev.loki.lovisual.config.MainConfig; +import dev.loki.lovisual.config.i18n.MainConfig; //Да ну нахуй эту залупу блять public enum NarratorBlocker { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/AimPointUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/AimPointUtil.java index 2a43270..39c0f79 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/AimPointUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/AimPointUtil.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.util.aiming; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; + import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RequestHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RequestHandler.java index 9e3ceaa..f4a8788 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RequestHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RequestHandler.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.aiming; -import dev.loki.lovisual.features.module.Module; +import dev.loki.lovisual.features.module.core.Module; import java.util.Comparator; import java.util.concurrent.PriorityBlockingQueue; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/data/Rotation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/data/Rotation.java index fb2876b..ee97c18 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/data/Rotation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/data/Rotation.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.util.aiming.data; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; public record Rotation(float yaw, float pitch, boolean isNormalized) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/MovementCorrection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/MovementCorrection.java index 1f22966..4aade46 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/MovementCorrection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/MovementCorrection.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.aiming.features; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum MovementCorrection implements EnumValue.IdProvider { OFF("Off"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/FailRotationProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/FailRotationProcessor.java index 07d87f3..e0ada2d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/FailRotationProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/FailRotationProcessor.java @@ -6,13 +6,15 @@ */ package dev.loki.lovisual.util.aiming.features.processors; +import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; + +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.GameTickEvent; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import java.util.concurrent.ThreadLocalRandom; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/RotationProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/RotationProcessor.java index 2977f7d..1a5c9b0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/RotationProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/RotationProcessor.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.aiming.features.processors; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; public interface RotationProcessor { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/AngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/AngleSmooth.java index ff25f8d..7aab61e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/AngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/AngleSmooth.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/FactorAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/FactorAngleSmooth.java index 0f2d29e..9f46917 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/FactorAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/FactorAngleSmooth.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth; -import dev.loki.lovisual.util.aiming.RotationTarget; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/NoneAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/NoneAngleSmooth.java index b9a08cc..8858bbc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/NoneAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/NoneAngleSmooth.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; public final class NoneAngleSmooth extends AngleSmooth { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/AccelerationAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/AccelerationAngleSmooth.java index 22a19fa..f1cc6c2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/AccelerationAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/AccelerationAngleSmooth.java @@ -7,11 +7,11 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.data.RotationDelta; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.AngleSmooth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/InterpolationAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/InterpolationAngleSmooth.java index dbc931d..7650a7d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/InterpolationAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/InterpolationAngleSmooth.java @@ -7,10 +7,10 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.FactorAngleSmooth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/LinearAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/LinearAngleSmooth.java index d0d7c87..d74c1e9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/LinearAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/LinearAngleSmooth.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.FactorAngleSmooth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SigmoidAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SigmoidAngleSmooth.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SigmoidAngleSmooth.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SigmoidAngleSmooth.java index 7b7b188..6f6efaa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SigmoidAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SigmoidAngleSmooth.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; +package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.FactorAngleSmooth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SmartAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SmartAngleSmooth.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SmartAngleSmooth.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SmartAngleSmooth.java index 2fcd949..6a13b64 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SmartAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SmartAngleSmooth.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; +package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves; import net.minecraft.util.Mth; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.AngleSmooth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SpookyAngleSmooth.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SpookyAngleSmooth.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SpookyAngleSmooth.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SpookyAngleSmooth.java index 4796832..3685ea4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/SpookyAngleSmooth.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/anglesmooth/impl/curves/SpookyAngleSmooth.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl; +package dev.loki.lovisual.util.aiming.features.processors.anglesmooth.impl.curves; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.processors.anglesmooth.AngleSmooth; import dev.loki.lovisual.util.click.AttackPressing; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/LazyAimProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/LazyAimProcessor.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/LazyAimProcessor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/LazyAimProcessor.java index ce3dc26..7baa695 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/LazyAimProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/LazyAimProcessor.java @@ -5,10 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors; +package dev.loki.lovisual.util.aiming.features.processors.impl; +import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationTarget; + +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; public final class LazyAimProcessor implements RotationProcessor { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/MovingRotationProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/MovingRotationProcessor.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/MovingRotationProcessor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/MovingRotationProcessor.java index 755f4be..47be756 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/MovingRotationProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/MovingRotationProcessor.java @@ -5,14 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors; +package dev.loki.lovisual.util.aiming.features.processors.impl; +import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; + import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.aiming.RotationTarget; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/ShakeAimProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/ShakeAimProcessor.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/ShakeAimProcessor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/ShakeAimProcessor.java index 6f62324..15f8087 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/ShakeAimProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/ShakeAimProcessor.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors; +package dev.loki.lovisual.util.aiming.features.processors.impl; +import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; + import net.minecraft.client.Minecraft; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationTarget; +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; public final class ShakeAimProcessor implements RotationProcessor { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/SnapAssistAimProcessor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/SnapAssistAimProcessor.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/SnapAssistAimProcessor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/SnapAssistAimProcessor.java index 898dc06..61741bf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/SnapAssistAimProcessor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/features/processors/impl/SnapAssistAimProcessor.java @@ -5,10 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming.features.processors; +package dev.loki.lovisual.util.aiming.features.processors.impl; +import dev.loki.lovisual.util.aiming.features.processors.RotationProcessor; -import dev.loki.lovisual.config.values.NumberValue; -import dev.loki.lovisual.util.aiming.RotationTarget; + +import dev.loki.lovisual.config.values.primitive.NumberValue; +import dev.loki.lovisual.util.aiming.rotation.RotationTarget; import dev.loki.lovisual.util.aiming.data.Rotation; public final class SnapAssistAimProcessor implements RotationProcessor { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/preference/LeastDifferencePreference.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/preference/LeastDifferencePreference.java index 129c708..fe03485 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/preference/LeastDifferencePreference.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/preference/LeastDifferencePreference.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.util.aiming.preference; import net.minecraft.client.Minecraft; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.aiming.RotationManager; -import dev.loki.lovisual.util.aiming.RotationUtil; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; import dev.loki.lovisual.util.aiming.data.Rotation; import java.util.Objects; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationManager.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationManager.java index 30e605d..c0cfbd8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationManager.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming; +package dev.loki.lovisual.util.aiming.rotation; +import dev.loki.lovisual.util.aiming.RequestHandler; + import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -22,7 +24,7 @@ import dev.loki.lovisual.events.impl.network.EventSync; import dev.loki.lovisual.events.impl.network.PacketEvent; import dev.loki.lovisual.events.impl.world.PlayerVelocityStrafe; import dev.loki.lovisual.events.impl.input.RotationUpdateEvent; -import dev.loki.lovisual.mixininterface.ILocalPlayer; +import dev.loki.lovisual.mixininterface.entity.ILocalPlayer; import dev.loki.lovisual.mixins.accessors.entity.EntityInvoker; import dev.loki.lovisual.util.aiming.data.Rotation; import dev.loki.lovisual.util.aiming.features.MovementCorrection; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationTarget.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationTarget.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationTarget.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationTarget.java index ed8ead2..4677864 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationTarget.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationTarget.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming; +package dev.loki.lovisual.util.aiming.rotation; +import dev.loki.lovisual.util.aiming.RestrictedSingleUseAction; + import net.minecraft.world.entity.Entity; import dev.loki.lovisual.util.aiming.data.Rotation; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationUtil.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationUtil.java index 7a4c1ad..944dd53 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/RotationUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/aiming/rotation/RotationUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.aiming; +package dev.loki.lovisual.util.aiming.rotation; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandDynamics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandDynamics.java index a205400..a6ee593 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandDynamics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandDynamics.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.util.animation.hand; +import dev.loki.lovisual.util.animation.hand.state.HandAnimState; + import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; @@ -14,7 +16,7 @@ import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.HumanoidArm; import dev.loki.lovisual.features.module.modules.visuals.items.HoldMyItems; -import dev.loki.lovisual.render.helpers.TickDelta; +import dev.loki.lovisual.render.helpers.util.TickDelta; /** * Клей между рендером руки и чистой математикой динамики: собирает ввод diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandAnimState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/HandAnimState.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandAnimState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/HandAnimState.java index 305ef0d..b6422bc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/HandAnimState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/HandAnimState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.animation.hand; +package dev.loki.lovisual.util.animation.hand.state; import dev.loki.lovisual.util.animation.SmoothValue; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/SwayState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/SwayState.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/SwayState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/SwayState.java index c4c2a44..9510951 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/SwayState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/animation/hand/state/SwayState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.animation.hand; +package dev.loki.lovisual.util.animation.hand.state; /** * Накопитель «отставания» предмета от поворота камеры (view sway). diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/BedBlockUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/BedBlockUtil.java index 46f6ca4..59cba63 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/BedBlockUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/BedBlockUtil.java @@ -13,7 +13,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.BedBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.block.BlockSearchUtil; +import dev.loki.lovisual.util.block.scan.BlockSearchUtil; import java.util.*; import java.util.function.BiPredicate; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedMode.java index 2e6d531..885fac0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedMode.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.block.bed; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum SelfBedMode implements EnumValue.IdProvider { NONE("none"), @@ -25,4 +25,4 @@ public enum SelfBedMode implements EnumValue.IdProvider { public String id() { return id; } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedTracker.java index f442ec0..5e94635 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/bed/SelfBedTracker.java @@ -23,6 +23,8 @@ import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.render.GameTickEvent; import dev.loki.lovisual.events.impl.network.PacketEvent; import dev.loki.lovisual.features.gui.hud.draggable.impl.hudnotifier.HudNotifier; +import dev.loki.lovisual.util.block.bed.BedBlockUtil; +import dev.loki.lovisual.util.block.bed.SelfBedMode; public final class SelfBedTracker { public static final SelfBedTracker INSTANCE = new SelfBedTracker(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineRenderer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineRenderer.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineRenderer.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineRenderer.java index 6c32d09..8468e95 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineRenderer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineRenderer.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.render; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -16,6 +16,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import dev.loki.lovisual.render.engine.renderer.Renderer3D; +import dev.loki.lovisual.util.block.render.BlockOutlineShapeMode; public enum BlockOutlineRenderer { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineShapeMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineShapeMode.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineShapeMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineShapeMode.java index a094ee8..26c6221 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockOutlineShapeMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/BlockOutlineShapeMode.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.render; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum BlockOutlineShapeMode implements EnumValue.IdProvider { FULL_BLOCK("full_block"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/RenderSectionBlockScanner.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/RenderSectionBlockScanner.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/RenderSectionBlockScanner.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/RenderSectionBlockScanner.java index e951534..81d906d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/RenderSectionBlockScanner.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/RenderSectionBlockScanner.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.render; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/WorldSectionBlockScanner.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/WorldSectionBlockScanner.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/WorldSectionBlockScanner.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/WorldSectionBlockScanner.java index 579dfeb..0abebcb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/WorldSectionBlockScanner.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/render/WorldSectionBlockScanner.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.render; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockDeobfuscationScanner.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockDeobfuscationScanner.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockDeobfuscationScanner.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockDeobfuscationScanner.java index b5ed10b..ea21eb8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockDeobfuscationScanner.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockDeobfuscationScanner.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.scan; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; @@ -17,6 +17,7 @@ import net.minecraft.world.phys.AABB; import java.util.*; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Predicate; +import dev.loki.lovisual.util.block.render.RenderSectionBlockScanner; public final class BlockDeobfuscationScanner { private final ArrayList queue = new ArrayList<>(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanContext.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanContext.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanContext.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanContext.java index cf767e6..2889aeb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanContext.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanContext.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.scan; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; @@ -15,7 +15,7 @@ import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.ItemIdSetValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; import java.util.HashSet; import java.util.Set; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanMode.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanMode.java index cd55dac..afc4c58 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockScanMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockScanMode.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.scan; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockSearchUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockSearchUtil.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockSearchUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockSearchUtil.java index 04c29df..77ae5e7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/BlockSearchUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/block/scan/BlockSearchUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.block; +package dev.loki.lovisual.util.block.scan; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/AttackPressing.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/AttackPressing.java index 9d34cd7..68e23ee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/AttackPressing.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/AttackPressing.java @@ -14,8 +14,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.Items; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.network.PacketEvent; -import dev.loki.lovisual.util.combat.LethalStrikeCalculator; -import dev.loki.lovisual.util.player.inventory.InventorySwap; +import dev.loki.lovisual.util.combat.rotation.LethalStrikeCalculator; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; /** * Shared modern attack gate logic. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/ClickHumanizer.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/ClickHumanizer.java index ae7d585..5213a61 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/ClickHumanizer.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/click/ClickHumanizer.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.util.click; -import dev.loki.lovisual.config.values.BooleanMapValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.BooleanMapValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import java.util.concurrent.ThreadLocalRandom; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AttackUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/AttackUtil.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AttackUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/AttackUtil.java index 4098c7a..75a49d2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AttackUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/AttackUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.attack; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -18,15 +18,16 @@ import net.minecraft.world.item.Items; import dev.loki.lovisual.events.Events; import dev.loki.lovisual.events.impl.entity.AttackEntityEvent; import dev.loki.lovisual.features.gui.hud.draggable.impl.targethud.TargetHud; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.RubberHand; -import dev.loki.lovisual.features.module.modules.misc.HitSounds; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.RubberHand; +import dev.loki.lovisual.features.module.modules.misc.sound.HitSounds; import dev.loki.lovisual.features.module.modules.visuals.effects.HitEffect; import dev.loki.lovisual.mixins.accessors.entity.LocalPlayerAccessor; import dev.loki.lovisual.mixins.accessors.misc.MultiPlayerGameModeAccessor; -import dev.loki.lovisual.util.item.FoodUtil; -import dev.loki.lovisual.util.player.ResetAttackCooldown; +import dev.loki.lovisual.util.item.food.FoodUtil; +import dev.loki.lovisual.util.player.interaction.ResetAttackCooldown; import dev.loki.lovisual.util.target.TargetManager; +import dev.loki.lovisual.util.combat.rotation.SprintController; public enum AttackUtil { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatStrikeController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/CombatStrikeController.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatStrikeController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/CombatStrikeController.java index a56218c..737e0da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatStrikeController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/CombatStrikeController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.attack; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -15,6 +15,9 @@ import dev.loki.lovisual.util.click.AttackPressing; import dev.loki.lovisual.util.click.ClickScheduler; import java.util.function.BooleanSupplier; +import dev.loki.lovisual.util.combat.attack.AttackUtil; +import dev.loki.lovisual.util.combat.attack.ProtocolAttackExecutor; +import dev.loki.lovisual.util.combat.rotation.SprintController; /** * Shared combat strike orchestration layer. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ProtocolAttackExecutor.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/ProtocolAttackExecutor.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ProtocolAttackExecutor.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/ProtocolAttackExecutor.java index 4d0fd74..b38b226 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ProtocolAttackExecutor.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/attack/ProtocolAttackExecutor.java @@ -5,15 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.attack; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.entity.LivingEntity; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.RubberHand; -import dev.loki.lovisual.util.item.FoodUtil; -import dev.loki.lovisual.util.player.ResetAttackCooldown; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.RubberHand; +import dev.loki.lovisual.util.item.food.FoodUtil; +import dev.loki.lovisual.util.player.interaction.ResetAttackCooldown; +import dev.loki.lovisual.util.combat.attack.AttackUtil; /** * Shared protocol-aware attack execution. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/ProtocolUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/ProtocolUtil.java index ce53907..c63117b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/ProtocolUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/ProtocolUtil.java @@ -17,6 +17,8 @@ import dev.loki.lovisual.util.combat.protocol.vfp.VfpCompatibility; import dev.loki.lovisual.util.combat.protocol.vfp.VfpCompatibility1_8; import java.util.Map; +import dev.loki.lovisual.util.combat.protocol.ClientProtocolVersion; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristics; /** * Protocol helpers with optional ViaFabricPlus support. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicSource.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicSource.java index 4f5ab0f..9dd808c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicSource.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat.protocol; +package dev.loki.lovisual.util.combat.protocol.heuristics; public enum CombatProtocolHeuristicSource { MESSAGES("messages"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristics.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristics.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristics.java index 9001663..01d3c27 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristics.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat.protocol; +package dev.loki.lovisual.util.combat.protocol.heuristics; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.pvp.CombatProtocolBossbarEvent; import dev.loki.lovisual.events.impl.pvp.PvpChatEvent; import dev.loki.lovisual.events.impl.pvp.PvpOverlayEvent; import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import java.util.EnumMap; import java.util.LinkedHashMap; @@ -22,6 +22,8 @@ import java.util.Map; import java.util.Optional; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristicSource; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristicsConfig; public final class CombatProtocolHeuristics { public static final CombatProtocolHeuristics INSTANCE = new CombatProtocolHeuristics(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicsConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicsConfig.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicsConfig.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicsConfig.java index 6879b15..77c98da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/CombatProtocolHeuristicsConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/heuristics/CombatProtocolHeuristicsConfig.java @@ -5,19 +5,20 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat.protocol; +package dev.loki.lovisual.util.combat.protocol.heuristics; -import dev.loki.lovisual.config.ConfigNameProvider; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.SetValue; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.collection.SetValue; import java.util.ArrayList; import java.util.EnumMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import dev.loki.lovisual.util.combat.protocol.heuristics.CombatProtocolHeuristicSource; public final class CombatProtocolHeuristicsConfig implements ConfigObject, ConfigNameProvider { public static final CombatProtocolHeuristicsConfig INSTANCE = new CombatProtocolHeuristicsConfig(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/vfp/VfpCompatibility1_8.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/vfp/VfpCompatibility1_8.java index 9376f1e..a489507 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/vfp/VfpCompatibility1_8.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/protocol/vfp/VfpCompatibility1_8.java @@ -16,6 +16,7 @@ import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_ import net.minecraft.core.BlockPos; import java.util.function.Consumer; +import dev.loki.lovisual.util.combat.protocol.vfp.VfpCompatibility; /** * Compatibility layer for ViaFabricPlus on protocol 1.8. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatRotationModeUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/CombatRotationModeUtil.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatRotationModeUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/CombatRotationModeUtil.java index f320cc4..03cd71f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/CombatRotationModeUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/CombatRotationModeUtil.java @@ -5,13 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.rotation; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.ModeValue; +import dev.loki.lovisual.config.values.mode.ModeValue; import dev.loki.lovisual.util.raycast.RaycastUtil; import dev.loki.lovisual.util.target.TargetingUtil; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/LethalStrikeCalculator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/LethalStrikeCalculator.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/LethalStrikeCalculator.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/LethalStrikeCalculator.java index 7bc4904..08b1c97 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/LethalStrikeCalculator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/LethalStrikeCalculator.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.rotation; import net.minecraft.core.Holder; import net.minecraft.core.Registry; @@ -31,9 +31,9 @@ import net.minecraft.world.item.MaceItem; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; -import dev.loki.lovisual.util.player.PlayerHealthResolver; -import dev.loki.lovisual.util.player.effect.StatusEffectInference; -import dev.loki.lovisual.util.player.effect.StatusEffectTracker; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectInference; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; public enum LethalStrikeCalculator { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/RubberHandUseUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/RubberHandUseUtil.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/RubberHandUseUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/RubberHandUseUtil.java index 9f198b0..732eba2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/RubberHandUseUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/RubberHandUseUtil.java @@ -5,11 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.rotation; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.RubberHand; -import dev.loki.lovisual.util.item.FoodUtil; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.RubberHand; +import dev.loki.lovisual.util.item.food.FoodUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.Items; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/SprintController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/SprintController.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/SprintController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/SprintController.java index 4e5977b..6f0513f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/SprintController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/rotation/SprintController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.rotation; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -15,6 +15,7 @@ import dev.loki.lovisual.events.impl.render.GameTickEvent; import dev.loki.lovisual.events.impl.network.PacketEvent; import dev.loki.lovisual.events.impl.input.SprintControlEvent; import dev.loki.lovisual.mixins.accessors.entity.LocalPlayerAccessor; +import dev.loki.lovisual.util.combat.attack.AttackUtil; /** * Shared sprint state/controller layer. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AntiBotTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/AntiBotTracker.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AntiBotTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/AntiBotTracker.java index 1efe647..8df3c8a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/AntiBotTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/AntiBotTracker.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.tracking; import com.mojang.authlib.GameProfile; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ReachMeter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/ReachMeter.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ReachMeter.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/ReachMeter.java index 667e44e..94339da 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/ReachMeter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/combat/tracking/ReachMeter.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.combat; +package dev.loki.lovisual.util.combat.tracking; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import java.util.Locale; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.overlay.ReachDisplay; /** * Tracks the reach (eye -> target hitbox distance) of the player's last attack diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/entity/EagleUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/entity/EagleUtil.java index fb7959f..91097d9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/entity/EagleUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/entity/EagleUtil.java @@ -12,7 +12,7 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.events.impl.movement.MovementInputEvent; -import dev.loki.lovisual.render.helpers.TickDelta; +import dev.loki.lovisual.render.helpers.util.TickDelta; public enum EagleUtil { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/input/KeyManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/input/KeyManager.java index 923a8d3..7a9bea8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/input/KeyManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/input/KeyManager.java @@ -10,8 +10,8 @@ package dev.loki.lovisual.util.input; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; import org.lwjgl.glfw.GLFW; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiRenderer; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiSearch; +import dev.loki.lovisual.features.gui.clickgui.render.ClickGuiRenderer; +import dev.loki.lovisual.features.gui.clickgui.tabs.ClickGuiSearch; import dev.loki.lovisual.util.logging.DebugLog; import java.util.HashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantMeta.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantMeta.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantMeta.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantMeta.java index 037ac4e..20782c5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantMeta.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantMeta.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.enchant; import net.minecraft.client.resources.language.I18n; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantRegistry.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantRegistry.java index 1957459..79f2bdc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantRegistry.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.enchant; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import java.util.Map; +import dev.loki.lovisual.util.item.enchant.EnchantMeta; public enum EnchantRegistry { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantUtil.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantUtil.java index 753bb15..6c3449d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/EnchantUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/EnchantUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.enchant; import net.minecraft.core.Holder; import net.minecraft.world.item.enchantment.Enchantment; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/TopEnchantUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/TopEnchantUtil.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/TopEnchantUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/TopEnchantUtil.java index 7dde3f3..0fc005d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/TopEnchantUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/enchant/TopEnchantUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.enchant; import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.minecraft.core.Holder; @@ -14,8 +14,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.ItemEnchantments; -import dev.loki.lovisual.config.values.ItemIdSetValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.DropESP; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; @@ -23,6 +23,7 @@ import java.util.LinkedHashSet; import java.util.Set; import java.util.function.BiConsumer; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; +import dev.loki.lovisual.util.item.food.IllegalItemUtil; /** * Shared helper for highlighting top (max-level) legal enchants used by DropESP/NameTags/BetterChat. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/FoodUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/FoodUtil.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/FoodUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/FoodUtil.java index eb3830c..886a556 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/FoodUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/FoodUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.food; import net.minecraft.core.component.DataComponents; import net.minecraft.world.effect.MobEffect; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/IllegalItemUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/IllegalItemUtil.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/IllegalItemUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/IllegalItemUtil.java index d92c205..2c61645 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/IllegalItemUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/food/IllegalItemUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.food; import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.minecraft.core.Holder; @@ -13,9 +13,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.ItemEnchantments; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import java.util.function.BiConsumer; +import dev.loki.lovisual.util.item.enchant.EnchantUtil; /** * Общая утилита проверки нелегальных предметов и цвета их подсветки. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/ItemRarityColorProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/ItemRarityColorProvider.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/ItemRarityColorProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/ItemRarityColorProvider.java index 9473a52..2d2c496 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/ItemRarityColorProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/ItemRarityColorProvider.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.rarity; import net.minecraft.world.item.ItemStack; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorConfig.java similarity index 85% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorConfig.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorConfig.java index e2c46e9..d60d677 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorConfig.java @@ -5,14 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.rarity; import net.minecraft.world.item.Rarity; -import dev.loki.lovisual.config.ConfigNameProvider; -import dev.loki.lovisual.config.ConfigObject; -import dev.loki.lovisual.config.ConfigSerializer; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.RGBColorValue; +import dev.loki.lovisual.config.definition.ConfigNameProvider; +import dev.loki.lovisual.config.definition.ConfigObject; +import dev.loki.lovisual.config.io.ConfigSerializer; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.DropESP; import java.util.ArrayList; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorUtil.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorUtil.java index 65e49aa..3cb7ed5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/RarityColorUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/item/rarity/RarityColorUtil.java @@ -5,12 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.item; +package dev.loki.lovisual.util.item.rarity; import dev.loki.lovisual.features.module.modules.visuals.esp.overlay.DropESP; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; +import dev.loki.lovisual.util.item.rarity.ItemRarityColorProvider; +import dev.loki.lovisual.util.item.rarity.RarityColorConfig; /** * Rarity -> RGBA for DropESP. Зачарованные вещи имеют минимум RARE. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/map/MapPlayersCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/map/MapPlayersCache.java index 601efa0..f3995c9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/map/MapPlayersCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/map/MapPlayersCache.java @@ -13,7 +13,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ServerData; -import dev.loki.lovisual.features.gui.hud.nondraggable.impl.CustomBar; +import dev.loki.lovisual.features.gui.hud.nondraggable.impl.bars.CustomBar; import dev.loki.lovisual.util.logging.DebugLog; import java.io.BufferedReader; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/DummyMediaPlayerInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/DummyMediaPlayerInfo.java index 187a164..6228fd5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/DummyMediaPlayerInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/DummyMediaPlayerInfo.java @@ -7,8 +7,8 @@ package dev.loki.lovisual.util.media.impl; -import dev.loki.lovisual.util.media.IMediaSession; -import dev.loki.lovisual.util.media.MediaPlayerInfo; +import dev.loki.lovisual.util.media.session.IMediaSession; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; import java.util.List; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaPlayerInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaPlayerInfo.java index 65354b9..3637796 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaPlayerInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaPlayerInfo.java @@ -13,12 +13,13 @@ import org.freedesktop.dbus.exceptions.DBusException; import org.freedesktop.dbus.interfaces.DBus; import org.freedesktop.dbus.interfaces.Properties; import org.freedesktop.dbus.types.Variant; -import dev.loki.lovisual.util.media.IMediaSession; -import dev.loki.lovisual.util.media.MediaPlayerInfo; import dev.loki.lovisual.util.media.impl.linux.dbus.Player; +import dev.loki.lovisual.util.media.session.IMediaSession; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.util.media.impl.linux.LinuxMediaSession; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaSession.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaSession.java index 1f01ac4..93c21dc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaSession.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/LinuxMediaSession.java @@ -9,10 +9,10 @@ package dev.loki.lovisual.util.media.impl.linux; import org.freedesktop.dbus.ObjectPath; import org.freedesktop.dbus.types.Variant; -import dev.loki.lovisual.util.media.IMediaSession; -import dev.loki.lovisual.util.media.MediaInfo; -import dev.loki.lovisual.util.media.RepeatMode; import dev.loki.lovisual.util.media.impl.linux.dbus.Player; +import dev.loki.lovisual.util.media.session.IMediaSession; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.info.RepeatMode; import java.io.InputStream; import java.net.URL; @@ -21,6 +21,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; +import dev.loki.lovisual.util.media.impl.linux.LinuxMediaPlayerInfo; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/dbus/Player.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/dbus/Player.java index df8a444..a52b54f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/dbus/Player.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/linux/dbus/Player.java @@ -15,6 +15,7 @@ import org.freedesktop.dbus.interfaces.DBusInterface; import org.freedesktop.dbus.types.Variant; import java.util.Map; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaPlayerInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaPlayerInfo.java index 69a09a5..b1f0489 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaPlayerInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaPlayerInfo.java @@ -8,9 +8,9 @@ package dev.loki.lovisual.util.media.impl.win; import org.lwjgl.BufferUtils; -import dev.loki.lovisual.util.media.IMediaSession; -import dev.loki.lovisual.util.media.MediaInfo; -import dev.loki.lovisual.util.media.MediaPlayerInfo; +import dev.loki.lovisual.util.media.session.IMediaSession; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; import java.io.IOException; import java.io.InputStream; @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.util.media.impl.win.WindowsMediaSession; /** * Modified Java/native port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaSession.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaSession.java index a22374f..882b02e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaSession.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/impl/win/WindowsMediaSession.java @@ -7,9 +7,10 @@ package dev.loki.lovisual.util.media.impl.win; -import dev.loki.lovisual.util.media.IMediaSession; -import dev.loki.lovisual.util.media.MediaInfo; -import dev.loki.lovisual.util.media.RepeatMode; +import dev.loki.lovisual.util.media.session.IMediaSession; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.info.RepeatMode; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; /** * Modified Java/native port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaInfo.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaInfo.java index 1373bb8..3a88969 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaInfo.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.media; +package dev.loki.lovisual.util.media.info; import java.util.Arrays; import java.util.Objects; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaPlayerInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaPlayerInfo.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaPlayerInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaPlayerInfo.java index 11546ed..6a24108 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaPlayerInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/MediaPlayerInfo.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.media; +package dev.loki.lovisual.util.media.info; import dev.loki.lovisual.util.media.impl.DummyMediaPlayerInfo; import dev.loki.lovisual.util.media.impl.linux.LinuxMediaPlayerInfo; @@ -13,6 +13,7 @@ import dev.loki.lovisual.util.media.impl.win.WindowsMediaPlayerInfo; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.util.media.session.IMediaSession; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/RepeatMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/RepeatMode.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/RepeatMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/RepeatMode.java index cd5e9b2..a8abba5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/RepeatMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/info/RepeatMode.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.media; +package dev.loki.lovisual.util.media.info; import java.util.Locale; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/IMediaSession.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/IMediaSession.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/IMediaSession.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/IMediaSession.java index 2ab1bd4..065bc25 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/IMediaSession.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/IMediaSession.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.media; +package dev.loki.lovisual.util.media.session; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; +import dev.loki.lovisual.util.media.info.RepeatMode; /** * Modified Java port for LoVisual by dev.loki.lovisual. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaSessionService.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/MediaSessionService.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaSessionService.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/MediaSessionService.java index fcfb3f3..26331d3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/MediaSessionService.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/media/session/MediaSessionService.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.media; +package dev.loki.lovisual.util.media.session; import com.mojang.blaze3d.platform.NativeImage; import net.minecraft.client.Minecraft; @@ -17,6 +17,10 @@ import dev.loki.lovisual.util.logging.DebugLog; import java.io.ByteArrayInputStream; import java.util.List; import java.util.Locale; +import dev.loki.lovisual.util.media.info.MediaInfo; +import dev.loki.lovisual.util.media.info.MediaPlayerInfo; +import dev.loki.lovisual.util.media.info.RepeatMode; +import dev.loki.lovisual.util.media.session.IMediaSession; public final class MediaSessionService { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BacktrackController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BacktrackController.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BacktrackController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BacktrackController.java index 498c393..ec528d5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BacktrackController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BacktrackController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.network; +package dev.loki.lovisual.util.network.control; import net.minecraft.client.Minecraft; import net.minecraft.network.protocol.Packet; @@ -19,7 +19,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.PositionMoveRotation; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.entity.AttackEntityEvent; import dev.loki.lovisual.events.impl.network.BlinkPacketEvent; @@ -29,6 +29,8 @@ import dev.loki.lovisual.util.target.TargetManager; import dev.loki.lovisual.util.target.TargetingUtil; import java.util.concurrent.ThreadLocalRandom; +import dev.loki.lovisual.util.network.control.BlinkManager; +import dev.loki.lovisual.util.network.packet.TransferOrigin; public final class BacktrackController { public static final BacktrackController INSTANCE = new BacktrackController(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BlinkManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BlinkManager.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BlinkManager.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BlinkManager.java index 5821d99..3089006 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/BlinkManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/BlinkManager.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.network; +package dev.loki.lovisual.util.network.control; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; @@ -34,6 +34,8 @@ import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Consumer; import java.util.function.Predicate; +import dev.loki.lovisual.util.network.packet.PacketSnapshot; +import dev.loki.lovisual.util.network.packet.TransferOrigin; public final class BlinkManager { public static final BlinkManager INSTANCE = new BlinkManager(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/FakeLagController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/FakeLagController.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/FakeLagController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/FakeLagController.java index 7660927..a17cfcf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/FakeLagController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/control/FakeLagController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.network; +package dev.loki.lovisual.util.network.control; import dev.loki.lovisual.util.screen.ClientScreen; import net.minecraft.client.Minecraft; @@ -19,15 +19,17 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.network.BlinkPacketEvent; import dev.loki.lovisual.events.impl.render.GameTickEvent; -import dev.loki.lovisual.util.item.FoodUtil; +import dev.loki.lovisual.util.item.food.FoodUtil; import dev.loki.lovisual.util.target.TargetingUtil; import java.util.EnumSet; import java.util.concurrent.ThreadLocalRandom; +import dev.loki.lovisual.util.network.control.BlinkManager; +import dev.loki.lovisual.util.network.packet.TransferOrigin; public final class FakeLagController { public static final FakeLagController INSTANCE = new FakeLagController(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/PacketSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/PacketSnapshot.java similarity index 73% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/PacketSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/PacketSnapshot.java index 51f038a..28a9ee1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/PacketSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/PacketSnapshot.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.network; +package dev.loki.lovisual.util.network.packet; import net.minecraft.network.protocol.Packet; +import dev.loki.lovisual.util.network.packet.TransferOrigin; public record PacketSnapshot(Packet packet, TransferOrigin origin, long timestamp) { } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/TransferOrigin.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/TransferOrigin.java similarity index 82% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/TransferOrigin.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/TransferOrigin.java index 4b20e82..d2dc6f1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/TransferOrigin.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/network/packet/TransferOrigin.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.network; +package dev.loki.lovisual.util.network.packet; public enum TransferOrigin { INCOMING, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectHeuristics.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectHeuristics.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectHeuristics.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectHeuristics.java index 4d71aef..dd82f55 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectHeuristics.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectHeuristics.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.effect; +package dev.loki.lovisual.util.player.effect.heuristics; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; @@ -24,6 +24,8 @@ import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectInference; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; /** * Heuristics to guess effects from colored entity-effect particles. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectInference.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectInference.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectInference.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectInference.java index 1079a05..6c89413 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectInference.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/heuristics/StatusEffectInference.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.effect; +package dev.loki.lovisual.util.player.effect.heuristics; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; @@ -21,7 +21,7 @@ import net.minecraft.world.item.ItemUseAnimation; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.item.FoodUtil; +import dev.loki.lovisual.util.item.food.FoodUtil; import java.util.ArrayList; import java.util.HashMap; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectAccess.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectAccess.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectAccess.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectAccess.java index 3649c86..f123510 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectAccess.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectAccess.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.effect; +package dev.loki.lovisual.util.player.effect.tracker; import net.minecraft.core.Holder; import net.minecraft.world.effect.MobEffect; @@ -14,6 +14,7 @@ import net.minecraft.world.entity.LivingEntity; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; /** * Unified access to merged status effects: tracker first, raw entity data as fallback. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectTracker.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectTracker.java index ddf4589..1b60d94 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectTracker.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.effect; +package dev.loki.lovisual.util.player.effect.tracker; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; @@ -16,6 +16,7 @@ import net.minecraft.world.entity.player.Player; import dev.loki.lovisual.util.logging.DebugLog; import java.util.*; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectHeuristics; /** * Client-side cache of status effects for entities, synced from live entity data diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectView.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectView.java similarity index 89% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectView.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectView.java index d541dd1..f0ffbee 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/StatusEffectView.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/effect/tracker/StatusEffectView.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.effect; +package dev.loki.lovisual.util.player.effect.tracker; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; @@ -17,6 +17,9 @@ import net.minecraft.world.entity.player.Player; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import dev.loki.lovisual.util.player.effect.heuristics.StatusEffectInference; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectAccess; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectTracker; /** * Syncs status effects from client entities (no raw packets) and provides HUD-friendly subsets. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerHealthResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerHealthResolver.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerHealthResolver.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerHealthResolver.java index 9204d33..b1309e9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerHealthResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerHealthResolver.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.health; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.LivingEntity; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSkinResolver.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerSkinResolver.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSkinResolver.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerSkinResolver.java index d9ef0f4..6838dcd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSkinResolver.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/health/PlayerSkinResolver.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.health; import com.mojang.authlib.GameProfile; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/InteractionUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/InteractionUtil.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/InteractionUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/InteractionUtil.java index 706db65..b391a1f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/InteractionUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/InteractionUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.interaction; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.prediction.BlockStatePredictionHandler; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/NetworkStatsUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/NetworkStatsUtil.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/NetworkStatsUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/NetworkStatsUtil.java index e6e017b..b48c3e2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/NetworkStatsUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/NetworkStatsUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.interaction; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ResetAttackCooldown.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ResetAttackCooldown.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ResetAttackCooldown.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ResetAttackCooldown.java index 1aade70..b0d1708 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ResetAttackCooldown.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ResetAttackCooldown.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.interaction; import net.minecraft.world.entity.player.Player; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ServerFlyUtils.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ServerFlyUtils.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ServerFlyUtils.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ServerFlyUtils.java index 49fc8ef..ee02be1 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ServerFlyUtils.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/interaction/ServerFlyUtils.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.interaction; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.entity.player.Abilities; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwap.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwap.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwap.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwap.java index 04236bf..7000e2c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwap.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwap.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.core; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.MultiPlayerGameMode; @@ -35,6 +35,13 @@ import java.util.Set; import java.util.UUID; import java.util.function.BooleanSupplier; import java.util.function.Predicate; +import dev.loki.lovisual.util.player.inventory.core.InventorySwapMode; +import dev.loki.lovisual.util.player.inventory.core.InventorySwapPolicy; +import dev.loki.lovisual.util.player.inventory.core.InventorySwapRequest; +import dev.loki.lovisual.util.player.inventory.support.InventoryActionKind; +import dev.loki.lovisual.util.player.inventory.support.InventorySearchScope; +import dev.loki.lovisual.util.player.inventory.support.InventorySwapVisibility; +import dev.loki.lovisual.util.player.inventory.support.SlotResult; public final class InventorySwap { public static final InventorySwap INSTANCE = new InventorySwap(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapMode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapMode.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapMode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapMode.java index e6b5912..1c20496 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapMode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapMode.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.core; public enum InventorySwapMode { NORMAL, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapPolicy.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapPolicy.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapPolicy.java index e6092be..62e0133 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapPolicy.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.core; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum InventorySwapPolicy implements EnumValue.IdProvider { NONE("none"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapRequest.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapRequest.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapRequest.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapRequest.java index fc8333e..18d1a1b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapRequest.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/core/InventorySwapRequest.java @@ -5,12 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.core; import net.minecraft.world.item.ItemStack; import java.util.Objects; import java.util.function.Predicate; +import dev.loki.lovisual.util.player.inventory.core.InventorySwapPolicy; +import dev.loki.lovisual.util.player.inventory.support.InventoryActionKind; +import dev.loki.lovisual.util.player.inventory.support.InventorySearchScope; +import dev.loki.lovisual.util.player.inventory.support.InventorySwapVisibility; public final class InventorySwapRequest { private final Predicate predicate; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/FireworkUseController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/firework/FireworkUseController.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/FireworkUseController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/firework/FireworkUseController.java index 95f15fa..1cb3635 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/FireworkUseController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/firework/FireworkUseController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.firework; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.MultiPlayerGameMode; @@ -15,6 +15,11 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.projectile.FireworkRocketEntity; import net.minecraft.world.item.Items; +import dev.loki.lovisual.util.player.inventory.core.InventorySwap; +import dev.loki.lovisual.util.player.inventory.core.InventorySwapRequest; +import dev.loki.lovisual.util.player.inventory.support.InventoryActionKind; +import dev.loki.lovisual.util.player.inventory.support.InventorySearchScope; +import dev.loki.lovisual.util.player.inventory.support.InventorySwapVisibility; /** * Shared firework-use path for elytra modules. *

diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventoryActionKind.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventoryActionKind.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventoryActionKind.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventoryActionKind.java index 4f5f693..5896929 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventoryActionKind.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventoryActionKind.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.support; public enum InventoryActionKind { GENERIC, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySearchScope.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySearchScope.java similarity index 80% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySearchScope.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySearchScope.java index 2923acc..34854e6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySearchScope.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySearchScope.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.support; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum InventorySearchScope implements EnumValue.IdProvider { HOTBAR("hotbar"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapVisibility.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySwapVisibility.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapVisibility.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySwapVisibility.java index b3e3e7d..300c81a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/InventorySwapVisibility.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/InventorySwapVisibility.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.support; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; public enum InventorySwapVisibility implements EnumValue.IdProvider { NORMAL("normal"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/SlotResult.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/SlotResult.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/SlotResult.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/SlotResult.java index cc63b77..36cdb92 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/SlotResult.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/inventory/support/SlotResult.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.inventory; +package dev.loki.lovisual.util.player.inventory.support; import net.minecraft.world.item.ItemStack; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ElytraRecastUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/ElytraRecastUtil.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ElytraRecastUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/ElytraRecastUtil.java index c0f4cc4..4b4a29a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/ElytraRecastUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/ElytraRecastUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.movement; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/EnvironmentMovementController.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/EnvironmentMovementController.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/EnvironmentMovementController.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/EnvironmentMovementController.java index 1e73616..3e3c099 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/EnvironmentMovementController.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/EnvironmentMovementController.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.movement; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.block.Block; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/MovementUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/MovementUtil.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/MovementUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/MovementUtil.java index 47f3ada..3f933a3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/MovementUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/MovementUtil.java @@ -5,12 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.movement; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.util.aiming.RotationManager; +import dev.loki.lovisual.util.aiming.rotation.RotationManager; public enum MovementUtil { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSpeedUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/PlayerSpeedUtil.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSpeedUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/PlayerSpeedUtil.java index 2ccad40..2046b2c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/PlayerSpeedUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/movement/PlayerSpeedUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player; +package dev.loki.lovisual.util.player.movement; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/LocalPlayerSimulation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/LocalPlayerSimulation.java index 606da98..1ba14a5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/LocalPlayerSimulation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/LocalPlayerSimulation.java @@ -8,6 +8,8 @@ package dev.loki.lovisual.util.player.simulation; import net.minecraft.world.entity.player.Player; +import dev.loki.lovisual.util.player.simulation.PlayerMovementSimulation; +import dev.loki.lovisual.util.player.simulation.SimulatedInput; public final class LocalPlayerSimulation extends PlayerMovementSimulation { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerMovementSimulation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerMovementSimulation.java index e07558e..3952a30 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerMovementSimulation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerMovementSimulation.java @@ -28,9 +28,11 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.mixins.accessors.entity.EntityInvoker; -import dev.loki.lovisual.util.player.effect.StatusEffectAccess; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectAccess; import java.util.List; +import dev.loki.lovisual.util.player.simulation.remote.RemotePlayerObservation; +import dev.loki.lovisual.util.player.simulation.SimulatedInput; public abstract class PlayerMovementSimulation { private static final double STEP_HEIGHT = 0.5; @@ -56,7 +58,7 @@ public abstract class PlayerMovementSimulation { private double lavaHeight; private int jumpingCooldown; - PlayerMovementSimulation(Player player, SimulatedInput input) { + protected PlayerMovementSimulation(Player player, SimulatedInput input) { this.player = player; this.pos = player.position(); this.velocity = this.pos.subtract(player.xo, player.yo, player.zo); @@ -177,7 +179,7 @@ public abstract class PlayerMovementSimulation { return false; } - RemotePlayerObservation.MotionKind motionKind() { + protected RemotePlayerObservation.MotionKind motionKind() { return RemotePlayerObservation.MotionKind.NORMAL; } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerSimulationCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerSimulationCache.java index 41f3f75..5f72c46 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerSimulationCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/PlayerSimulationCache.java @@ -15,6 +15,11 @@ import dev.loki.lovisual.events.impl.render.GameTickEvent; import dev.loki.lovisual.events.impl.movement.MovementInputEvent; import java.util.*; +import dev.loki.lovisual.util.player.simulation.LocalPlayerSimulation; +import dev.loki.lovisual.util.player.simulation.PlayerMovementSimulation; +import dev.loki.lovisual.util.player.simulation.remote.RemotePlayerObservation; +import dev.loki.lovisual.util.player.simulation.remote.RemotePlayerSimulation; +import dev.loki.lovisual.util.player.simulation.SimulatedInput; public final class PlayerSimulationCache { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerObservation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerObservation.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerObservation.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerObservation.java index 284eff3..26f105c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerObservation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerObservation.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.simulation; +package dev.loki.lovisual.util.player.simulation.remote; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; @@ -15,7 +15,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.GameType; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.features.relations.StaffTracker; -import dev.loki.lovisual.util.player.effect.StatusEffectAccess; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectAccess; public final class RemotePlayerObservation { @@ -33,7 +33,7 @@ public final class RemotePlayerObservation { private boolean serverFlightAllowed; private boolean survivalFlightHeuristic; private boolean holdVerticalMotion; - RemotePlayerObservation(Player player) { + public RemotePlayerObservation(Player player) { this.lastPos = player.position(); } @@ -69,7 +69,7 @@ public final class RemotePlayerObservation { return GameType.DEFAULT_MODE; } - void update(Player player) { + public void update(Player player) { int age = player.tickCount; if (age == lastAge) { return; @@ -124,22 +124,22 @@ public final class RemotePlayerObservation { || stableVertical && (motionKind == MotionKind.SERVER_FLIGHT || motionKind == MotionKind.SURVIVAL_FLIGHT); } - MotionKind motionKind() { + public MotionKind motionKind() { return motionKind; } - Vec3 measuredVelocity() { + public Vec3 measuredVelocity() { return measuredVelocity; } - boolean isFlightLike() { + public boolean isFlightLike() { return motionKind == MotionKind.SERVER_FLIGHT || motionKind == MotionKind.SURVIVAL_FLIGHT || motionKind == MotionKind.HOVER || motionKind == MotionKind.FROZEN_AIR; } - boolean shouldHoldVerticalMotion() { + public boolean shouldHoldVerticalMotion() { return holdVerticalMotion; } @@ -176,7 +176,7 @@ public final class RemotePlayerObservation { return MotionKind.NORMAL; } - enum MotionKind { + public enum MotionKind { NORMAL, GLIDING, SERVER_FLIGHT, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerSimulation.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerSimulation.java similarity index 78% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerSimulation.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerSimulation.java index 06c8e29..a653892 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/RemotePlayerSimulation.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/player/simulation/remote/RemotePlayerSimulation.java @@ -5,16 +5,19 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.player.simulation; +package dev.loki.lovisual.util.player.simulation.remote; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; +import dev.loki.lovisual.util.player.simulation.PlayerMovementSimulation; +import dev.loki.lovisual.util.player.simulation.remote.RemotePlayerObservation; +import dev.loki.lovisual.util.player.simulation.SimulatedInput; public final class RemotePlayerSimulation extends PlayerMovementSimulation { private final RemotePlayerObservation observation; - RemotePlayerSimulation(Player player, SimulatedInput input, RemotePlayerObservation observation) { + public RemotePlayerSimulation(Player player, SimulatedInput input, RemotePlayerObservation observation) { super(player, input); this.observation = observation; primeFlightLikeState(player); @@ -31,7 +34,7 @@ public final class RemotePlayerSimulation extends PlayerMovementSimulation { } @Override - RemotePlayerObservation.MotionKind motionKind() { + protected RemotePlayerObservation.MotionKind motionKind() { return observation.motionKind(); } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/CydhranianProjectileAngleCalculator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/CydhranianProjectileAngleCalculator.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/CydhranianProjectileAngleCalculator.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/CydhranianProjectileAngleCalculator.java index c7fe329..a47bc49 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/CydhranianProjectileAngleCalculator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/CydhranianProjectileAngleCalculator.java @@ -5,11 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.calc; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.util.aiming.data.Rotation; +import dev.loki.lovisual.util.projectile.calc.ProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.math.ProjectileMath; +import dev.loki.lovisual.util.projectile.targeting.ProjectileTarget; +import dev.loki.lovisual.util.projectile.targeting.ProjectileTargetPointFinder; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; public final class CydhranianProjectileAngleCalculator extends ProjectileAngleCalculator { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PolynomialProjectileAngleCalculator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/PolynomialProjectileAngleCalculator.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PolynomialProjectileAngleCalculator.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/PolynomialProjectileAngleCalculator.java index 3ba83c0..2f43e22 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PolynomialProjectileAngleCalculator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/PolynomialProjectileAngleCalculator.java @@ -5,11 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.calc; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.util.aiming.data.Rotation; +import dev.loki.lovisual.util.projectile.calc.ProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.targeting.ProjectileTarget; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; public final class PolynomialProjectileAngleCalculator extends ProjectileAngleCalculator { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileAngleCalculator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/ProjectileAngleCalculator.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileAngleCalculator.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/ProjectileAngleCalculator.java index 6858b84..73b2494 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileAngleCalculator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/ProjectileAngleCalculator.java @@ -5,13 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.calc; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.util.aiming.data.Rotation; +import dev.loki.lovisual.util.projectile.targeting.ProjectileTarget; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; public abstract class ProjectileAngleCalculator { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SituationalProjectileAngleCalculator.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/SituationalProjectileAngleCalculator.java similarity index 70% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SituationalProjectileAngleCalculator.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/SituationalProjectileAngleCalculator.java index 5ee96bf..9f55ddc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SituationalProjectileAngleCalculator.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/calc/SituationalProjectileAngleCalculator.java @@ -5,10 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.calc; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.util.aiming.data.Rotation; +import dev.loki.lovisual.util.projectile.calc.CydhranianProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.calc.PolynomialProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.calc.ProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.targeting.ProjectileTarget; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; public final class SituationalProjectileAngleCalculator extends ProjectileAngleCalculator { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileMath.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectileMath.java similarity index 76% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileMath.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectileMath.java index 15d613f..25b7f00 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileMath.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectileMath.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.math; public enum ProjectileMath { ; - static MinimumResult findFunctionMinimumByBisect(double from, double to, double minDelta, DoubleUnaryFunction function) { + public static MinimumResult findFunctionMinimumByBisect(double from, double to, double minDelta, DoubleUnaryFunction function) { + double lowerBound = from; double upperBound = to; @@ -32,10 +33,12 @@ public enum ProjectileMath { } @FunctionalInterface - interface DoubleUnaryFunction { + public interface DoubleUnaryFunction { + double apply(double value); } - record MinimumResult(double x, double y) { + public record MinimumResult(double x, double y) { + } } diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectilePredictionUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectilePredictionUtil.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectilePredictionUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectilePredictionUtil.java index 1756643..2fc31f3 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectilePredictionUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/math/ProjectilePredictionUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.math; import net.minecraft.client.Minecraft; import net.minecraft.world.InteractionHand; @@ -23,6 +23,10 @@ import dev.loki.lovisual.util.player.simulation.PlayerSimulationCache; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; +import dev.loki.lovisual.util.projectile.calc.SituationalProjectileAngleCalculator; +import dev.loki.lovisual.util.projectile.trajectory.SimulatedArrow; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryData; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; public enum ProjectilePredictionUtil { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PointFinding.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/PointFinding.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PointFinding.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/PointFinding.java index 3264981..4aab31c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/PointFinding.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/PointFinding.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.targeting; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTarget.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTarget.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTarget.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTarget.java index 7ac4a75..a9a444b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTarget.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTarget.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.targeting; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTargetPointFinder.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTargetPointFinder.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTargetPointFinder.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTargetPointFinder.java index 4fcbae7..d3efff8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/ProjectileTargetPointFinder.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/targeting/ProjectileTargetPointFinder.java @@ -5,10 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.targeting; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import dev.loki.lovisual.util.projectile.targeting.PointFinding; public enum ProjectileTargetPointFinder { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SimulatedArrow.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/SimulatedArrow.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SimulatedArrow.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/SimulatedArrow.java index 80a9c04..4af4e2d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/SimulatedArrow.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/SimulatedArrow.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.trajectory; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.world.entity.projectile.ProjectileUtil; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryData.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryData.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryData.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryData.java index 434331b..95fe559 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryData.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryData.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.trajectory; import net.minecraft.core.component.DataComponents; import net.minecraft.world.entity.Entity; @@ -20,6 +20,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.component.ChargedProjectiles; import dev.loki.lovisual.mixins.accessors.projectile.PersistentProjectileEntityAccessor; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryInfo; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryType; public enum TrajectoryData { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryInfo.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryInfo.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryInfo.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryInfo.java index 14cf6e0..aa26d17 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryInfo.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryInfo.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.trajectory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BowItem; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import dev.loki.lovisual.util.projectile.trajectory.TrajectoryType; public record TrajectoryInfo( double gravity, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryType.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryType.java index 7d89399..d97dab0 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/TrajectoryType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/projectile/trajectory/TrajectoryType.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.projectile; +package dev.loki.lovisual.util.projectile.trajectory; public enum TrajectoryType { ARROW, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/protection/SlotLockPolicy.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/protection/SlotLockPolicy.java index 430cb57..3c8e90a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/protection/SlotLockPolicy.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/protection/SlotLockPolicy.java @@ -10,6 +10,7 @@ package dev.loki.lovisual.util.protection; import java.util.LinkedHashMap; import java.util.Map; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; +import dev.loki.lovisual.features.module.modules.player.inventory.LockSlot; /** * Pure decision logic for the LockSlot module: whether dropping an item diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyBackend.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyBackend.java index 24b93a8..d01ae45 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyBackend.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyBackend.java @@ -6,6 +6,9 @@ */ package dev.loki.lovisual.util.proxy; +import dev.loki.lovisual.util.proxy.model.ProxyConfig; +import dev.loki.lovisual.util.proxy.model.ProxyEntry; + import com.mojang.authlib.GameProfile; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyHandshakeHandler.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyHandshakeHandler.java index 3682930..45dd80d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyHandshakeHandler.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyHandshakeHandler.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.util.proxy; +import dev.loki.lovisual.util.proxy.model.ProxyEntry; + import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelDuplexHandler; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyNettyInstaller.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyNettyInstaller.java index decde67..d24afdf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyNettyInstaller.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyNettyInstaller.java @@ -6,6 +6,8 @@ */ package dev.loki.lovisual.util.proxy; +import dev.loki.lovisual.util.proxy.model.ProxyEntry; + import dev.loki.lovisual.util.logging.DebugLog; import io.netty.channel.ChannelPipeline; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyConfig.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyConfig.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyConfig.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyConfig.java index 60087f9..b391c08 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyConfig.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyConfig.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.proxy; +package dev.loki.lovisual.util.proxy.model; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -13,7 +13,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; -import dev.loki.lovisual.config.ConfigPaths; +import dev.loki.lovisual.config.io.ConfigPaths; import dev.loki.lovisual.util.logging.DebugLog; import java.io.IOException; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyEntry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyEntry.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyEntry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyEntry.java index d1a5200..9a7ddc8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyEntry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyEntry.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.proxy; +package dev.loki.lovisual.util.proxy.model; import java.net.InetSocketAddress; import java.util.Locale; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyType.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyType.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyType.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyType.java index ab09dd3..0e231bf 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/ProxyType.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/proxy/model/ProxyType.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.proxy; +package dev.loki.lovisual.util.proxy.model; import com.google.gson.annotations.SerializedName; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownManager.java index 3f4a7da..1b5e25f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownManager.java @@ -9,10 +9,10 @@ package dev.loki.lovisual.util.pvp.client; import net.minecraft.util.Util; import net.minecraft.world.item.Item; -import dev.loki.lovisual.config.MainConfig; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.ItemUseCooldowns; +import dev.loki.lovisual.config.i18n.MainConfig; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.cooldown.ItemUseCooldowns; import java.util.Map; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownsState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownsState.java index 627fba1..13c8361 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownsState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/client/CooldownsState.java @@ -7,8 +7,10 @@ package dev.loki.lovisual.util.pvp.client; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; +import dev.loki.lovisual.util.pvp.client.CooldownManager; +import dev.loki.lovisual.util.pvp.client.PendingUseTracker; /** * Глобальное хранилище кулдаунов и флагов PvP. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/CooldownRegistry.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/CooldownRegistry.java similarity index 91% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/CooldownRegistry.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/CooldownRegistry.java index 44d57e2..ddfc9f4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/CooldownRegistry.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/CooldownRegistry.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.cooldown; import net.minecraft.world.item.Item; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import java.util.Collections; import java.util.Set; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownRuleProvider; public enum CooldownRegistry { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownRuleProvider.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownRuleProvider.java similarity index 86% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownRuleProvider.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownRuleProvider.java index 997c25c..ac602c6 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownRuleProvider.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownRuleProvider.java @@ -5,10 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.cooldown; import net.minecraft.world.item.Item; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import java.util.Set; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownSnapshot.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownSnapshot.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownSnapshot.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownSnapshot.java index eb0a8dc..d1846d2 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemCooldownSnapshot.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemCooldownSnapshot.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.cooldown; import net.minecraft.world.item.Item; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemUseCooldowns.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemUseCooldowns.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemUseCooldowns.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemUseCooldowns.java index 6604a42..a591dfb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/ItemUseCooldowns.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/cooldown/ItemUseCooldowns.java @@ -5,14 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.cooldown; import net.minecraft.util.Util; import net.minecraft.world.item.Item; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; import java.util.*; +import dev.loki.lovisual.util.pvp.cooldown.CooldownRegistry; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; /** * Generic owner-based item-use cooldown model. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/OpponentCooldownManager.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/OpponentCooldownManager.java index a70fd7d..a78243c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/OpponentCooldownManager.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/OpponentCooldownManager.java @@ -8,9 +8,9 @@ package dev.loki.lovisual.util.pvp.opponents; import net.minecraft.world.item.Item; -import dev.loki.lovisual.config.values.ItemCooldownRulesValue; -import dev.loki.lovisual.util.pvp.ItemCooldownSnapshot; -import dev.loki.lovisual.util.pvp.ItemUseCooldowns; +import dev.loki.lovisual.config.values.collection.ItemCooldownRulesValue; +import dev.loki.lovisual.util.pvp.cooldown.ItemCooldownSnapshot; +import dev.loki.lovisual.util.pvp.cooldown.ItemUseCooldowns; import java.util.Map; import java.util.UUID; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/TotemPopCounter.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/TotemPopCounter.java index ee58566..10826e5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/TotemPopCounter.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/opponents/TotemPopCounter.java @@ -9,13 +9,14 @@ package dev.loki.lovisual.util.pvp.opponents; import net.minecraft.util.Util; import net.minecraft.world.entity.player.Player; -import dev.loki.lovisual.config.values.BooleanValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.primitive.BooleanValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.UUID; +import dev.loki.lovisual.util.pvp.opponents.TotemPopSnapshot; /** * Standalone per-player totem pop counter utility. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpChatParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpChatParser.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpChatParser.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpChatParser.java index a3c8a70..591694f 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpChatParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpChatParser.java @@ -5,9 +5,11 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.parser; import java.util.Set; +import dev.loki.lovisual.util.pvp.parser.PvpTextPatternUtil; +import dev.loki.lovisual.util.pvp.state.PvpTagSource; public enum PvpChatParser { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpOverlayParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpOverlayParser.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpOverlayParser.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpOverlayParser.java index 0efff76..55d0a67 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpOverlayParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpOverlayParser.java @@ -5,9 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.parser; import java.util.Set; +import dev.loki.lovisual.util.pvp.parser.PvpTextPatternUtil; public enum PvpOverlayParser { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTabParser.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTabParser.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTabParser.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTabParser.java index 4cc7822..994a414 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTabParser.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTabParser.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.parser; +import dev.loki.lovisual.util.pvp.parser.PvpOverlayParser; +import dev.loki.lovisual.util.pvp.parser.PvpTextPatternUtil; public enum PvpTabParser { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTextPatternUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTextPatternUtil.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTextPatternUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTextPatternUtil.java index 4b9f3dc..0fa7d1e 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTextPatternUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/parser/PvpTextPatternUtil.java @@ -5,9 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.parser; -import dev.loki.lovisual.util.text.LegacyTextUtil; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; import java.util.Set; import java.util.regex.Matcher; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpState.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpState.java index 1f54ab5..d1283dd 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpState.java @@ -5,10 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.state; import dev.loki.lovisual.util.logging.DebugLog; import dev.loki.lovisual.util.pvp.client.CooldownsState; +import dev.loki.lovisual.util.pvp.parser.PvpChatParser; +import dev.loki.lovisual.util.pvp.parser.PvpOverlayParser; +import dev.loki.lovisual.util.pvp.state.PvpTagSource; public enum PvpState { ; @@ -59,7 +62,8 @@ public enum PvpState { } } - static void applyOverlay(PvpOverlayParser.Result result, long timeMs) { + public static void applyOverlay(PvpOverlayParser.Result result, long timeMs) { + if (result == null) return; boolean changed; boolean prevActive; @@ -109,7 +113,8 @@ public enum PvpState { } } - static void applyChat(PvpChatParser.Result result, long timeMs) { + public static void applyChat(PvpChatParser.Result result, long timeMs) { + if (result == null) return; boolean changed; boolean prevActive; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTagSource.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTagSource.java similarity index 84% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTagSource.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTagSource.java index 38d724a..630ee18 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTagSource.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTagSource.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.state; public enum PvpTagSource { UNKNOWN, diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetState.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTargetState.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetState.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTargetState.java index 03a642d..116a949 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetState.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/state/PvpTargetState.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.state; import net.minecraft.util.Util; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTargetTracker.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTargetTracker.java index b1901d4..d20fd59 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTargetTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTargetTracker.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.tracker; import net.minecraft.client.Minecraft; import net.minecraft.util.Util; @@ -13,12 +13,13 @@ import net.minecraft.world.entity.player.Player; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.entity.EventTargetChanged; import dev.loki.lovisual.events.impl.render.GameTickEvent; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; import java.util.HashSet; import java.util.Set; import java.util.UUID; +import dev.loki.lovisual.util.pvp.state.PvpTargetState; public final class PvpTargetTracker { public static final PvpTargetTracker INSTANCE = new PvpTargetTracker(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTracker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTracker.java similarity index 90% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTracker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTracker.java index f7d5cac..737d6cb 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/PvpTracker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/pvp/tracker/PvpTracker.java @@ -5,18 +5,23 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.pvp; +package dev.loki.lovisual.util.pvp.tracker; import net.minecraft.client.Minecraft; import dev.loki.lovisual.events.meta.EventHandler; import dev.loki.lovisual.events.impl.pvp.PvpChatEvent; import dev.loki.lovisual.events.impl.pvp.PvpOverlayEvent; import dev.loki.lovisual.events.impl.pvp.PvpTabEvent; -import dev.loki.lovisual.features.module.Modules; -import dev.loki.lovisual.features.module.modules.combat.PvpCooldowns; +import dev.loki.lovisual.features.module.lifecycle.Modules; +import dev.loki.lovisual.features.module.modules.combat.pvp.PvpCooldowns; import dev.loki.lovisual.features.relations.PlayerRelations; import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.util.text.ChatNameUtil; +import dev.loki.lovisual.util.text.mask.ChatNameUtil; +import dev.loki.lovisual.util.pvp.parser.PvpChatParser; +import dev.loki.lovisual.util.pvp.parser.PvpOverlayParser; +import dev.loki.lovisual.util.pvp.parser.PvpTabParser; +import dev.loki.lovisual.util.pvp.state.PvpState; +import dev.loki.lovisual.util.pvp.state.PvpTagSource; public final class PvpTracker { public static final PvpTracker INSTANCE = new PvpTracker(); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/resources/ResourceReloadHooks.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/resources/ResourceReloadHooks.java index 91ee0d8..4d3cba5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/resources/ResourceReloadHooks.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/resources/ResourceReloadHooks.java @@ -7,21 +7,21 @@ package dev.loki.lovisual.util.resources; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import dev.loki.lovisual.features.gui.clickgui.settings.i18n.I18nDuplicateScanner; import dev.loki.lovisual.features.gui.clickgui.settings.i18n.I18nPreflightManager; import net.minecraft.server.packs.resources.ResourceManager; import dev.loki.lovisual.features.module.modules.visuals.nametags.NameTags; -import dev.loki.lovisual.render.engine.TextureStorage; +import dev.loki.lovisual.render.engine.texture.TextureStorage; import dev.loki.lovisual.render.engine.pipeline.LoVisualRenderPipelines; import dev.loki.lovisual.render.engine.prewarm.RenderPrewarmManager; -import dev.loki.lovisual.render.engine.svg.SvgRegistry; -import dev.loki.lovisual.render.engine.text.Fonts; +import dev.loki.lovisual.render.engine.svg.parser.SvgRegistry; +import dev.loki.lovisual.render.engine.text.font.Fonts; import dev.loki.lovisual.render.engine.visuals.LoVisualVisuals; -import dev.loki.lovisual.render.iris.IrisRuntime; +import dev.loki.lovisual.render.iris.runtime.IrisRuntime; import dev.loki.lovisual.util.logging.DebugLog; -import dev.loki.lovisual.util.media.MediaSessionService; -import dev.loki.lovisual.util.wav.CustomSoundEngine; +import dev.loki.lovisual.util.media.session.MediaSessionService; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; public enum ResourceReloadHooks { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/screen/ScreenCatalog.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/screen/ScreenCatalog.java index 12dc63d..8e3a476 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/screen/ScreenCatalog.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/screen/ScreenCatalog.java @@ -12,9 +12,9 @@ import net.minecraft.client.gui.screens.PauseScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.advancements.AdvancementsScreen; import net.minecraft.client.gui.screens.inventory.*; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiEditorScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiPickerScreen; -import dev.loki.lovisual.features.gui.clickgui.ClickGuiScreen; +import dev.loki.lovisual.features.gui.clickgui.editor.ClickGuiEditorScreen; +import dev.loki.lovisual.features.gui.clickgui.picker.screen.ClickGuiPickerScreen; +import dev.loki.lovisual.features.gui.clickgui.screen.ClickGuiScreen; import java.util.*; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftJson.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftJson.java index 23ceddc..d81a03b 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftJson.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftJson.java @@ -13,12 +13,12 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; public final class MicrosoftJson { - static final Gson GSON = new Gson(); + public static final Gson GSON = new Gson(); private MicrosoftJson() { } - static String string(JsonObject json, String key) { + public static String string(JsonObject json, String key) { try { return json.get(key).getAsString(); } catch (Throwable t) { @@ -26,7 +26,7 @@ public final class MicrosoftJson { } } - static long number(JsonObject json, String key) { + public static long number(JsonObject json, String key) { try { return json.get(key).getAsLong(); } catch (Throwable t) { @@ -34,7 +34,7 @@ public final class MicrosoftJson { } } - static JsonObject object(JsonObject json, String key) { + public static JsonObject object(JsonObject json, String key) { try { return json.get(key).getAsJsonObject(); } catch (Throwable t) { @@ -42,7 +42,7 @@ public final class MicrosoftJson { } } - static JsonArray array(JsonObject json, String key) { + public static JsonArray array(JsonObject json, String key) { try { return json.get(key).getAsJsonArray(); } catch (Throwable t) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/DeviceAuthPendingException.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/DeviceAuthPendingException.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/DeviceAuthPendingException.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/DeviceAuthPendingException.java index ade5c50..7c977b7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/DeviceAuthPendingException.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/DeviceAuthPendingException.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.auth; public final class DeviceAuthPendingException extends RuntimeException { public DeviceAuthPendingException(String message) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthException.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthException.java similarity index 94% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthException.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthException.java index 569e7d9..9666425 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthException.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthException.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.auth; public class MicrosoftAuthException extends RuntimeException { private final String key; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthService.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthService.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthService.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthService.java index e3935b1..c9ec987 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftAuthService.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftAuthService.java @@ -5,7 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.auth; +import dev.loki.lovisual.util.session.microsoft.MicrosoftJson; +import dev.loki.lovisual.util.session.microsoft.model.MicrosoftTokens; +import dev.loki.lovisual.util.session.microsoft.model.MinecraftProfile; +import dev.loki.lovisual.util.session.microsoft.model.XboxToken; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftDeviceCode.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftDeviceCode.java similarity index 93% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftDeviceCode.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftDeviceCode.java index c497490..0a7d1a4 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftDeviceCode.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/auth/MicrosoftDeviceCode.java @@ -5,7 +5,9 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.auth; +import dev.loki.lovisual.util.session.microsoft.MicrosoftJson; + import com.google.gson.JsonObject; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftTokens.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MicrosoftTokens.java similarity index 70% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftTokens.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MicrosoftTokens.java index df488ed..0f561aa 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MicrosoftTokens.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MicrosoftTokens.java @@ -5,12 +5,15 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.model; +import dev.loki.lovisual.util.session.microsoft.MicrosoftJson; +import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftAuthException; + import com.google.gson.JsonObject; public record MicrosoftTokens(String accessToken, String refreshToken) { - static MicrosoftTokens fromJson(JsonObject json) { + public static MicrosoftTokens fromJson(JsonObject json) { try { return new MicrosoftTokens( MicrosoftJson.string(json, "access_token"), diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MinecraftProfile.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MinecraftProfile.java similarity index 79% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MinecraftProfile.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MinecraftProfile.java index 9ccea7d..99e9ad5 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/MinecraftProfile.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/MinecraftProfile.java @@ -5,7 +5,10 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.model; +import dev.loki.lovisual.util.session.microsoft.MicrosoftJson; +import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftAuthException; + import com.google.gson.JsonObject; @@ -15,7 +18,7 @@ import java.util.regex.Pattern; public record MinecraftProfile(UUID uuid, String name) { private static final Pattern DASHLESS_UUID = Pattern.compile("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})"); - static MinecraftProfile fromJson(JsonObject json) { + public static MinecraftProfile fromJson(JsonObject json) { try { String id = MicrosoftJson.string(json, "id"); if (!DASHLESS_UUID.matcher(id).matches()) { diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/XboxToken.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/XboxToken.java similarity index 81% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/XboxToken.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/XboxToken.java index 833a128..b2fda68 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/XboxToken.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/session/microsoft/model/XboxToken.java @@ -5,14 +5,17 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.session.microsoft; +package dev.loki.lovisual.util.session.microsoft.model; +import dev.loki.lovisual.util.session.microsoft.MicrosoftJson; +import dev.loki.lovisual.util.session.microsoft.auth.MicrosoftAuthException; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; public record XboxToken(String token, String userHash) { - static XboxToken fromJson(JsonObject json) { + public static XboxToken fromJson(JsonObject json) { try { String token = MicrosoftJson.string(json, "Token"); JsonObject displayClaims = MicrosoftJson.object(json, "DisplayClaims"); diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/target/TargetingUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/target/TargetingUtil.java index afcc778..4b010ae 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/target/TargetingUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/target/TargetingUtil.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.util.target; -import dev.loki.lovisual.config.values.EnumValue; +import dev.loki.lovisual.config.values.mode.EnumValue; import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.core.registries.BuiltInRegistries; @@ -17,11 +17,11 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import dev.loki.lovisual.features.relations.CategoryRules; -import dev.loki.lovisual.features.relations.CategoryType; +import dev.loki.lovisual.features.relations.category.CategoryRules; +import dev.loki.lovisual.features.relations.category.CategoryType; import dev.loki.lovisual.features.relations.EntityFilters; -import dev.loki.lovisual.util.aiming.RotationUtil; -import dev.loki.lovisual.util.player.PlayerHealthResolver; +import dev.loki.lovisual.util.aiming.rotation.RotationUtil; +import dev.loki.lovisual.util.player.health.PlayerHealthResolver; import java.util.ArrayList; import java.util.Comparator; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ClipboardUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/ClipboardUtil.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ClipboardUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/ClipboardUtil.java index 6515c0a..a3eeeb8 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ClipboardUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/ClipboardUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.edit; import net.minecraft.client.Minecraft; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextSelection.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/TextSelection.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextSelection.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/TextSelection.java index 2ac6085..5afa7df 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextSelection.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/edit/TextSelection.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.edit; import dev.loki.lovisual.features.gui.hud.draggable.impl.BetterChat; /** diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/LegacyTextUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/LegacyTextUtil.java similarity index 99% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/LegacyTextUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/LegacyTextUtil.java index ed86579..e4aa19a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/LegacyTextUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/LegacyTextUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.format; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextJsonUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextJsonUtil.java similarity index 98% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextJsonUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextJsonUtil.java index 95299f3..77e76dc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextJsonUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextJsonUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.format; import com.google.gson.JsonElement; import com.google.gson.JsonParser; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextRenderUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextRenderUtil.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextRenderUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextRenderUtil.java index 21d6626..b9f6a70 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/TextRenderUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/format/TextRenderUtil.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.format; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ChatNameUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/ChatNameUtil.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ChatNameUtil.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/ChatNameUtil.java index fca4475..07aca1c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/ChatNameUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/ChatNameUtil.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.mask; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.regex.Pattern; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; public enum ChatNameUtil { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameMasker.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameMasker.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameMasker.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameMasker.java index bf19a5d..2978698 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameMasker.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameMasker.java @@ -5,11 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.mask; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.util.text.mask.NameProtector; +import dev.loki.lovisual.features.module.modules.misc.protect.StreamerMode; /** * Pure name/word masking shared by StreamerMode. Unlike {@link NameProtector} diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameProtector.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameProtector.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameProtector.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameProtector.java index da50be1..9aa324d 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/NameProtector.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/text/mask/NameProtector.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.text; +package dev.loki.lovisual.util.text.mask; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import dev.loki.lovisual.features.module.modules.misc.protect.NameProtect; /** * Pure name-replacement logic for NameProtect: replaces occurrences of real diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/CustomSoundEngine.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/CustomSoundEngine.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/CustomSoundEngine.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/CustomSoundEngine.java index e58e20f..9728af7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/CustomSoundEngine.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/CustomSoundEngine.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.engine; import net.minecraft.client.Minecraft; import net.minecraft.resources.Identifier; @@ -13,6 +13,8 @@ import org.lwjgl.openal.AL10; import dev.loki.lovisual.util.logging.DebugLog; import java.io.InputStream; +import dev.loki.lovisual.util.wav.engine.SourcePool; +import dev.loki.lovisual.util.wav.loader.WavBufferCache; /** * Minimal WAV sound engine that uses Minecraft's OpenAL context. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/SourcePool.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/SourcePool.java similarity index 95% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/SourcePool.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/SourcePool.java index 1882e98..55a9799 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/SourcePool.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/SourcePool.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.engine; import org.lwjgl.openal.AL10; @@ -13,6 +13,7 @@ import java.util.ArrayDeque; import java.util.HashSet; import java.util.Queue; import java.util.Set; +import dev.loki.lovisual.util.wav.util.WavDebugStats; /** * Simple source pool to avoid exhausting OpenAL sources. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSound.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/WavSound.java similarity index 83% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSound.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/WavSound.java index d0df501..3ad5436 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSound.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/engine/WavSound.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.engine; import net.minecraft.resources.Identifier; -import dev.loki.lovisual.config.values.ConfigValue; -import dev.loki.lovisual.config.values.NumberValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; +import dev.loki.lovisual.config.values.primitive.NumberValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import dev.loki.lovisual.features.gui.clickgui.settings.slider.SliderSetting; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; /** * Helper for modules: WAV sound entry with per-sound volume setting. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavBufferCache.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavBufferCache.java similarity index 87% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavBufferCache.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavBufferCache.java index 6c3c3f1..e00e0fc 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavBufferCache.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavBufferCache.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.loader; import org.lwjgl.BufferUtils; import org.lwjgl.openal.AL10; @@ -14,6 +14,9 @@ import java.io.InputStream; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; +import dev.loki.lovisual.util.wav.loader.WavData; +import dev.loki.lovisual.util.wav.loader.WavLoader; +import dev.loki.lovisual.util.wav.util.WavDebugStats; /** * Caches OpenAL buffers for WAV assets. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavData.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavData.java similarity index 92% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavData.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavData.java index d4705e0..bc321a9 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavData.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavData.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.loader; import org.lwjgl.openal.AL10; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavLoader.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavLoader.java similarity index 96% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavLoader.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavLoader.java index b04ccfc..249d604 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavLoader.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/loader/WavLoader.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.loader; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Arrays; +import dev.loki.lovisual.util.wav.loader.WavData; /** * Minimal WAV (PCM 16-bit) loader. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/ClickGuiSounds.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/ClickGuiSounds.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/ClickGuiSounds.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/ClickGuiSounds.java index d3ee0b9..6642b9c 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/ClickGuiSounds.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/ClickGuiSounds.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.util; -import dev.loki.lovisual.features.module.Modules; +import dev.loki.lovisual.features.module.lifecycle.Modules; import net.minecraft.resources.Identifier; import dev.loki.lovisual.features.module.modules.misc.ClickGui; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; public enum ClickGuiSounds { ; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavDebugStats.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavDebugStats.java similarity index 97% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavDebugStats.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavDebugStats.java index 52139bf..c994964 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavDebugStats.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavDebugStats.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.util; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSoundHelper.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavSoundHelper.java similarity index 88% rename from combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSoundHelper.java rename to combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavSoundHelper.java index 1cd3de3..572d7d7 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/WavSoundHelper.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/wav/util/WavSoundHelper.java @@ -5,14 +5,16 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.wav; +package dev.loki.lovisual.util.wav.util; import net.minecraft.resources.Identifier; -import dev.loki.lovisual.config.values.ConfigValue; +import dev.loki.lovisual.config.values.collection.ConfigValue; import dev.loki.lovisual.features.gui.clickgui.settings.core.Setting; import java.util.ArrayList; import java.util.List; +import dev.loki.lovisual.util.wav.engine.CustomSoundEngine; +import dev.loki.lovisual.util.wav.engine.WavSound; /** * Компактный helper для модулей: регистрирует WavSound, добавляет громкости в конфиг и в ClickGUI. diff --git a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/world/ExplosionDamageUtil.java b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/world/ExplosionDamageUtil.java index a1acdbc..7da426a 100644 --- a/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/world/ExplosionDamageUtil.java +++ b/combatant-client-26.2/src/main/java/dev/loki/lovisual/util/world/ExplosionDamageUtil.java @@ -38,7 +38,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import dev.loki.lovisual.util.entity.simulation.PositionExtrapolation; -import dev.loki.lovisual.util.player.effect.StatusEffectAccess; +import dev.loki.lovisual.util.player.effect.tracker.StatusEffectAccess; import dev.loki.lovisual.util.player.simulation.PlayerSimulationCache; public enum ExplosionDamageUtil { diff --git a/combatant-client-26.2/src/svgMsdfTool/java/dev/loki/lovisual/render/engine/svg/SvgMsdfPreprocessor.java b/combatant-client-26.2/src/svgMsdfTool/java/dev/loki/lovisual/render/engine/svg/SvgMsdfPreprocessor.java index f7a8498..b401f8b 100644 --- a/combatant-client-26.2/src/svgMsdfTool/java/dev/loki/lovisual/render/engine/svg/SvgMsdfPreprocessor.java +++ b/combatant-client-26.2/src/svgMsdfTool/java/dev/loki/lovisual/render/engine/svg/SvgMsdfPreprocessor.java @@ -1,5 +1,8 @@ package dev.loki.lovisual.render.engine.svg; +import dev.loki.lovisual.render.engine.svg.model.SvgStyle; +import dev.loki.lovisual.render.engine.svg.model.SvgStyleUtil; +import dev.loki.lovisual.render.engine.svg.parser.SvgPathParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngineTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngineTest.java index 3145c3c..1e1acf0 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngineTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileDiffEngineTest.java @@ -18,6 +18,12 @@ import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; +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.diff.ConfigProfileDiffEngine; +import dev.loki.lovisual.config.profile.snapshot.ConfigProfileMeta; +import dev.loki.lovisual.config.profile.snapshot.ConfigProfileSnapshot; public final class ConfigProfileDiffEngineTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileStorageTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileStorageTest.java index faf17bd..e0e6fba 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileStorageTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileStorageTest.java @@ -21,6 +21,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +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.core.Module; /** * Тесты ConfigProfileStorage: канонический формат .lvcfg и обратная diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodecTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodecTest.java index 0889413..2f9970e 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodecTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/profile/ConfigProfileValueCodecTest.java @@ -22,6 +22,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import dev.loki.lovisual.config.profile.codec.ConfigProfileValueCodec; public final class ConfigProfileValueCodecTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ColorValueTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ColorValueTest.java index 0f21c2a..4037f69 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ColorValueTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ColorValueTest.java @@ -12,6 +12,8 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.config.values.color.RGBAColorValue; +import dev.loki.lovisual.config.values.color.RGBColorValue; public final class ColorValueTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/EnumValueTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/EnumValueTest.java index 7ecf397..7ce1ef9 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/EnumValueTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/EnumValueTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +import dev.loki.lovisual.config.values.mode.EnumValue; public final class EnumValueTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ModeValueTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ModeValueTest.java index 7295aeb..fb3d57e 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ModeValueTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/ModeValueTest.java @@ -15,6 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.config.values.mode.ModeValue; public final class ModeValueTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/PrimitiveValuesTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/PrimitiveValuesTest.java index 62d8393..bbbda85 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/PrimitiveValuesTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/config/values/PrimitiveValuesTest.java @@ -20,6 +20,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.config.values.collection.ItemIdSetValue; +import dev.loki.lovisual.config.values.collection.SetValue; +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; public final class PrimitiveValuesTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/events/EventBusTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/events/EventBusTest.java index 4178b34..96e398d 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/events/EventBusTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/events/EventBusTest.java @@ -20,8 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; -import dev.loki.lovisual.events.Event; -import dev.loki.lovisual.events.EventBus; import dev.loki.lovisual.events.meta.EventHandler; public final class EventBusTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandDiscoveryTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandDiscoveryTest.java index 4176892..f5ca366 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandDiscoveryTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandDiscoveryTest.java @@ -13,6 +13,11 @@ import java.util.HashSet; import java.util.List; import static org.junit.jupiter.api.Assertions.*; +import dev.loki.lovisual.features.command.core.CommandContext; +import dev.loki.lovisual.features.command.core.CommandInfo; +import dev.loki.lovisual.features.command.core.CommandManager; +import dev.loki.lovisual.features.command.core.CommandMetadata; +import dev.loki.lovisual.features.command.util.ClientCommand; public class CommandDiscoveryTest { @Test diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandPrefixTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandPrefixTest.java index 97af7a6..4889741 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandPrefixTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/CommandPrefixTest.java @@ -13,6 +13,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.command.util.CommandPrefix; public final class CommandPrefixTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/UsageHintsTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/UsageHintsTest.java index 6b96948..4ac7209 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/UsageHintsTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/UsageHintsTest.java @@ -13,6 +13,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import dev.loki.lovisual.features.command.util.UsageHints; public final class UsageHintsTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommandTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommandTest.java similarity index 93% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommandTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommandTest.java index 2437677..75a6b60 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/XaeroWaypointCommandTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/command/impl/world/XaeroWaypointCommandTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import dev.loki.lovisual.features.command.impl.world.XaeroWaypointCommand; public class XaeroWaypointCommandTest { @Test diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolverTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolverTest.java index 9abb140..de3f001 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolverTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/clickgui/layout/screen/settings/MenuSettingsResolverTest.java @@ -1,7 +1,7 @@ package dev.loki.lovisual.features.gui.clickgui.layout.screen.settings; import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.implement.module.ModuleComponent; -import dev.loki.lovisual.features.gui.hud.HudElementAutoLoader; +import dev.loki.lovisual.features.gui.hud.registry.HudElementAutoLoader; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -9,6 +9,8 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuScreen; +import dev.loki.lovisual.features.gui.clickgui.layout.screen.settings.MenuSettingsResolver; public class MenuSettingsResolverTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoaderTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoaderTest.java index 777206c..eff3658 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoaderTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/gui/hud/HudElementAutoLoaderTest.java @@ -4,6 +4,7 @@ import dev.loki.lovisual.features.gui.hud.draggable.DraggableHudElementRegistry; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.gui.hud.registry.HudElementAutoLoader; public class HudElementAutoLoaderTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStatsTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStatsTest.java index 8425264..8971c34 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStatsTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/combat/combatlog/CombatLogStatsTest.java @@ -13,6 +13,8 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogEntry; +import dev.loki.lovisual.features.module.modules.combat.combatlog.CombatLogStats; public final class CombatLogStatsTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicyTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicyTest.java similarity index 93% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicyTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicyTest.java index ab1e173..5303851 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/ScrollMovePolicyTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/items/ScrollMovePolicyTest.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.items; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.misc.items.ScrollMovePolicy; public final class ScrollMovePolicyTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoServerPackTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPackTest.java similarity index 92% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoServerPackTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPackTest.java index 41a423b..5ef1681 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoServerPackTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/protect/NoServerPackTest.java @@ -5,13 +5,14 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.protect; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.misc.protect.NoServerPack; public final class NoServerPackTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoSoundTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSoundTest.java similarity index 87% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoSoundTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSoundTest.java index 4018c7a..5fed5a7 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/NoSoundTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/misc/sound/NoSoundTest.java @@ -5,11 +5,12 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.misc; +package dev.loki.lovisual.features.module.modules.misc.sound; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import dev.loki.lovisual.features.module.modules.misc.sound.NoSound; public final class NoSoundTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/DeathCoordsTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/DeathCoordsTest.java index 63c01ba..4736e67 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/DeathCoordsTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/DeathCoordsTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.player.DeathCoords; public final class DeathCoordsTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/UseTrackerTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/UseTrackerTest.java index 718e88a..2ab0abd 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/UseTrackerTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/UseTrackerTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.player.UseTracker; public final class UseTrackerTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoAcceptTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAcceptTest.java similarity index 95% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoAcceptTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAcceptTest.java index 09051e2..442b185 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoAcceptTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoAcceptTest.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; import org.junit.jupiter.api.Test; @@ -13,6 +13,7 @@ import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import dev.loki.lovisual.features.module.modules.player.auto.AutoAccept; public final class AutoAcceptTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoLeaveTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeaveTest.java similarity index 93% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoLeaveTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeaveTest.java index 0823352..a1abb1b 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoLeaveTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoLeaveTest.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.player.auto.AutoLeave; public final class AutoLeaveTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoRespawnTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawnTest.java similarity index 95% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoRespawnTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawnTest.java index 460b7ce..60df7c2 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/AutoRespawnTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/auto/AutoRespawnTest.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.auto; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.player.auto.AutoRespawn; public final class AutoRespawnTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/NoInteractTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteractTest.java similarity index 91% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/NoInteractTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteractTest.java index 4e4b70e..e916d6d 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/NoInteractTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/interact/NoInteractTest.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.interact; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -15,6 +15,7 @@ import java.util.stream.IntStream; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertEquals; +import dev.loki.lovisual.features.module.modules.player.interact.NoInteract; public final class NoInteractTest { @ParameterizedTest(name = "state mask {0}") diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/TapeMouseTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouseTest.java similarity index 92% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/TapeMouseTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouseTest.java index aa05fce..2490c24 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/TapeMouseTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/player/inventory/TapeMouseTest.java @@ -5,12 +5,13 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.features.module.modules.player; +package dev.loki.lovisual.features.module.modules.player.inventory; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.features.module.modules.player.inventory.TapeMouse; public final class TapeMouseTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/ChinaHatModelTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/ChinaHatModelTest.java index 2540910..f5640e4 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/ChinaHatModelTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/ChinaHatModelTest.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.visuals; -import dev.loki.lovisual.render.helpers.HeadAnchor; +import dev.loki.lovisual.render.helpers.player.HeadAnchor; import net.minecraft.world.phys.Vec3; import org.junit.jupiter.api.Test; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/PostFxPresetTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/PostFxPresetTest.java index 1c28e8a..0f6043a 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/PostFxPresetTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/PostFxPresetTest.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.visuals; -import dev.loki.lovisual.render.engine.uniform.impl.PostFXUniforms; +import dev.loki.lovisual.render.engine.uniform.impl.post.PostFXUniforms; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspotTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspotTest.java index 0ba3c0f..1fb4030 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspotTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/cosmetics/CosmeticsHotspotTest.java @@ -7,7 +7,7 @@ package dev.loki.lovisual.features.module.modules.visuals.cosmetics; -import dev.loki.lovisual.features.cosmetic.CosmeticSlot; +import dev.loki.lovisual.features.cosmetic.model.CosmeticSlot; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java index a74f89f..c016a9c 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcLibClientTest.java @@ -56,4 +56,4 @@ public final class LrcLibClientTest { List result = future.join(); assertTrue(result.isEmpty()); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcParserTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcParserTest.java index 21eb764..aadcd05 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcParserTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LrcParserTest.java @@ -135,4 +135,4 @@ public final class LrcParserTest { assertEquals(15500L, lines.get(2).timestampMs()); assertEquals(90000L, lines.get(3).timestampMs()); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricLineSplitterTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricLineSplitterTest.java index 804ab95..3e15eb0 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricLineSplitterTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/features/module/modules/visuals/lyrics/LyricLineSplitterTest.java @@ -98,4 +98,4 @@ public final class LyricLineSplitterTest { assertTrue(result.size() > 1, "5 words should be split"); } -} \ No newline at end of file +} diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngineTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngineTest.java index e517094..95f61e9 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngineTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/render/engine/renderer/ui/runtime/script/JavetUiScriptEngineTest.java @@ -14,6 +14,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import dev.loki.lovisual.render.engine.renderer.ui.runtime.script.engine.JavetUiScriptEngine; public final class JavetUiScriptEngineTest { @Test diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/HandAnimStateTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/HandAnimStateTest.java similarity index 99% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/HandAnimStateTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/HandAnimStateTest.java index 2172ce9..842d56f 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/HandAnimStateTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/HandAnimStateTest.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.animation.hand; +package dev.loki.lovisual.util.animation.hand.state; import org.junit.jupiter.api.Test; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/SwayStateTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/SwayStateTest.java similarity index 98% rename from combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/SwayStateTest.java rename to combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/SwayStateTest.java index 16dc328..5982078 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/SwayStateTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/animation/hand/state/SwayStateTest.java @@ -5,7 +5,7 @@ * Licensed under the GNU General Public License v3.0. */ -package dev.loki.lovisual.util.animation.hand; +package dev.loki.lovisual.util.animation.hand.state; import org.junit.jupiter.api.Test; diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/combat/ReachMeterTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/combat/ReachMeterTest.java index b728759..cb1dc57 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/combat/ReachMeterTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/combat/ReachMeterTest.java @@ -13,6 +13,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import dev.loki.lovisual.util.combat.tracking.ReachMeter; public final class ReachMeterTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/LegacyTextUtilTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/LegacyTextUtilTest.java index 6048ad6..6592096 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/LegacyTextUtilTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/LegacyTextUtilTest.java @@ -16,6 +16,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; +import dev.loki.lovisual.util.text.format.LegacyTextUtil; /** * convertLegacyCodes строит дерево: Component.empty() → сегмент-обёртка → стилизованные листья. diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameMaskerTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameMaskerTest.java index 3ccc474..8516f8b 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameMaskerTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameMaskerTest.java @@ -13,6 +13,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import dev.loki.lovisual.util.text.mask.NameMasker; public final class NameMaskerTest { diff --git a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameProtectorTest.java b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameProtectorTest.java index 317ce14..9f6f0e4 100644 --- a/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameProtectorTest.java +++ b/combatant-client-26.2/src/test/java/dev/loki/lovisual/util/text/NameProtectorTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import dev.loki.lovisual.util.text.mask.NameProtector; public final class NameProtectorTest { diff --git a/combatant-client-26.2/tools/pkgsplit/fiximports.py b/combatant-client-26.2/tools/pkgsplit/fiximports.py new file mode 100644 index 0000000..a69db02 --- /dev/null +++ b/combatant-client-26.2/tools/pkgsplit/fiximports.py @@ -0,0 +1,294 @@ +#!/usr/bin/env python3 +"""Rewrite import paths to match on-disk location + auto-fix missing/star imports. +Usage: fiximports.py [BASE ...] — if no BASE given, scans whole lovisual tree. +Features vs v1: + - handles star imports (import pkg.*) -> expands to single-type imports based on body usage + - inserts missing single-type imports for unique classes used by simple name + - fixes stale FQNs in body (dev.loki.lovisual.oldpkg.Class -> newpkg.Class) + - respects shadow list (Font, Scoreboard etc.) and dupe names + - dedupes + sorts imports +""" + +import os, re, sys + +ROOT = "src/main/java/dev/loki/lovisual" +# Known shadows where simple name collides with JDK/vanilla/GUI types. +# Auto-insert would break these (seen in ecfe76f fix). +SHADOW = { + "Font", + "GlyphAtlasManager", + "Scoreboard", + "Inventory", + "MediaPlayer", + "Matrix4f", + "Vector3f", + "Button", + "List", + "Map", + "Set", + "Player", + "Entity", + "Level", + "World", +} + +# Build class -> pkg map from disk +cls_pkg = {} # cls -> set(pkgs) +cls_pkg_unique = {} # cls -> pkg if unique +file_for_cls = {} # cls -> path (for dupes debug) + +scan_roots = sys.argv[1:] if len(sys.argv) > 1 else [ROOT] +for base in scan_roots: + # base may be like src/main/java/dev/loki/lovisual/util/media + # we walk it, but for global map we walk ROOT anyway to fix all imports + pass +# always build from ROOT for correctness +for dp, dns, fns in os.walk(ROOT): + pkg = os.path.relpath(dp, ROOT).replace("/", ".") + if pkg == ".": + pkg = "" + for fn in fns: + if not fn.endswith(".java"): + continue + cls = fn[:-5] + # full pkg for this class + full_pkg = f"dev.loki.lovisual.{pkg}" if pkg else "dev.loki.lovisual" + cls_pkg.setdefault(cls, set()).add(full_pkg) + file_for_cls[cls] = os.path.join(dp, fn) + +dupes = {cls for cls, pkgs in cls_pkg.items() if len(pkgs) > 1} +for cls, pkgs in cls_pkg.items(): + if len(pkgs) == 1: + cls_pkg_unique[cls] = next(iter(pkgs)) + +# For FQN fix: build old->new map for stale FQNs (where file moved but old import still points) +# We already have unique map, so any FQN that doesn't match current pkg is stale. +changed = 0 +FQN_RE = re.compile(r"dev\.loki\.lovisual\.[\w.]+?\.([A-Z]\w*)\b") + +for tree in ("src/main/java", "src/test/java"): + for dp, dns, fns in os.walk(tree): + for fn in fns: + if not fn.endswith(".java"): + continue + p = os.path.join(dp, fn) + text = open(p, encoding="utf-8", errors="ignore").read() + orig = text + + # package of this file + m_pkg = re.search(r"^package\s+([\w.]+);", text, re.M) + my_pkg = m_pkg.group(1) if m_pkg else "" + + lines = text.splitlines(keepends=True) + # separate header vs body + # find last import line + import_lines = [i for i, l in enumerate(lines) if l.startswith("import ")] + body_start = ( + (max(import_lines) + 1) + if import_lines + else next( + (i for i, l in enumerate(lines) if l.startswith("package")), 0 + ) + + 1 + ) + body = "".join(lines[body_start:]) + + # 1) Fix existing single-type imports where path is stale (unique classes only) + def fix_import(m): + full = m.group(0).strip() # import dev.loki.lovisual.foo.Bar; + # extract pkg and cls + mm = re.match( + r"import\s+(?:static\s+)?dev\.loki\.lovisual\.([\w.]+)\.([A-Z]\w*);", + full, + ) + if not mm: + return m.group(0) + pkg_part, cls = mm.group(1), mm.group(2) + full_pkg_prefix = f"dev.loki.lovisual.{pkg_part}" + if cls in dupes or cls in SHADOW: + return m.group(0) + want = cls_pkg_unique.get(cls) + if want is None: + return m.group(0) + if want == full_pkg_prefix or want == f"dev.loki.lovisual.{pkg_part}": + return m.group(0) + # keep static prefix if present + is_static = "static " in full + prefix = "import static " if is_static else "import " + return ( + f"{prefix}{want}.{cls};\n" + if full.endswith("\n") + else f"{prefix}{want}.{cls};" + ) + + text = re.sub( + r"import\s+(?:static\s+)?dev\.loki\.lovisual\.[\w.]*?\.([A-Z]\w*);[ \t]*\n?", + lambda m: fix_import(m) if m.group(1) in cls_pkg_unique else m.group(0), + text, + ) + + # Re-split after fix + lines = text.splitlines(keepends=True) + import_lines = [i for i, l in enumerate(lines) if l.startswith("import ")] + body_start = ( + (max(import_lines) + 1) + if import_lines + else next( + (i for i, l in enumerate(lines) if l.startswith("package")), 0 + ) + + 1 + ) + body = "".join(lines[body_start:]) + + # 2) Expand star imports: import pkg.* -> needed singles + # DISABLED by default for clean-tree runs (avoids 57-file churn). + # split_struct.py handles star expansion per-wave when BASE becomes empty. + # Enable here only if --expand-stars flag is given. + stars = [] + if "--expand-stars" in sys.argv: + for l in lines: + ms = re.match(r"import\s+dev\.loki\.lovisual\.([\w.]+)\.\*;", l) + if ms: + stars.append(f"dev.loki.lovisual.{ms.group(1)}") + if stars: + needed = set() + body_tokens = set(re.findall(r"\b[A-Z][A-Za-z0-9_]*\b", body)) + for star_pkg in stars: + for cls in body_tokens: + want = cls_pkg_unique.get(cls) + if want == star_pkg: + if cls not in SHADOW: + needed.add(f"import {want}.{cls};") + if needed: + # remove star lines, insert needed + new_lines = [] + for l in lines: + if re.match(r"import\s+dev\.loki\.lovisual\.[\w.]+\.\*;", l): + continue + new_lines.append(l) + # insert needed after last import or after package + lines = new_lines + text = "".join(lines) + lines = text.splitlines(keepends=True) + import_lines = [ + i for i, l in enumerate(lines) if l.startswith("import ") + ] + idx = ( + max(import_lines) + if import_lines + else next( + (i for i, l in enumerate(lines) if l.startswith("package")), + 0, + ) + ) + # dedup against existing + existing = set(l.strip() for l in lines if l.startswith("import ")) + to_add = sorted(n for n in needed if n not in existing) + if to_add: + lines[idx + 1 : idx + 1] = [n + "\n" for n in to_add] + text = "".join(lines) + # re-derive body + lines = text.splitlines(keepends=True) + body = "".join(lines[body_start:]) + + # 3) Insert missing imports for unique classes used by simple name + # DISABLED by default: too aggressive (inner class UiState etc.) — only needed + # when split_struct moved classes and body uses simple name without import. + # split_struct.py already handles this for moved files. For fiximports standalone, + # we skip auto-insert to avoid 160-file churn on clean tree. Enable with --insert. + missing = [] + if "--insert" in sys.argv: + body_simple = body + body_simple = re.sub(r'"(\\.|[^"\\])*"', '""', body_simple) + body_simple = re.sub(r"//[^\n]*", "", body_simple) + body_simple = re.sub(r"/\*.*?\*/", "", body_simple, flags=re.S) + tokens = set(re.findall(r"\b[A-Z][A-Za-z0-9_]*\b", body_simple)) + for cls in tokens: + if cls in SHADOW or cls in dupes: + continue + want = cls_pkg_unique.get(cls) + if not want: + continue + if want == my_pkg: + continue + if f"import {want}.{cls};" in text: + continue + if cls == fn[:-5]: + continue + if f"{want}.{cls}" in body: + continue + # require unqualified usage (not Outer.Inner) + if not re.search( + r"(? 10 else ''}" + ) +if SHADOW: + print(f"shadow protected: {sorted(SHADOW)}") diff --git a/combatant-client-26.2/tools/pkgsplit/member_sweep.py b/combatant-client-26.2/tools/pkgsplit/member_sweep.py new file mode 100644 index 0000000..32d63c6 --- /dev/null +++ b/combatant-client-26.2/tools/pkgsplit/member_sweep.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +"""Depth-aware sweep: promote ALL package-private member declarations +(fields, methods, constructors, nested types) inside class bodies of a tree. +Skips private members deliberately? No — the wave policy: everything that was +package-private becomes public; existing public/private untouched. +Usage: member_sweep.py BASE""" +import os, re, sys + +PRIMS = {"int","float","double","boolean","long","byte","short","char","void"} +MODS = {"public","private","protected","static","final","abstract","transient","volatile","native","strictfp","synchronized","default"} +TYPE_TOK = re.compile(r"^(?:[A-Za-z_]\w*\.)*[A-Za-z_]\w*(?:<[^>]*>)?(?:\[\])?(?:\?|extends\s+\w+)*$") + +def clean(l): + s = re.sub(r"//.*", "", l) + s = re.sub(r'"(\\.|[^"\\])*"', '""', s) + s = re.sub(r"'(\\.|[^'\\])'", "''", s) + return s + +def process(p): + lines = open(p).read().splitlines(keepends=True) + stack = [] + out = [] + changed = 0 + for l in lines: + in_class = not stack or stack[-1] == "class" + s = l.strip() + ind = l[:len(l)-len(l.lstrip())] + if in_class and s and ind and l[:4] == " " and not s.startswith(("public","private","protected","//","*","@","}","{","import","package","else","return","if","for","while","switch","case","try","catch","finally","throw","new ","super.","this.","synchronized(")): + m = re.match(r"^(?:(?:static|final|abstract|transient|volatile|synchronized)\s+)*(<[\w ,<>]+>\s+)?([A-Za-z_][\w.]*(?:<[^>]*>)?)(?:\[\])?\s+(\w+)\s*(\(|=|;)", s) + ctor = re.match(r"^(\w+)\s*\(", s) and s.split("(")[0][0].isupper() + typ_ok = False + if m: + typ = m.group(2) + typ_ok = typ in PRIMS or typ[0].isupper() + is_field = m and typ_ok and m.group(4) in ("=",";") + is_method = m and typ_ok and m.group(4) == "(" and not s.startswith("return") + is_ctor = bool(ctor) and ind.strip() != "" and not s.startswith(("class","record","interface","enum","public","static","final","abstract","void","new ")) and re.match(rf"^\w+\(", s) and s.split("(")[0] in [fn for fn in [os.path.basename(p)[:-5]]] + is_type = bool(re.match(r"^(?:(?:static|final|abstract|sealed)\s+)*(class|interface|enum|record)\s+\w+", s)) + if is_field or is_method or is_ctor or is_type: + l = ind + "public " + s + ("\n" if l.endswith("\n") else "") + changed += 1 + out.append(l) + c = clean(l) + pos = 0 + while True: + o = c.find("{", pos); cl = c.find("}", pos) + if o == -1 and cl == -1: break + if cl != -1 and (o == -1 or cl < o): + stack.pop() if stack else None + pos = cl + 1 + else: + stack.append("class" if re.search(r"\b(class|interface|enum|record)\s+\w", c[:o]) else "other") + pos = o + 1 + if changed: + open(p, "w").write("".join(out)) + return changed + +def main(base): + total = 0 + for dp, dns, fns in os.walk(base): + for fn in fns: + if fn.endswith(".java"): + total += process(os.path.join(dp, fn)) + print("member sweep promotions:", total) + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/combatant-client-26.2/tools/pkgsplit/promote.py b/combatant-client-26.2/tools/pkgsplit/promote.py new file mode 100644 index 0000000..9ec2f71 --- /dev/null +++ b/combatant-client-26.2/tools/pkgsplit/promote.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +"""Compile-fix helper (Phase 8.5.1): promote declarations to public until +compileJava+compileTestJava are green. Brace-depth-aware class-body tracking; +statement lines are never touched. Run from project root. +Usage: python3 promote.py BASE_DIR""" +import os, re, subprocess, sys + +MODS = {"public","private","protected","static","final","abstract","transient","volatile","native","strictfp"} +PRIMS = {"int","float","double","boolean","long","byte","short","char","void"} +IDENT = re.compile(r"[A-Za-z_][\w.]*") +BASE = "." + + +def clean_line(l): + s = re.sub(r"//[^\n]*", "", l) + s = re.sub(r'"(\\.|[^"\\])*"', '""', s) + s = re.sub(r"'(\\.|[^'\\])*'", "''", s) + return s + + +def class_body_flags(p): + """(line, in_class_body) per line using a stack over '{' scopes.""" + lines = open(p).read().splitlines(keepends=True) + stack = [] + out = [] + for l in lines: + out.append((l, not stack or stack[-1] == "class")) + c = clean_line(l) + pos = 0 + while True: + o = c.find("{", pos) + cl = c.find("}", pos) + if o == -1 and cl == -1: + break + if cl != -1 and (o == -1 or cl < o): + if stack: + stack.pop() + pos = cl + 1 + else: + head = c[:o] + kind = "class" if re.search(r"\b(class|interface|enum|record|@interface)\s+\w", head) else "other" + stack.append(kind) + pos = o + 1 + return out + + +def build_maps(): + typemap, cfiles = {}, {} + for dp, dns, fns in os.walk(BASE): + for fn in fns: + if not fn.endswith(".java"): + continue + p = os.path.join(dp, fn) + cfiles.setdefault(fn[:-5], p) + txt = open(p).read() + for m in re.finditer(r"^ {0,8}(?:public\s+|private\s+|protected\s+|static\s+|final\s+|abstract\s+|sealed\s+)*(class|interface|enum|record)\s+(\w+)", txt, re.M): + typemap.setdefault(m.group(2), p) + return typemap, cfiles + + +def promote(typemap, cfiles, cls, member): + p = typemap.get(cls) or cfiles.get(cls) + if not p: + return False + for i, (l, in_class) in enumerate(class_body_flags(p)): + if not in_class: + continue + s = l.lstrip() + ind = l[:len(l) - len(s)] + if ind not in (" ", " "): + continue + if s.startswith(("public ", "protected ", "private ", "@", "//", "*", "}", "{")): + continue + if re.match(r"^(?:(?:public|static|final|abstract)\s+)*(class|interface|enum|record)\s+%s\b" % re.escape(member), s): + lines = open(p).read().splitlines(keepends=True) + lines[i] = ind + "public " + s + "\n" + open(p, "w").write("".join(lines)) + return True + # constructor of a nested class named `member` + if re.match(r"^%s\s*\(" % re.escape(member), s): + lines = open(p).read().splitlines(keepends=True) + lines[i] = ind + "public " + s + "\n" + open(p, "w").write("".join(lines)) + return True + m = re.search(r"(?", " > ").replace(",", " , ").split() + ok = bool(toks) + for t in toks: + b = IDENT.match(t) + core = b.group(0) if b else "" + if core in MODS or core in PRIMS or (core and core[0].isupper()) or t in ("<", ">", ",", "?", "extends"): + continue + ok = False + break + if not ok: + continue + lines = open(p).read().splitlines(keepends=True) + if s.startswith("private "): + s = s[len("private "):] + lines[i] = ind + "public " + s + ("\n" if l.endswith("\n") else "") + open(p, "w").write("".join(lines)) + return True + return False + + +def main(): + global BASE + BASE = sys.argv[1] if len(sys.argv) > 1 else BASE + typemap, cfiles = build_maps() + for it in range(150): + r = subprocess.run(["./gradlew", "compileJava", "compileTestJava", "--offline", "-q"], + capture_output=True, text=True) + err = r.stderr + r.stdout + if r.returncode == 0: + print("COMPILE GREEN after", it, "iterations") + return 0 + pend = set() + for msg, c in re.findall(r"error: (.*?) is not public in (\w+);", err): + tok = re.sub(r"", "", msg).split("(")[0].split(".")[-1].strip() + if tok: + pend.add((tok, c)) + for msg, c in re.findall(r"reason:\s+(?:)?([\w.]+)\(.*?\) is not public in (\w+);", err): + pend.add((msg.split(".")[-1], c)) + for m2, c2 in re.findall(r"method ([\w]+) in class (\w+) cannot be accessed", err): + pend.add((m2, c2)) + for m2, c2 in re.findall(r"([A-Z]\w+)\.[\w.]* is defined in an inaccessible class", err): + pass + for cls_name in re.findall(r"([A-Z]\w*) is defined in an inaccessible class or interface", err): + pend.add((cls_name, cls_name)) + done = 0 + for mem, cls in sorted(pend): + if promote(typemap, cfiles, cls, mem): + done += 1 + typemap, cfiles = build_maps() + if done == 0: + print("STUCK at iter", it) + seen, uniq = set(), [] + for line in err.splitlines(): + if "error:" in line and line not in seen: + seen.add(line) + uniq.append(line) + for u in uniq[:30]: + print(" ", u.replace("/storage/project/jvm/LoVisual/combatant-client-26.2/", "")[:170]) + return 1 + print(f"iter {it}: promoted {done}/{len(pend)}") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/combatant-client-26.2/tools/pkgsplit/split_struct.py b/combatant-client-26.2/tools/pkgsplit/split_struct.py new file mode 100644 index 0000000..e11a9ec --- /dev/null +++ b/combatant-client-26.2/tools/pkgsplit/split_struct.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +"""Structure split helper (Phase 8.5.1): move classes into leaf subpackages by spec JSON, +fix package lines, rewrite FQNs repo-wide, expand star imports of emptied bases, +insert single-type imports for moved classes, promote the PRIMARY top-level type +(class name == file name) to public when it was package-private. +Does NOT run the compile loop — call promote.py afterwards. +Usage: python3 split_struct.py spec.json (run from project root, e.g. combatant-client-26.2)""" + +import os, re, subprocess, json, sys + +ROOT = "src/main/java/dev/loki/lovisual" + + +def git_mv(src, dstdir, name): + os.makedirs(dstdir, exist_ok=True) + dst = os.path.join(dstdir, name + ".java") + if os.path.abspath(src) == os.path.abspath(dst): + return + subprocess.run(["git", "mv", "-f", src, dst], check=True) + + +def main(specpath): + spec = json.load(open(specpath)) + BASE = spec["base"] + files = {} + for dp, dns, fns in os.walk(BASE): + for fn in fns: + if fn.endswith(".java"): + files[fn[:-5]] = os.path.join(dp, fn) + reldots = {} + for sub, names in spec["move"].items(): + dst = os.path.join(BASE, sub) + os.makedirs(dst, exist_ok=True) + for n in names: + src = files.get(n) + if src is None: + print("MISSING:", n) + continue + cur = os.path.relpath(os.path.dirname(src), ROOT).replace("/", ".") + newp = os.path.relpath(dst, ROOT).replace("/", ".") + if cur == newp: + continue + reldots[f"{cur}.{n}"] = f"{newp}.{n}" + git_mv(src, dst, n) + if not reldots: + print("nothing moved") + + # package lines for whole base tree + for dp, dns, fns in os.walk(BASE): + pkg = "dev.loki.lovisual." + os.path.relpath(dp, ROOT).replace("/", ".") + for fn in fns: + if not fn.endswith(".java"): + continue + p = os.path.join(dp, fn) + t = open(p).read() + n = re.sub(r"^package [^;]*;", f"package {pkg};", t, count=1, flags=re.M) + if n != t: + open(p, "w").write(n) + + moved_pkg = {} + for dp, dns, fns in os.walk(BASE): + pkg = os.path.relpath(dp, ROOT).replace("/", ".") + for fn in fns: + if fn.endswith(".java"): + moved_pkg[fn[:-5]] = pkg + + # global dupes (WorldCommandBuffer, GlyphAtlas* etc.) should not be auto-imported + global_cls = {} + for dp, dns, fns in os.walk(ROOT): + for fn in fns: + if fn.endswith(".java"): + global_cls.setdefault(fn[:-5], set()).add( + os.path.relpath(dp, ROOT).replace("/", ".") + ) + dupes = {k for k, v in global_cls.items() if len(v) > 1} + + base_pkg = "dev.loki.lovisual." + os.path.relpath(BASE, ROOT).replace("/", ".") + WILD_STAR = f"import {base_pkg}.*;" + WILD_LEGACY = f"import {base_pkg}.;" + SHADOW = { + "Font", + "GlyphAtlasManager", + "Scoreboard", + "Inventory", + "MediaPlayer", + "Player", + "Entity", + "Level", + "World", + } + for tree in ("src/main/java", "src/test/java"): + for dp, dns, fns in os.walk(tree): + my = None + rel = os.path.relpath(dp, tree) + if rel.startswith("dev/loki/lovisual"): + my = rel.replace("/", ".") + for fn in fns: + if not fn.endswith(".java"): + continue + p = os.path.join(dp, fn) + t = open(p).read() + o = t + # replace longest FQNs first to avoid prefix collision (InventorySwap vs InventorySwapVisibility) + for old, new in sorted(reldots.items(), key=lambda kv: -len(kv[0])): + # exact FQN replace: old must be followed by non-word or end, use regex + t = re.sub( + r"dev\.loki\.lovisual\." + re.escape(old) + r"(?=[\W])", + f"dev.loki.lovisual.{new}", + t, + ) + # expand star imports (both .* and legacy .%;) only if base became empty + wild_hit = (WILD_STAR in t) or (WILD_LEGACY in t) + if wild_hit: + base_still_has_top = any( + cp == os.path.relpath(BASE, ROOT).replace("/", ".") + for cp in moved_pkg.values() + ) + if not base_still_has_top: + body = "\n".join(t.splitlines()[8:]) + need = [ + f"import dev.loki.lovisual.{cp}.{cls};" + for cls, cp in moved_pkg.items() + if cls not in SHADOW + and cls not in dupes + and re.search(r"(?