Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 9 additions & 20 deletions src/main/java/meteordevelopment/meteorclient/MeteorClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import meteordevelopment.meteorclient.addons.AddonManager;
import meteordevelopment.meteorclient.addons.MeteorAddon;
import meteordevelopment.meteorclient.events.game.OpenScreenEvent;
import meteordevelopment.meteorclient.events.meteor.KeyInputEvent;
import meteordevelopment.meteorclient.events.meteor.MouseClickEvent;
import meteordevelopment.meteorclient.events.world.TickEvent;
Expand All @@ -32,13 +31,13 @@
import meteordevelopment.meteorclient.utils.network.OnlinePlayers;
import meteordevelopment.orbit.EventBus;
import meteordevelopment.orbit.EventHandler;
import meteordevelopment.orbit.EventPriority;
import meteordevelopment.orbit.IEventBus;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.metadata.ModMetadata;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.ChatScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.resources.Identifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -176,25 +175,15 @@ private void toggleGui() {

// Hide HUD

private boolean wasWidgetScreen, wasHudHiddenRoot;

@EventHandler(priority = EventPriority.LOWEST)
private void onOpenScreen(OpenScreenEvent event) {
if (event.screen instanceof WidgetScreen) {
if (!wasWidgetScreen) wasHudHiddenRoot = mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden;
if (GuiThemes.get().hideHUD() || wasHudHiddenRoot) {
// Always show the MC HUD in the HUD editor screen since people like
// to align some items with the hotbar or chat
mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden = !(event.screen instanceof HudEditorScreen)
&& !(event.screen instanceof AddHudElementScreen)
&& !(event.screen instanceof HudElementScreen);
}
} else {
if (wasWidgetScreen) mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden = wasHudHiddenRoot;
wasHudHiddenRoot = mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden;
}
public static boolean shouldHideHud() {
if (!GuiThemes.get().hideHUD()) return false;

Screen screen = mc.gui.screen();
if (!(screen instanceof WidgetScreen)) return false;

wasWidgetScreen = event.screen instanceof WidgetScreen;
return !(screen instanceof HudEditorScreen)
&& !(screen instanceof AddHudElementScreen)
&& !(screen instanceof HudElementScreen);
}

public static Identifier identifier(String path) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,6 @@ public class MeteorGuiTheme extends GuiTheme {
.name("hide-HUD")
.description("Hide HUD when in GUI.")
.defaultValue(false)
.onChanged(v -> {
if (mc.gui.screen() instanceof WidgetScreen) {
mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden = v;
}
})
.build()
);

Expand Down
22 changes: 22 additions & 0 deletions src/main/java/meteordevelopment/meteorclient/mixin/HudMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,22 @@
package meteordevelopment.meteorclient.mixin;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.gui.GuiTheme;
import meteordevelopment.meteorclient.gui.GuiThemes;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.misc.BetterChat;
import meteordevelopment.meteorclient.systems.modules.render.Freecam;
import meteordevelopment.meteorclient.systems.modules.render.NoRender;
import meteordevelopment.meteorclient.systems.modules.render.Zoom;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.client.gui.Hud;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.scores.Objective;
import org.objectweb.asm.Opcodes;
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.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArgs;
Expand Down Expand Up @@ -95,4 +101,20 @@ private void onClear(CallbackInfo ci) {
private void onExtractNausea(GuiGraphicsExtractor graphics, float strength, CallbackInfo ci) {
if (Modules.get().get(NoRender.class).noNausea()) ci.cancel();
}

@ModifyExpressionValue(method = "extractRenderState", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/Hud;isHidden:Z", opcode = Opcodes.GETFIELD))
private boolean onGetIsHidden(boolean original) {
return original || meteor$ShouldHideHud();
}

@Inject(method = "extractDebugOverlay", at = @At("HEAD"), cancellable = true)
private void onExtractDebugOverlay(GuiGraphicsExtractor graphics, CallbackInfo ci) {
if (meteor$ShouldHideHud()) ci.cancel();
}

@Unique
private static boolean meteor$ShouldHideHud() {
if (GuiThemes.get() == null || Modules.get() == null) return false;
return MeteorClient.shouldHideHud() || Modules.get().get(Zoom.class).shouldHideHud();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

package meteordevelopment.meteorclient.systems.modules.render;

import com.mojang.blaze3d.platform.InputConstants;
import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.events.meteor.KeyInputEvent;
import meteordevelopment.meteorclient.events.meteor.MouseScrollEvent;
import meteordevelopment.meteorclient.events.render.GetFovEvent;
import meteordevelopment.meteorclient.events.render.Render3DEvent;
Expand Down Expand Up @@ -75,42 +73,22 @@ public class Zoom extends Module {
private double value;
private double time;

private boolean hudManualToggled;

public Zoom() {
super(Categories.Render, "zoom", "Zooms your view.");
autoSubscribe = false;
}

@Override
public void onActivate() {
if (!enabled) {
preCinematic = mc.options.smoothCamera;
preMouseSensitivity = mc.options.sensitivity().get();
value = zoom.get();
time = 0.001;

MeteorClient.EVENT_BUS.subscribe(this);
enabled = true;
}
if (enabled) return;

if (hideHud.get() && !mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden) {
hudManualToggled = false;
mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden = true;
}
}
preCinematic = mc.options.smoothCamera;
preMouseSensitivity = mc.options.sensitivity().get();
value = zoom.get();
time = 0.001;

@Override
public void onDeactivate() {
if (hideHud.get() && !hudManualToggled) {
mc.gameRenderer.gameRenderState().guiRenderState.isHudHidden = false;
}
}

@EventHandler
public void onKeyPressed(KeyInputEvent event) {
if (event.key() != InputConstants.KEY_F1) return;
hudManualToggled = true;
MeteorClient.EVENT_BUS.subscribe(this);
enabled = true;
}

public void onStop() {
Expand Down Expand Up @@ -171,4 +149,8 @@ public double getScaling() {
public boolean renderHands() {
return !isActive() || renderHands.get();
}

public boolean shouldHideHud() {
return isActive() && hideHud.get();
}
}
Loading