aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/firmament/mixins
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-11-17 19:55:02 +0100
committerLinnea Gräf <nea@nea.moe>2025-11-17 19:55:02 +0100
commitc93a04a001b0f66b2724d46b04b6d1ed49a08d07 (patch)
tree5869ca70acc482ef0362f27785c3d3f1cbb9ffae /src/main/java/moe/nea/firmament/mixins
parentaf9893b59407c69d31ebd2ed513f0396ab4d2dc9 (diff)
downloadFirmament-c93a04a001b0f66b2724d46b04b6d1ed49a08d07.tar.gz
Firmament-c93a04a001b0f66b2724d46b04b6d1ed49a08d07.tar.bz2
Firmament-c93a04a001b0f66b2724d46b04b6d1ed49a08d07.zip
refactor: port to mojmaps
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins')
-rw-r--r--src/main/java/moe/nea/firmament/mixins/AppendRepoAsResourcePack.java4
-rw-r--r--src/main/java/moe/nea/firmament/mixins/BandAidResourcePackPatch.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/ChatPeekingPatch.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/CopyChatPatch.java32
-rw-r--r--src/main/java/moe/nea/firmament/mixins/CustomDurabilityBarPatch.java30
-rw-r--r--src/main/java/moe/nea/firmament/mixins/DFUEntityIdFixPatch.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/DisableHurtCam.java4
-rw-r--r--src/main/java/moe/nea/firmament/mixins/DispatchMouseInputEventsPatch.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/EarlyResourceReloadPatch.java14
-rw-r--r--src/main/java/moe/nea/firmament/mixins/EntityDespawnPatch.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/EntityInteractEventPatch.java28
-rw-r--r--src/main/java/moe/nea/firmament/mixins/EntityUpdateEventListener.java48
-rw-r--r--src/main/java/moe/nea/firmament/mixins/FirmKeybindsInVanillaControlsPatch.java32
-rw-r--r--src/main/java/moe/nea/firmament/mixins/HideStatusEffectsPatch.java14
-rw-r--r--src/main/java/moe/nea/firmament/mixins/HudRenderEventsPatch.java20
-rw-r--r--src/main/java/moe/nea/firmament/mixins/IncomingPacketListenerPatches.java24
-rw-r--r--src/main/java/moe/nea/firmament/mixins/KeyPressInWorldEventPatch.java12
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MainWindowFirstLoadPatch.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MaintainKeyboardStatePatch.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MinecraftInitLevelListener.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MixinHandledScreen.java72
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MixinPlayerScreenHandler.java14
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MixinRecipeBookScreen.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MousePressInWorldEventPatch.java12
-rw-r--r--src/main/java/moe/nea/firmament/mixins/OutgoingPacketEventPatch.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/PlayerDropEventPatch.java16
-rw-r--r--src/main/java/moe/nea/firmament/mixins/ResourceReloaderRegistrationPatch.java14
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java24
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SaveOriginalCommandTreePacket.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/ScreenChangeEventPatch.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SlotClickEventPatch.java22
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SlotUpdateListener.java48
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SoundReceiveEventPatch.java22
-rw-r--r--src/main/java/moe/nea/firmament/mixins/ToggleSprintPatch.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/TolerateFirmamentTolerateRegistryOwners.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/WorldReadyEventPatch.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/WorldRenderLastEventPatch.java41
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorAbstractClientPlayerEntity.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorChatHud.java18
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorHandledScreen.java26
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorNbtComponent.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorPlayerListHud.java20
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorScreenHandler.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/AccessorWorldRenderer.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/customgui/OriginalSlotCoords.java2
-rw-r--r--src/main/java/moe/nea/firmament/mixins/customgui/PatchHandledScreen.java90
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/DisableCommonPacketWarnings.java20
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/DisableInvalidFishingHook.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/EarlyInstantiateTranslations.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/IdentifyCloser.java2
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/IdentifyStopperPatch.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/MixinKeyboard.java10
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/MixinScoreboard.java5
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/WarnForUnknownCustomPayloadSends.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/devenv/WarnOnMissingTranslations.java14
-rw-r--r--src/main/java/moe/nea/firmament/mixins/feature/DisableSlotHighlights.java12
-rw-r--r--src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeFeatureRenderer.java40
-rw-r--r--src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeStorage.java4
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/IncreaseStackLimitSizeInDrawContext.java6
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/ChangeColorOfLivingEntities.java30
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/EntityRenderStateTint.java2
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/InjectIntoRenderState.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/ReplaceOverlayTexture.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/UseOverlayableEquipmentRenderer.java26
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/UseOverlayableHeadFeatureRenderer.java16
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/UseOverlayableItemRenderer.java20
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/entitytints/UseOverlayableSkullBlockEntityRenderer.java16
-rw-r--r--src/main/java/moe/nea/firmament/mixins/render/renderer/MultipleSpecialGuiRenderStates.java24
68 files changed, 575 insertions, 579 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/AppendRepoAsResourcePack.java b/src/main/java/moe/nea/firmament/mixins/AppendRepoAsResourcePack.java
index d8e35d7..30b5020 100644
--- a/src/main/java/moe/nea/firmament/mixins/AppendRepoAsResourcePack.java
+++ b/src/main/java/moe/nea/firmament/mixins/AppendRepoAsResourcePack.java
@@ -7,7 +7,7 @@ import net.fabricmc.fabric.api.resource.ModResourcePack;
import net.fabricmc.fabric.impl.resource.loader.ModResourcePackSorter;
import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil;
import net.fabricmc.loader.api.FabricLoader;
-import net.minecraft.resource.ResourceType;
+import net.minecraft.server.packs.PackType;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@@ -25,7 +25,7 @@ public class AppendRepoAsResourcePack {
require = 0
)
private static void onAppendModResourcePack(
- FabricLoader fabricLoader, ResourceType type, @Nullable String subPath, CallbackInfoReturnable<List<ModResourcePack>> cir,
+ FabricLoader fabricLoader, PackType type, @Nullable String subPath, CallbackInfoReturnable<List<ModResourcePack>> cir,
@Local ModResourcePackSorter sorter
) {
RepoModResourcePack.Companion.append(sorter);
diff --git a/src/main/java/moe/nea/firmament/mixins/BandAidResourcePackPatch.java b/src/main/java/moe/nea/firmament/mixins/BandAidResourcePackPatch.java
index d898c44..8e591bd 100644
--- a/src/main/java/moe/nea/firmament/mixins/BandAidResourcePackPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/BandAidResourcePackPatch.java
@@ -4,22 +4,22 @@ package moe.nea.firmament.mixins;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.llamalad7.mixinextras.sugar.Local;
import moe.nea.firmament.repo.RepoModResourcePack;
-import net.minecraft.resource.ReloadableResourceManagerImpl;
-import net.minecraft.resource.Resource;
-import net.minecraft.util.Identifier;
+import net.minecraft.server.packs.resources.ReloadableResourceManager;
+import net.minecraft.server.packs.resources.Resource;
+import net.minecraft.resources.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import java.util.Optional;
-@Mixin(ReloadableResourceManagerImpl.class)
+@Mixin(ReloadableResourceManager.class)
public class BandAidResourcePackPatch {
@ModifyReturnValue(
method = "getResource",
at = @At("RETURN")
)
- private Optional<Resource> injectOurCustomResourcesInCaseExistingMethodsFailed(Optional<Resource> original, @Local Identifier identifier) {
+ private Optional<Resource> injectOurCustomResourcesInCaseExistingMethodsFailed(Optional<Resource> original, @Local ResourceLocation identifier) {
return original.or(() -> RepoModResourcePack.Companion.createResourceDirectly(identifier));
}
}
diff --git a/src/main/java/moe/nea/firmament/mixins/ChatPeekingPatch.java b/src/main/java/moe/nea/firmament/mixins/ChatPeekingPatch.java
index 9f6fb4d..2bc1374 100644
--- a/src/main/java/moe/nea/firmament/mixins/ChatPeekingPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/ChatPeekingPatch.java
@@ -4,12 +4,12 @@ package moe.nea.firmament.mixins;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import moe.nea.firmament.features.fixes.Fixes;
-import net.minecraft.client.gui.hud.ChatHud;
+import net.minecraft.client.gui.components.ChatComponent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
-@Mixin(ChatHud.class)
+@Mixin(ChatComponent.class)
public class ChatPeekingPatch {
@ModifyVariable(method = "render", at = @At(value = "HEAD"), index = 5, argsOnly = true)
@@ -17,7 +17,7 @@ public class ChatPeekingPatch {
return old || Fixes.INSTANCE.shouldPeekChat();
}
- @ModifyExpressionValue(method = "getHeight()I", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;isChatFocused()Z"))
+ @ModifyExpressionValue(method = "getHeight()I", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;isChatFocused()Z"))
public boolean onGetChatHudHeight(boolean old) {
return old || Fixes.INSTANCE.shouldPeekChat();
}
diff --git a/src/main/java/moe/nea/firmament/mixins/CopyChatPatch.java b/src/main/java/moe/nea/firmament/mixins/CopyChatPatch.java
index ba337da..9079fc9 100644
--- a/src/main/java/moe/nea/firmament/mixins/CopyChatPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/CopyChatPatch.java
@@ -3,14 +3,14 @@ package moe.nea.firmament.mixins;
import moe.nea.firmament.features.chat.CopyChat;
import moe.nea.firmament.mixins.accessor.AccessorChatHud;
import moe.nea.firmament.util.ClipboardUtils;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.Click;
-import net.minecraft.client.gui.hud.ChatHud;
-import net.minecraft.client.gui.hud.ChatHudLine;
-import net.minecraft.client.gui.screen.ChatScreen;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
-import net.minecraft.util.math.MathHelper;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.input.MouseButtonEvent;
+import net.minecraft.client.gui.components.ChatComponent;
+import net.minecraft.client.GuiMessage;
+import net.minecraft.client.gui.screens.ChatScreen;
+import net.minecraft.network.chat.Component;
+import net.minecraft.ChatFormatting;
+import net.minecraft.util.Mth;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
@@ -21,25 +21,25 @@ import java.util.List;
@Mixin(ChatScreen.class)
public class CopyChatPatch {
@Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true)
- private void onRightClick(Click click, boolean doubled, CallbackInfoReturnable<Boolean> cir) throws NoSuchFieldException, IllegalAccessException {
+ private void onRightClick(MouseButtonEvent click, boolean doubled, CallbackInfoReturnable<Boolean> cir) throws NoSuchFieldException, IllegalAccessException {
if (click.button() != 1 || !CopyChat.TConfig.INSTANCE.getCopyChat()) return;
- MinecraftClient client = MinecraftClient.getInstance();
- ChatHud chatHud = client.inGameHud.getChatHud();
+ Minecraft client = Minecraft.getInstance();
+ ChatComponent chatHud = client.gui.getChat();
int lineIndex = getChatLineIndex(chatHud, click.y());
if (lineIndex < 0) return;
- List<ChatHudLine.Visible> visible = ((AccessorChatHud) chatHud).getVisibleMessages_firmament();
+ List<GuiMessage.Line> visible = ((AccessorChatHud) chatHud).getVisibleMessages_firmament();
if (lineIndex >= visible.size()) return;
- ChatHudLine.Visible line = visible.get(lineIndex);
+ GuiMessage.Line line = visible.get(lineIndex);
String text = CopyChat.INSTANCE.orderedTextToString(line.content());
ClipboardUtils.INSTANCE.setTextContent(text);
- chatHud.addMessage(Text.literal("Copied: ").append(text).formatted(Formatting.GRAY));
+ chatHud.addMessage(Component.literal("Copied: ").append(text).withStyle(ChatFormatting.GRAY));
cir.setReturnValue(true);
cir.cancel();
}
@Unique
- private int getChatLineIndex(ChatHud chatHud, double mouseY) {
+ private int getChatLineIndex(ChatComponent chatHud, double mouseY) {
double chatLineY = ((AccessorChatHud) chatHud).toChatLineY_firmament(mouseY);
- return MathHelper.floor(chatLineY + ((AccessorChatHud) chatHud).getScrolledLines_firmament());
+ return Mth.floor(chatLineY + ((AccessorChatHud) chatHud).getScrolledLines_firmament());
}
}
diff --git a/src/main/java/moe/nea/firmament/mixins/CustomDurabilityBarPatch.java b/src/main/java/moe/nea/firmament/mixins/CustomDurabilityBarPatch.java
index fde3580..2299068 100644
--- a/src/main/java/moe/nea/firmament/mixins/CustomDurabilityBarPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/CustomDurabilityBarPatch.java
@@ -6,20 +6,20 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Share;
import com.llamalad7.mixinextras.sugar.ref.LocalRef;
import moe.nea.firmament.util.DurabilityBarEvent;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.item.ItemStack;
+import net.minecraft.client.gui.GuiGraphics;
+import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
-@Mixin(DrawContext.class)
+@Mixin(GuiGraphics.class)
public class CustomDurabilityBarPatch {
@WrapOperation(
- method = "drawItemBar",
- at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isItemBarVisible()Z")
+ method = "renderItemBar",
+ at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isBarVisible()Z")
)
private boolean onIsItemBarVisible(
- ItemStack instance, Operation<Boolean> original,
- @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
+ ItemStack instance, Operation<Boolean> original,
+ @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
) {
if (original.call(instance))
return true;
@@ -29,22 +29,22 @@ public class CustomDurabilityBarPatch {
return barOverride.get() != null;
}
- @WrapOperation(method = "drawItemBar",
- at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getItemBarStep()I"))
+ @WrapOperation(method = "renderItemBar",
+ at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getBarWidth()I"))
private int overrideItemStep(
- ItemStack instance, Operation<Integer> original,
- @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
+ ItemStack instance, Operation<Integer> original,
+ @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
) {
if (barOverride.get() != null)
return Math.round(barOverride.get().getPercentage() * 13);
return original.call(instance);
}
- @WrapOperation(method = "drawItemBar",
- at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getItemBarColor()I"))
+ @WrapOperation(method = "renderItemBar",
+ at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getBarColor()I"))
private int overrideItemColor(
- ItemStack instance, Operation<Integer> original,
- @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
+ ItemStack instance, Operation<Integer> original,
+ @Share("barOverride") LocalRef<DurabilityBarEvent.DurabilityBar> barOverride
) {
if (barOverride.get() != null)
return barOverride.get().getColor().getColor();
diff --git a/src/main/java/moe/nea/firmament/mixins/DFUEntityIdFixPatch.java b/src/main/java/moe/nea/firmament/mixins/DFUEntityIdFixPatch.java
index 717d404..8503411 100644
--- a/src/main/java/moe/nea/firmament/mixins/DFUEntityIdFixPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/DFUEntityIdFixPatch.java
@@ -6,8 +6,8 @@ import com.mojang.datafixers.DataFix;
import com.mojang.datafixers.TypeRewriteRule;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.datafixers.util.Pair;
-import net.minecraft.datafixer.TypeReferences;
-import net.minecraft.datafixer.fix.EntityIdFix;
+import net.minecraft.util.datafix.fixes.References;
+import net.minecraft.util.datafix.fixes.EntityIdFix;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -22,7 +22,7 @@ import java.util.Map;
public abstract class DFUEntityIdFixPatch extends DataFix {
@Shadow
@Final
- private static Map<String, String> RENAMED_ENTITIES;
+ private static Map<String, String> ID_MAP;
public DFUEntityIdFixPatch(Schema outputSchema, boolean changesType) {
super(outputSchema, changesType);
@@ -30,6 +30,6 @@ public abstract class DFUEntityIdFixPatch extends DataFix {
@Inject(method = "makeRule", at = @At("RETURN"), cancellable = true)
public void onMakeRule(CallbackInfoReturnable<TypeRewriteRule> cir) {
- cir.setReturnValue(TypeRewriteRule.seq(fixTypeEverywhere("EntityIdFix", getInputSchema().findChoiceType(TypeReferences.ENTITY), getOutputSchema().findChoiceType(TypeReferences.ENTITY), dynamicOps -> pair -> ((Pair) pair).mapFirst(string -> RENAMED_ENTITIES.getOrDefault(string, (String) string))), convertUnchecked("Fix Type", getInputSchema().getType(TypeReferences.ITEM_STACK), getOutputSchema().getType(TypeReferences.ITEM_STACK))));
+ cir.setReturnValue(TypeRewriteRule.seq(fixTypeEverywhere("EntityIdFix", getInputSchema().findChoiceType(References.ENTITY), getOutputSchema().findChoiceType(References.ENTITY), dynamicOps -> pair -> ((Pair) pair).mapFirst(string -> ID_MAP.getOrDefault(string, (String) string))), convertUnchecked("Fix Type", getInputSchema().getType(References.ITEM_STACK), getOutputSchema().getType(References.ITEM_STACK))));
}
}
diff --git a/src/main/java/moe/nea/firmament/mixins/DisableHurtCam.java b/src/main/java/moe/nea/firmament/mixins/DisableHurtCam.java
index ed7a2d4..3a53ab1 100644
--- a/src/main/java/moe/nea/firmament/mixins/DisableHurtCam.java
+++ b/src/main/java/moe/nea/firmament/mixins/DisableHurtCam.java
@@ -2,14 +2,14 @@ package moe.nea.firmament.mixins;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import moe.nea.firmament.features.fixes.Fixes;
-import net.minecraft.client.render.GameRenderer;
+import net.minecraft.client.renderer.GameRenderer;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(GameRenderer.class)
public class DisableHurtCam {
- @ModifyExpressionValue(method = "tiltViewWhenHurt", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/LivingEntity;hurtTime:I", opcode = Opcodes.GETFIELD))
+ @ModifyExpressionValue(method = "bobHurt", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/LivingEntity;hurtTime:I", opcode = Opcodes.GETFIELD))
private int replaceHurtTime(int original) {
if (Fixes.TConfig.INSTANCE.getNoHurtCam())
return 0;
diff --git a/src/main/java/moe/nea/firmament/mixins/DispatchMouseInputEventsPatch.java b/src/main/java/moe/nea/firmam