aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/mixins
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-04 00:48:44 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-06-08 04:13:47 +0300
commitc170b563895d1aa97b0d9f18aebb685ba02ad9a6 (patch)
treeba74d20987e4d209456a7e5b41d3ba73e68dc68a /src/main/java/de/hysky/skyblocker/mixins
parentd5a5fc05b8d7f73c16b069d45396e55e4d0b3efa (diff)
downloadSkyblocker-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.java34
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();
}
}