diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-08-31 22:53:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-31 22:53:27 -0400 |
commit | 5d34c99a38af9011559260bb1e211468c41edbc6 (patch) | |
tree | 11c33aeebb1c42d6df41e3151321818348041da3 /src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java | |
parent | 1370097922f19815e14bdfd8c9e606cde2bc8f39 (diff) | |
download | Skyblocker-5d34c99a38af9011559260bb1e211468c41edbc6.tar.gz Skyblocker-5d34c99a38af9011559260bb1e211468c41edbc6.tar.bz2 Skyblocker-5d34c99a38af9011559260bb1e211468c41edbc6.zip |
Attribute Shard Info Display (#263)
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java index 6c059741..0a1084cf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java @@ -1,12 +1,16 @@ package me.xmrvizzy.skyblocker.mixin; +import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; import com.mojang.blaze3d.systems.RenderSystem; import dev.cbyrne.betterinject.annotations.Arg; import dev.cbyrne.betterinject.annotations.Inject; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.item.AttributeShards; import me.xmrvizzy.skyblocker.utils.ItemUtils; import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.util.math.MatrixStack; @@ -14,6 +18,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.util.Formatting; import net.minecraft.util.math.ColorHelper; + +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -30,6 +36,9 @@ public abstract class DrawContextMixin { @Shadow public abstract void fill(RenderLayer layer, int x1, int x2, int y1, int y2, int color); + + @Shadow + public abstract int drawText(TextRenderer textRenderer, @Nullable String text, int x, int y, int color, boolean shadow); @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) public void skyblocker$renderItemBar(@Arg ItemStack stack, @Arg(ordinal = 0) int x, @Arg(ordinal = 1) int y) { @@ -87,4 +96,38 @@ public abstract class DrawContextMixin { matrices.pop(); RenderSystem.enableDepthTest(); } + + @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) + private void skyblocker$renderAttributeShardDisplay(@Arg TextRenderer textRenderer, @Arg ItemStack stack, @Arg(ordinal = 0) int x, @Arg(ordinal = 1) int y, @Local(argsOnly = true) LocalRef<String> countOverride) { + if (!SkyblockerConfig.get().general.itemInfoDisplay.attributeShardInfo) return; + + NbtCompound nbt = stack.getNbt(); + + if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) { + NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); + + if (extraAttributes.getString("id").equals("ATTRIBUTE_SHARD")) { + NbtCompound attributesTag = extraAttributes.getCompound("attributes"); + String[] attributes = attributesTag.getKeys().toArray(String[]::new); + + if (attributes.length != 0) { + String attributeId = attributes[0]; + int attributeLevel = attributesTag.getInt(attributeId); + + //Set item count + countOverride.set(Integer.toString(attributeLevel)); + + //Draw the attribute name + this.matrices.push(); + this.matrices.translate(0f, 0f, 200f); + + String attributeInitials = AttributeShards.getShortName(attributeId); + + this.drawText(textRenderer, attributeInitials, x, y, Formatting.AQUA.getColorValue(), true); + + this.matrices.pop(); + } + } + } + } }
\ No newline at end of file |