diff --git a/src/main/java/com/gtnewhorizons/angelica/event/RenderHandEvent.java b/src/main/java/com/gtnewhorizons/angelica/event/RenderHandEvent.java
new file mode 100644
index 000000000..9b10c73d4
--- /dev/null
+++ b/src/main/java/com/gtnewhorizons/angelica/event/RenderHandEvent.java
@@ -0,0 +1,25 @@
+package com.gtnewhorizons.angelica.event;
+
+import net.minecraftforge.eventbus.api.bus.CancellableEventBus;
+import net.minecraftforge.eventbus.api.event.RecordEvent;
+import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
+
+/**
+ * Posted from {@link net.coderbot.iris.pipeline.HandRenderer}'s {@code canRender}
+ *
+ * Cancel the event to prevent the hand from rendering.
+ */
+public record RenderHandEvent() implements RecordEvent, Cancellable {
+
+ public static final CancellableEventBus BUS = CancellableEventBus.create(RenderHandEvent.class);
+
+ private static final RenderHandEvent INSTANCE = new RenderHandEvent();
+
+ /**
+ * @return true if a listener cancelled the event, meaning the hand should NOT render.
+ */
+ public static boolean post() {
+ if (!BUS.hasListeners()) return false;
+ return BUS.post(INSTANCE);
+ }
+}
diff --git a/src/main/java/net/coderbot/iris/pipeline/HandRenderer.java b/src/main/java/net/coderbot/iris/pipeline/HandRenderer.java
index d694bbd1e..e20469d85 100644
--- a/src/main/java/net/coderbot/iris/pipeline/HandRenderer.java
+++ b/src/main/java/net/coderbot/iris/pipeline/HandRenderer.java
@@ -3,6 +3,7 @@ package net.coderbot.iris.pipeline;
import com.gtnewhorizons.angelica.compat.mojang.Camera;
import com.gtnewhorizons.angelica.compat.mojang.GameModeUtil;
import com.gtnewhorizons.angelica.compat.mojang.InteractionHand;
+import com.gtnewhorizons.angelica.event.RenderHandEvent;
import com.gtnewhorizons.angelica.glsm.GLStateManager;
import com.gtnewhorizons.angelica.rendering.RenderingState;
import com.gtnewhorizons.angelica.rendering.celeritas.BlockRenderLayer;
@@ -78,7 +79,8 @@ public class HandRenderer {
!camera.isSleeping() &&
!mc.gameSettings.hideGUI &&
!GameModeUtil.isSpectator() &&
- !mc.playerController.enableEverythingIsScrewedUpMode();
+ !mc.playerController.enableEverythingIsScrewedUpMode() &&
+ !RenderHandEvent.post();
}
public boolean isHandTranslucent(InteractionHand hand) {