diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/io/github/cottonmc/cotton/gui/widget/icon/ItemIcon.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/ItemIcon.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/ItemIcon.java index 9da86ee..e6beeed 100644 --- a/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/ItemIcon.java +++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/ItemIcon.java @@ -3,6 +3,7 @@ package io.github.cottonmc.cotton.gui.widget.icon; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,7 +16,11 @@ import java.util.Objects; * @since 2.2.0 */ public class ItemIcon implements Icon { + // Matches the vanilla RecipeBookGhostSlots class (1.20.2). + private static final int GHOST_OVERLAY_COLOR = 0x30_FFFFFF; + private final ItemStack stack; + private boolean ghost = false; /** * Constructs an item icon. @@ -47,6 +52,34 @@ public class ItemIcon implements Icon { matrices.translate(x, y, 0); matrices.scale(scale, scale, 1); context.drawItemWithoutEntity(stack, 0, 0); + + if (isGhost()) { + context.fill(RenderLayer.getGuiGhostRecipeOverlay(), 0, 0, 16, 16, GHOST_OVERLAY_COLOR); + } + matrices.pop(); } + + /** + * Checks whether this icon is a ghost item. + * Ghost items are rendered with a pale overlay. + * + * @return {@code true} if this icon is a ghost item, {@code false} otherwise + * @since 9.2.0 + */ + public boolean isGhost() { + return ghost; + } + + /** + * Marks this icon as a ghost or non-ghost icon. + * + * @param ghost {@code true} if this icon is a ghost item, {@code false} otherwise + * @return this icon + * @since 9.2.0 + */ + public ItemIcon setGhost(boolean ghost) { + this.ghost = ghost; + return this; + } } |