diff options
author | victo <victor.branchu@gmail.com> | 2023-09-13 20:16:32 +0200 |
---|---|---|
committer | victo <victor.branchu@gmail.com> | 2023-09-13 20:16:32 +0200 |
commit | a7ba4feaaacc95b505b75ec78a169fed66aead93 (patch) | |
tree | 9cd1eeae9d5b2b2684be11e07f544ea9fa44a317 /src/main/java/me/xmrvizzy/skyblocker/skyblock | |
parent | 99c6a8a6f1f09feee4a8fb1cae5af40ec0217c7e (diff) | |
download | Skyblocker-a7ba4feaaacc95b505b75ec78a169fed66aead93.tar.gz Skyblocker-a7ba4feaaacc95b505b75ec78a169fed66aead93.tar.bz2 Skyblocker-a7ba4feaaacc95b505b75ec78a169fed66aead93.zip |
Add tooltip display for personal compactor items
This update integrates a tooltip display for personal compactor items in the Skyblocker mod. The tooltip shows the contents of the personal compactor when hovered over. This is useful for players to quickly check the contents of their compactor without needing to open it. The commit includes creating a new Java file 'CompactorPreviewTooltipComponent.java' for the compactor tooltip component, adding new inject method 'skyblocker$addTooltipComponent' in 'HandledScreenMixin.java' executed when drawing mouseover tooltip, adding 'DrawContextInvoker.java' for invoking the 'drawTooltip' method in the 'DrawContext' class, and adding 'getItemStack' method in the 'ItemRegistry.java'.
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CompactorPreviewTooltipComponent.java | 60 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java | 4 |
2 files changed, 64 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CompactorPreviewTooltipComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CompactorPreviewTooltipComponent.java new file mode 100644 index 00000000..e916a94b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CompactorPreviewTooltipComponent.java @@ -0,0 +1,60 @@ +package me.xmrvizzy.skyblocker.skyblock.item; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.tooltip.TooltipComponent; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; + +import java.util.Map; + +public class CompactorPreviewTooltipComponent implements TooltipComponent { + + private static final Identifier INVENTORY_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/inventory_background.png"); + + Map<Integer, ItemStack> items; + int[] dimensions; + + public CompactorPreviewTooltipComponent(Map<Integer, ItemStack> items, int[] dimensions) { + this.items = items; + this.dimensions = dimensions; + } + @Override + public int getHeight() { + return dimensions[0] * 18 + 14; + } + + @Override + public int getWidth(TextRenderer textRenderer) { + return dimensions[1] * 18 + 14; + } + + @Override + public void drawItems(TextRenderer textRenderer, int x, int y, DrawContext context) { + context.drawTexture(INVENTORY_TEXTURE, x, y, 0, 0, 7 + dimensions[1] * 18, 7); + context.drawTexture(INVENTORY_TEXTURE, x + 7 + dimensions[1] * 18, y, 169, 0, 7, 7); + + for (int i = 0; i < dimensions[0]; i++) { + context.drawTexture(INVENTORY_TEXTURE, x, y + 7 + i * 18, 0, 7, 7, 18); + for (int j = 0; j < dimensions[1]; j++) { + context.drawTexture(INVENTORY_TEXTURE, x + 7 + j * 18, y + 7 + i * 18, 7, 7, 18, 18); + } + context.drawTexture(INVENTORY_TEXTURE, x + 7 + dimensions[1] * 18, y + 7 + i * 18, 169, 7, 7, 18); + } + context.drawTexture(INVENTORY_TEXTURE, x, y + 7 + dimensions[0] * 18, 0, 25, 7 + dimensions[1] * 18, 7); + context.drawTexture(INVENTORY_TEXTURE, x + 7 + dimensions[1] * 18, y + 7 + dimensions[0] * 18, 169, 25, 7, 7); + + MatrixStack matrices = context.getMatrices(); + for (Integer i : items.keySet()) { + int itemX = x + i % dimensions[1] * 18 + 8; + int itemY = y + i / dimensions[1] * 18 + 8; + matrices.push(); + matrices.translate(0, 0, 200); + context.drawItem(items.get(i), itemX, itemY); + context.drawItemInSlot(textRenderer, items.get(i), itemX, itemY); + matrices.pop(); + } + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java index a4b566e8..426e807b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -124,5 +124,9 @@ public class ItemRegistry { if (itemStack.getNbt() == null) return ""; return itemStack.getNbt().getCompound("ExtraAttributes").getString("id"); } + + public static ItemStack getItemStack(String internalName) { + return itemsMap.get(internalName); + } } |