From 027d85309ef9835d2fa14f4f3172d40b23a6e448 Mon Sep 17 00:00:00 2001
From: Leclowndu93150 <xdr.a123454321@gmail.com>
Date: Sat, 20 Jul 2024 17:35:47 +0200
Subject: [PATCH] Handle Visible/Invisible slots

---
 gradle.properties                                     |  2 +-
 .../modular_angelring/render/AngelRingCheck.java      | 11 +++++++++++
 .../modular_angelring/render/AngelRingRenderer.java   |  3 ++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gradle.properties b/gradle.properties
index efb4b1a..357fd84 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -31,7 +31,7 @@ mod_name=Modular Angel Ring
 
 mod_license=All Rights Reserved
 
-mod_version=1.0.6
+mod_version=1.2.0
 
 mod_group_id=com.leclowndu93150.modular_angelring
 
diff --git a/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingCheck.java b/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingCheck.java
index 05bb571..15e744d 100644
--- a/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingCheck.java
+++ b/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingCheck.java
@@ -3,6 +3,9 @@
 import com.leclowndu93150.modular_angelring.registry.ItemRegistry;
 import net.minecraft.client.player.AbstractClientPlayer;
 import top.theillusivec4.curios.api.CuriosApi;
+import top.theillusivec4.curios.api.SlotResult;
+
+import java.util.Optional;
 
 public class AngelRingCheck {
     public static boolean isBaseEquipped(AbstractClientPlayer playerEntity) {
@@ -12,4 +15,12 @@ public static boolean isBaseEquipped(AbstractClientPlayer playerEntity) {
     public static boolean isEquipped(AbstractClientPlayer playerEntity) {
         return isBaseEquipped(playerEntity);
     }
+
+    public static boolean isVisible(AbstractClientPlayer playerEntity) {
+        if (isEquipped(playerEntity)) {
+            Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(playerEntity).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
+            return slotResult.get().slotContext().visible();
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingRenderer.java b/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingRenderer.java
index b1c507d..adffe6a 100644
--- a/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingRenderer.java
+++ b/src/main/java/com/leclowndu93150/modular_angelring/render/AngelRingRenderer.java
@@ -16,6 +16,7 @@
 import org.joml.Quaternionf;
 
 import static com.leclowndu93150.modular_angelring.render.AngelRingCheck.isEquipped;
+import static com.leclowndu93150.modular_angelring.render.AngelRingCheck.isVisible;
 
 public class AngelRingRenderer extends RenderLayer<AbstractClientPlayer, PlayerModel<AbstractClientPlayer>> {
     protected static final double FLAP_FREQUENCY = 0.5; // flaps per second
@@ -33,7 +34,7 @@ public AngelRingRenderer(RenderLayerParent<AbstractClientPlayer, PlayerModel<Abs
     @Override
     public void render(@NotNull PoseStack matrixStack, @NotNull MultiBufferSource buffer, int packedLight, @NotNull AbstractClientPlayer player, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) {
         assert Minecraft.getInstance().player != null;
-        if (!player.isInvisible() && isEquipped(player)) {
+        if (!player.isInvisible() && isEquipped(player) && isVisible(player)) {
             matrixStack.pushPose();
             getParentModel().body.translateAndRotate(matrixStack);