feat(hand): add cancellable RenderHandEvent for canRender (#1806)

This commit is contained in:
Caedis authored and GitHub committed 2026-06-01 20:38:27 +00:00
1 parent 3da597ab18
commit eef3d2f50a
2 files changed
+28 -1

No files matched your search

@@ -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}
* <p>
* Cancel the event to prevent the hand from rendering.
*/
public record RenderHandEvent() implements RecordEvent, Cancellable {
public static final CancellableEventBus<RenderHandEvent> 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);
}
}
@@ -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) {