From 090ca5448bead234b2fe3edeb9dc82f9da22a582 Mon Sep 17 00:00:00 2001 From: Aso <53526710+AsoDesu@users.noreply.github.com> Date: Tue, 19 Dec 2023 19:55:54 +0000 Subject: [PATCH] feat: add highlights to remnant items --- .../crafting/RemnantHighlightMixin.java | 41 +++++++++++++++++++ src/main/resources/islandutils.mixins.json | 1 + 2 files changed, 42 insertions(+) create mode 100644 src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java diff --git a/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java b/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java new file mode 100644 index 0000000..4f25add --- /dev/null +++ b/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java @@ -0,0 +1,41 @@ +package net.asodev.islandutils.mixins.crafting; + +import net.asodev.islandutils.state.MccIslandState; +import net.asodev.islandutils.util.Utils; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.network.chat.Component; +import net.minecraft.util.FastColor; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(AbstractContainerScreen.class) +public class RemnantHighlightMixin { + + @Inject(method = "renderSlot", at = @At("HEAD")) + private void renderSlot(GuiGraphics guiGraphics, Slot slot, CallbackInfo ci) { + if (!MccIslandState.isOnline()) return; + if (!slot.hasItem()) return; + + List lore = Utils.getLores(slot.getItem()); + if (lore == null) return; + boolean isRemnant = lore.stream().anyMatch(c -> c.getString().contains("This item is the remnant of an item")); + if (!isRemnant) return; + + int x = slot.x; + int y = slot.y; + int color = FastColor.ARGB32.color(255, 141, 65, 100); + guiGraphics.pose().pushPose(); + guiGraphics.pose().translate(0.0f, 0.0f, 105.0f); + guiGraphics.fill(RenderType.gui(), x, y, x + 16, y + 16, 0, color); + guiGraphics.pose().popPose(); + } + +} diff --git a/src/main/resources/islandutils.mixins.json b/src/main/resources/islandutils.mixins.json index 2c484d3..f364b8b 100644 --- a/src/main/resources/islandutils.mixins.json +++ b/src/main/resources/islandutils.mixins.json @@ -25,6 +25,7 @@ "accessors.SoundManagerAccessor", "cosmetics.UIMixin", "crafting.CraftingPacketMixin", + "crafting.RemnantHighlightMixin", "crafting.ScavengingScreenMixin", "discord.JoinMCCIMixin", "network.PacketListenerMixin",