diff options
| author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-04 00:48:44 +0300 |
|---|---|---|
| committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-08 04:13:47 +0300 |
| commit | c170b563895d1aa97b0d9f18aebb685ba02ad9a6 (patch) | |
| tree | ba74d20987e4d209456a7e5b41d3ba73e68dc68a /src/main/java/de/hysky/skyblocker/mixins | |
| parent | d5a5fc05b8d7f73c16b069d45396e55e4d0b3efa (diff) | |
| download | Skyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.tar.gz Skyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.tar.bz2 Skyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.zip | |
Add text position for slot text
Will be configurable later on
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixins')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java index 8533ddfa..1758026a 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java @@ -14,6 +14,7 @@ import de.hysky.skyblocker.skyblock.garden.VisitorHelper; import de.hysky.skyblocker.skyblock.item.ItemProtection; import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds; import de.hysky.skyblocker.skyblock.item.WikiLookup; +import de.hysky.skyblocker.skyblock.item.slottext.PositionedText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager; import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview; import de.hysky.skyblocker.skyblock.item.tooltip.CompactorDeletorPreview; @@ -314,16 +315,31 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen @Inject(method = "drawSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V")) private void skyblocker$drawSlotText(DrawContext context, Slot slot, CallbackInfo ci) { - Text text = SlotTextManager.getText(slot); - if (text == null) return; + List<PositionedText> textList = SlotTextManager.getText(slot); + if (textList.isEmpty()) return; MatrixStack matrices = context.getMatrices(); - matrices.push(); - matrices.translate(0.0f, 0.0f, 200.0f); - int length = textRenderer.getWidth(text); - if (length > 16) { - matrices.scale(16.0f / length, 16.0f / length, 1.0f); //Make them fit in the slot. FYI, a slot is sized 16x16. + + for (PositionedText positionedText : textList) { + matrices.push(); + matrices.translate(0.0f, 0.0f, 200.0f); + int length = textRenderer.getWidth(positionedText.text()); + if (length > 16) { + matrices.scale(16.0f / length, 16.0f / length, 1.0f); //Make them fit in the slot. FYI, a slot is sized 16×16. + final float x = (slot.x * length / 16.0f) - slot.x; //Save in a variable to not recalculate + switch (positionedText.position()) { + case TOP_LEFT, TOP_RIGHT -> matrices.translate(x, (slot.y * length / 16.0f) - slot.y, 0.0f); + case BOTTOM_LEFT, BOTTOM_RIGHT -> matrices.translate(x, ((slot.y + 16f - textRenderer.fontHeight + 1.5f + 1f) * length / 16.0f) - slot.y, 0.0f); + } + } else { + switch (positionedText.position()) { + case TOP_LEFT -> { /*Do Nothing*/ } + case TOP_RIGHT -> matrices.translate(16f - length, 0.0f, 0.0f); + case BOTTOM_LEFT -> matrices.translate(0.0f, 16f - textRenderer.fontHeight + 1.5f, 0.0f); + case BOTTOM_RIGHT -> matrices.translate(16f - length, 16f - textRenderer.fontHeight + 1.5f, 0.0f); + } + } + context.drawText(textRenderer, positionedText.text(), slot.x, slot.y, 0xFFFFFF, true); + matrices.pop(); } - context.drawText(textRenderer, text, length > 16 ? (int) (slot.x * length / 16f) : slot.x, length > 16 ? (int) ((slot.y + 9) * length / 16f) + 1 : slot.y + 9, 0xFFFFFF, true); - matrices.pop(); } } |
