- feat: Фаза 1 ребрендинг combatant → lovisual + восстановление config - refactor: Фаза 2 — выкинуть Runtime/JarReplacement, заменить на Lifecycle - refactor: Фаза 3.5 — удалить читерские модули, ESP под легит - refactor: Фаза 3 — разбить Renderer2D (3379→2150 фасад + 14 хелперов ≤200) - refactor: Фаза 3 — разбить BetterChatRenderer (2870→210 фасад + 21 хелпер ≤200) - refactor: Фаза 3 — разбить UnifiedSettingRenderer (2798→208 фасад + 24 хелпера ≤200) - refactor: Фаза 3 — разбить ClickGuiRenderer (1887→542 фасад + 15 хелперов ≤200) - refactor: Фаза 3 — разбить NameTags (1791→438 фасад + 11 хелперов ≤200) - refactor: Фаза 3 — разбить TargetHud (1655→340 фасад + 11 хелперов ≤200) - refactor: Фаза 3 — разбить ESP (1538→269 фасад + 11 хелперов ≤200)
49 lines
2 KiB
Java
49 lines
2 KiB
Java
/*
|
|
* This file is part of the LoVisual Client distribution.
|
|
* Copyright (c) 2026 pivosos2007.
|
|
*
|
|
* Licensed under the GNU General Public License v3.0.
|
|
*/
|
|
|
|
package dev.loki.lovisual.mixins;
|
|
|
|
import dev.loki.lovisual.util.screen.ClientScreen;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.GuiGraphicsExtractor;
|
|
import net.minecraft.client.gui.components.AbstractSliderButton;
|
|
import net.minecraft.client.gui.components.AbstractWidget;
|
|
import net.minecraft.client.gui.screens.inventory.MerchantScreen;
|
|
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.mixins.accessors.SliderWidgetAccessor;
|
|
|
|
@Mixin(AbstractSliderButton.class)
|
|
public abstract class AbstractSliderButtonMixin {
|
|
|
|
@Inject(method = "extractWidgetRenderState(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", at = @At("HEAD"), cancellable = true)
|
|
private void lovisual$renderWidget(GuiGraphicsExtractor ctx, int mouseX, int mouseY, float delta, CallbackInfo ci) {
|
|
BetterButtons buttons = BetterButtons.get();
|
|
if (buttons == null || !buttons.useUiButtons()) return;
|
|
Minecraft mc = Minecraft.getInstance();
|
|
if (mc != null && ClientScreen.current() instanceof MerchantScreen) return;
|
|
AbstractSliderButton self = (AbstractSliderButton) (Object) this;
|
|
AbstractWidget widget = self;
|
|
|
|
boolean hovered = widget.isMouseOver(mouseX, mouseY);
|
|
boolean dragging = ((SliderWidgetAccessor) self).lovisual$isDragging();
|
|
float hover = BetterButtons.updateHover(widget, hovered || dragging);
|
|
|
|
double value = ((SliderWidgetAccessor) self).lovisual$getValue();
|
|
BetterButtons.enqueueSlider(widget, (float) value, dragging, hover);
|
|
if (hovered) {
|
|
BetterButtons.captureTooltip(widget, mouseX, mouseY);
|
|
}
|
|
ci.cancel();
|
|
}
|
|
}
|
|
|
|
|
|
|