/* * Gimbal * Copyright (C) 2024 moonleay * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package net.moonleay.gimbal.mixin; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.moonleay.gimbal.client.ClientMain; import net.moonleay.gimbal.client.config.GimbalGuiSettings; import net.moonleay.gimbal.client.editor.ClientEditor; import net.moonleay.gimbal.client.util.screen.ScreenUtil; 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 org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(InGameHud.class) public abstract class HudMixin { @Shadow @Final private MinecraftClient client; @Inject(method = "renderStatusEffectOverlay", at = @At("HEAD")) private void render(MatrixStack matrices, CallbackInfo ci) { TextRenderer tr = this.client.textRenderer; GimbalGuiSettings conf = ClientMain.CONFIG.getConfig().getGuiSettings(); if (!conf.getShowHud()) return; int scaleFactor = this.client.getWindow() .calculateScaleFactor( this.client.options.getGuiScale().getValue(), this.client.forcesUnicodeFont() ); Text displayText = ClientEditor.INSTANCE.getModeDisplayText(ClientMain.CONFIG.getConfig()); tr.drawWithShadow( matrices, displayText, ScreenUtil.INSTANCE.getXForAnchor( ScreenUtil.INSTANCE.getReal( this.client.getWindow().getWidth(), conf.getOffset().getScaledX() / scaleFactor), conf.getHorizontalAnchor(), this.client.textRenderer.getWidth(displayText) ), ScreenUtil.INSTANCE.getYForAnchor( ScreenUtil.INSTANCE.getReal( this.client.getWindow().getHeight(), conf.getOffset().getScaledY() / scaleFactor), conf.getVerticalAnchor(), this.client.textRenderer.fontHeight ), ClientEditor.INSTANCE.getCurrentColor() ); } }