feat: Hide potion effects
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
package moe.nea.firmament.mixins;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
||||||
|
import moe.nea.firmament.features.fixes.Fixes;
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
|
||||||
|
import net.minecraft.client.gui.screen.ingame.StatusEffectsDisplay;
|
||||||
|
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.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
@Mixin(InventoryScreen.class)
|
||||||
|
public abstract class HideStatusEffectsPatch {
|
||||||
|
@Shadow
|
||||||
|
public abstract boolean shouldHideStatusEffectHud();
|
||||||
|
|
||||||
|
@Inject(method = "shouldHideStatusEffectHud", at = @At("HEAD"), cancellable = true)
|
||||||
|
private void hideStatusEffects(CallbackInfoReturnable<Boolean> cir) {
|
||||||
|
cir.setReturnValue(!Fixes.TConfig.INSTANCE.getHidePotionEffects());
|
||||||
|
}
|
||||||
|
|
||||||
|
@WrapWithCondition(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/StatusEffectsDisplay;drawStatusEffects(Lnet/minecraft/client/gui/DrawContext;IIF)V"))
|
||||||
|
private boolean conditionalRenderStatuses(StatusEffectsDisplay instance, DrawContext context, int mouseX, int mouseY, float tickDelta) {
|
||||||
|
return shouldHideStatusEffectHud() || !Fixes.TConfig.INSTANCE.getHidePotionEffects();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,71 +1,67 @@
|
|||||||
|
|
||||||
|
|
||||||
package moe.nea.firmament.features.fixes
|
package moe.nea.firmament.features.fixes
|
||||||
|
|
||||||
import moe.nea.jarvis.api.Point
|
import moe.nea.jarvis.api.Point
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
|
||||||
import net.minecraft.client.MinecraftClient
|
import net.minecraft.client.MinecraftClient
|
||||||
import net.minecraft.client.option.KeyBinding
|
import net.minecraft.client.option.KeyBinding
|
||||||
import net.minecraft.entity.player.PlayerEntity
|
|
||||||
import net.minecraft.text.Text
|
import net.minecraft.text.Text
|
||||||
import net.minecraft.util.Arm
|
|
||||||
import moe.nea.firmament.annotations.Subscribe
|
import moe.nea.firmament.annotations.Subscribe
|
||||||
import moe.nea.firmament.events.HudRenderEvent
|
import moe.nea.firmament.events.HudRenderEvent
|
||||||
import moe.nea.firmament.events.WorldKeyboardEvent
|
import moe.nea.firmament.events.WorldKeyboardEvent
|
||||||
import moe.nea.firmament.features.FirmamentFeature
|
import moe.nea.firmament.features.FirmamentFeature
|
||||||
import moe.nea.firmament.gui.config.ManagedConfig
|
import moe.nea.firmament.gui.config.ManagedConfig
|
||||||
import moe.nea.firmament.util.MC
|
import moe.nea.firmament.util.MC
|
||||||
import moe.nea.firmament.util.errorBoundary
|
|
||||||
|
|
||||||
object Fixes : FirmamentFeature {
|
object Fixes : FirmamentFeature {
|
||||||
override val identifier: String
|
override val identifier: String
|
||||||
get() = "fixes"
|
get() = "fixes"
|
||||||
|
|
||||||
object TConfig : ManagedConfig(identifier, Category.MISC) { // TODO: split this config
|
object TConfig : ManagedConfig(identifier, Category.MISC) { // TODO: split this config
|
||||||
val fixUnsignedPlayerSkins by toggle("player-skins") { true }
|
val fixUnsignedPlayerSkins by toggle("player-skins") { true }
|
||||||
var autoSprint by toggle("auto-sprint") { false }
|
var autoSprint by toggle("auto-sprint") { false }
|
||||||
val autoSprintKeyBinding by keyBindingWithDefaultUnbound("auto-sprint-keybinding")
|
val autoSprintKeyBinding by keyBindingWithDefaultUnbound("auto-sprint-keybinding")
|
||||||
val autoSprintHud by position("auto-sprint-hud", 80, 10) { Point(0.0, 1.0) }
|
val autoSprintHud by position("auto-sprint-hud", 80, 10) { Point(0.0, 1.0) }
|
||||||
val peekChat by keyBindingWithDefaultUnbound("peek-chat")
|
val peekChat by keyBindingWithDefaultUnbound("peek-chat")
|
||||||
}
|
val hidePotionEffects by toggle("hide-mob-effects") { false }
|
||||||
|
}
|
||||||
|
|
||||||
override val config: ManagedConfig
|
override val config: ManagedConfig
|
||||||
get() = TConfig
|
get() = TConfig
|
||||||
|
|
||||||
fun handleIsPressed(
|
fun handleIsPressed(
|
||||||
keyBinding: KeyBinding,
|
keyBinding: KeyBinding,
|
||||||
cir: CallbackInfoReturnable<Boolean>
|
cir: CallbackInfoReturnable<Boolean>
|
||||||
) {
|
) {
|
||||||
if (keyBinding === MinecraftClient.getInstance().options.sprintKey && TConfig.autoSprint && MC.player?.isSprinting != true)
|
if (keyBinding === MinecraftClient.getInstance().options.sprintKey && TConfig.autoSprint && MC.player?.isSprinting != true)
|
||||||
cir.returnValue = true
|
cir.returnValue = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
fun onRenderHud(it: HudRenderEvent) {
|
fun onRenderHud(it: HudRenderEvent) {
|
||||||
if (!TConfig.autoSprintKeyBinding.isBound) return
|
if (!TConfig.autoSprintKeyBinding.isBound) return
|
||||||
it.context.matrices.push()
|
it.context.matrices.push()
|
||||||
TConfig.autoSprintHud.applyTransformations(it.context.matrices)
|
TConfig.autoSprintHud.applyTransformations(it.context.matrices)
|
||||||
it.context.drawText(
|
it.context.drawText(
|
||||||
MC.font, Text.translatable(
|
MC.font, Text.translatable(
|
||||||
if (TConfig.autoSprint)
|
if (TConfig.autoSprint)
|
||||||
"firmament.fixes.auto-sprint.on"
|
"firmament.fixes.auto-sprint.on"
|
||||||
else if (MC.player?.isSprinting == true)
|
else if (MC.player?.isSprinting == true)
|
||||||
"firmament.fixes.auto-sprint.sprinting"
|
"firmament.fixes.auto-sprint.sprinting"
|
||||||
else
|
else
|
||||||
"firmament.fixes.auto-sprint.not-sprinting"
|
"firmament.fixes.auto-sprint.not-sprinting"
|
||||||
), 0, 0, -1, false
|
), 0, 0, -1, false
|
||||||
)
|
)
|
||||||
it.context.matrices.pop()
|
it.context.matrices.pop()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
fun onWorldKeyboard(it: WorldKeyboardEvent) {
|
fun onWorldKeyboard(it: WorldKeyboardEvent) {
|
||||||
if (it.matches(TConfig.autoSprintKeyBinding)) {
|
if (it.matches(TConfig.autoSprintKeyBinding)) {
|
||||||
TConfig.autoSprint = !TConfig.autoSprint
|
TConfig.autoSprint = !TConfig.autoSprint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun shouldPeekChat(): Boolean {
|
fun shouldPeekChat(): Boolean {
|
||||||
return TConfig.peekChat.isPressed(atLeast = true)
|
return TConfig.peekChat.isPressed(atLeast = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,8 @@
|
|||||||
"firmament.config.fixes.auto-sprint-keybinding": "Auto Sprint KeyBinding",
|
"firmament.config.fixes.auto-sprint-keybinding": "Auto Sprint KeyBinding",
|
||||||
"firmament.config.fixes.auto-sprint-keybinding.description": "Toggle auto sprint via this keybinding.",
|
"firmament.config.fixes.auto-sprint-keybinding.description": "Toggle auto sprint via this keybinding.",
|
||||||
"firmament.config.fixes.auto-sprint.description": "This is different from vanilla sprint in the way that it only marks the keybinding pressed for the first tick of walking.",
|
"firmament.config.fixes.auto-sprint.description": "This is different from vanilla sprint in the way that it only marks the keybinding pressed for the first tick of walking.",
|
||||||
|
"firmament.config.fixes.hide-mob-effects": "Hide Potion Effects",
|
||||||
|
"firmament.config.fixes.hide-mob-effects.description": "Hide Potion effects on the right side of your player inventory.",
|
||||||
"firmament.config.fixes.peek-chat": "Peek Chat",
|
"firmament.config.fixes.peek-chat": "Peek Chat",
|
||||||
"firmament.config.fixes.peek-chat.description": "Hold this keybinding to view the chat as if you have it opened, but while still being able to control your character.",
|
"firmament.config.fixes.peek-chat.description": "Hold this keybinding to view the chat as if you have it opened, but while still being able to control your character.",
|
||||||
"firmament.config.fixes.player-skins": "Fix unsigned Player Skins",
|
"firmament.config.fixes.player-skins": "Fix unsigned Player Skins",
|
||||||
|
|||||||
Reference in New Issue
Block a user