From 85360639a1a1dcf341b09f1641fea9241f24089d Mon Sep 17 00:00:00 2001 From: wuritz Date: Sun, 22 Jun 2025 11:17:31 +0200 Subject: [PATCH] fasz genyo fasz --- .../com/genyo/addon/hud/PvPNeccessaryHud.java | 87 +++++++++---------- .../java/com/genyo/addon/utils/HudUtils.java | 15 +--- .../com/genyo/addon/utils/InventoryUtils.java | 44 ++++++++++ src/main/resources/fabric.mod.json | 4 +- 4 files changed, 92 insertions(+), 58 deletions(-) create mode 100644 src/main/java/com/genyo/addon/utils/InventoryUtils.java diff --git a/src/main/java/com/genyo/addon/hud/PvPNeccessaryHud.java b/src/main/java/com/genyo/addon/hud/PvPNeccessaryHud.java index b4104a1..3436596 100644 --- a/src/main/java/com/genyo/addon/hud/PvPNeccessaryHud.java +++ b/src/main/java/com/genyo/addon/hud/PvPNeccessaryHud.java @@ -2,6 +2,7 @@ import com.genyo.addon.GenyoAddon; import com.genyo.addon.utils.HudUtils; +import com.genyo.addon.utils.InventoryUtils; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.hud.HudElement; import meteordevelopment.meteorclient.systems.hud.HudElementInfo; @@ -32,10 +33,10 @@ public class PvPNeccessaryHud extends HudElement { .build() ); - private final Setting noneMode = sgGeneral.add(new EnumSetting.Builder() - .name("none-mode") - .description("How to render the item when you don't have the specified item in your inventory.") - .defaultValue(NoneMode.ShowCount) + private final Setting textColor = sgGeneral.add(new ColorSetting.Builder() + .name("text-color") + .description("Brasil") + .defaultValue(new SettingColor(255, 255, 255, 255)) .build() ); @@ -95,7 +96,7 @@ private PvPNeccessaryHud() { private void calculateSize() { int offset = items.get().size(); - setSize(21 * getScale() * offset, 17 * getScale() + 20); + setSize(23 * getScale() * offset, 17 * getScale() + 20); } @Override @@ -103,52 +104,63 @@ public void render(HudRenderer renderer) { calculateSize(); int itemsLength = items.get().size(); - if (noneMode.get() == NoneMode.HideItem) { - if (isInEditor()) { - renderer.line(x, y, x + getWidth(), y + getHeight(), Color.GRAY); - renderer.line(x, y + getHeight(), x + getWidth(), y, Color.GRAY); - } - } else { - for (int i = 0; i < itemsLength; i++) { - Item item = items.get().get(i); - ItemStack itemStack = new ItemStack(item, InvUtils.find(item).count()); + for (int i = 0; i < itemsLength; i++) { + Item item = items.get().get(i); + + ItemStack itemStack = new ItemStack(item, InventoryUtils.find(item).count()); + + int scaleOffset = (int) (getScale() * 10); + int intScale = (int) (getScale()); + int offset = i+1 != 1 ? i * 50 * scaleOffset / (20 - margin.get()) : 0; - int scaleOffset = (int) (getScale() * 10); - int offset = i+1 != 1 ? i * 50 * scaleOffset / (20 - margin.get()) : 0; + int textXOffset = 6 * intScale; + int textYOffset = 17 * intScale; - renderer.post(() -> render(renderer, itemStack, x + offset, y)); - //((HudRendererAccessor) renderer).getHudRenderer().post(() -> render(renderer, itemStack, x + offset, y)); + if (itemStack.getCount() > 100) { + textXOffset -= 6 * intScale; + } else if (itemStack.getCount() > 10) { + textXOffset -= 2 * intScale; } + + int finalTextXOffset = textXOffset; + renderer.post(() -> { + render(renderer, itemStack, x + offset, y); + renderText(renderer, itemStack, x + offset + finalTextXOffset, y + textYOffset); + }); } if (background.get()) renderer.quad(x, y, getWidth(), getHeight(), backgroundColor.get()); } private void render(HudRenderer renderer, ItemStack itemStack, int x, int y) { - if (noneMode.get() == NoneMode.HideItem) { - renderer.item(itemStack, x, y, getScale(), true); - return; + boolean resetToZero = false; + + if (itemStack.isEmpty()) { + itemStack.setCount(1); + resetToZero = true; } - String countOverride = null; - boolean resetToZero = false; + HudUtils.drawItem(renderer.drawContext, itemStack, x, y, getScale()); - countOverride = String.valueOf(itemStack.getCount()); + if (resetToZero) + itemStack.setCount(0); + } + + private void renderText(HudRenderer renderer, ItemStack itemStack, int x, int y) { + String count = String.valueOf(itemStack.getCount()); if (itemStack.getCount() == 1) { - countOverride = "1"; + count = "1"; } - if (itemStack.isEmpty()) { - if (noneMode.get() == NoneMode.ShowCount) - countOverride = "0"; + boolean resetToZero = false; + if (itemStack.isEmpty()) { itemStack.setCount(1); resetToZero = true; } - //renderer.item(itemStack, x, y, getScale(), true, countOverride); - HudUtils.drawItem(renderer.drawContext, itemStack, x, y, getScale(), countOverride); + renderer.text(count, x, y, textColor.get(), true, getScale() / 2); if (resetToZero) itemStack.setCount(0); @@ -158,19 +170,4 @@ private float getScale() { return customScale.get() ? scale.get().floatValue() : scale.getDefaultValue().floatValue(); } - public enum NoneMode { - HideItem, - HideCount, - ShowCount; - - @Override - public String toString() { - return switch (this) { - case HideItem -> "Hide Item"; - case HideCount -> "Hide Count"; - case ShowCount -> "Show Count"; - }; - } - } - } diff --git a/src/main/java/com/genyo/addon/utils/HudUtils.java b/src/main/java/com/genyo/addon/utils/HudUtils.java index fc291c7..52579ac 100644 --- a/src/main/java/com/genyo/addon/utils/HudUtils.java +++ b/src/main/java/com/genyo/addon/utils/HudUtils.java @@ -1,5 +1,8 @@ package com.genyo.addon.utils; +import com.genyo.addon.mixin.HudRendererAccessor; +import meteordevelopment.meteorclient.systems.hud.HudRenderer; +import meteordevelopment.meteorclient.utils.render.color.Color; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; @@ -8,7 +11,7 @@ public class HudUtils { - public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale, String countOverride) { + public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale) { MatrixStack matrices = drawContext.getMatrices(); matrices.push(); matrices.scale(scale, scale, 1f); @@ -19,16 +22,6 @@ public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, drawContext.drawItem(itemStack, scaledX, scaledY); - int count = Integer.parseInt(countOverride); - - if (count < 10) { - scaledX -= 5; - } else if (count < 100) { - scaledX -= 2; - } - - drawContext.drawStackOverlay(mc.textRenderer, itemStack, scaledX, scaledY + 8, countOverride); - matrices.pop(); } diff --git a/src/main/java/com/genyo/addon/utils/InventoryUtils.java b/src/main/java/com/genyo/addon/utils/InventoryUtils.java new file mode 100644 index 0000000..da673c6 --- /dev/null +++ b/src/main/java/com/genyo/addon/utils/InventoryUtils.java @@ -0,0 +1,44 @@ +package com.genyo.addon.utils; + +import meteordevelopment.meteorclient.utils.player.FindItemResult; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import java.util.function.Predicate; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +public class InventoryUtils { + + public static FindItemResult find(Item... items) { + return find(itemStack -> { + for (Item item : items) { + if (itemStack.getItem() == item) return true; + } + return false; + }); + } + + public static FindItemResult find(Predicate isGood) { + if (mc.player == null) return new FindItemResult(0, 0); + return find(isGood, 0, mc.player.getInventory().size()); + } + + public static FindItemResult find(Predicate isGood, int start, int end) { + if (mc.player == null) return new FindItemResult(0, 0); + + int slot = -1, count = 0; + + for (int i = start; i <= end; i++) { + ItemStack stack = mc.player.getInventory().getStack(i); + + if (isGood.test(stack)) { + if (slot == -1) slot = i; + count += stack.getCount(); + } + } + + return new FindItemResult(slot, count); + } + +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 4afd5e9..6e88b65 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,10 +6,10 @@ "description": "This is very genyo genyo genyo genyo genyo.", "authors": [ "wuritz", - "Barnika18" + "Barnika18ASDASDASDBLACKMAN" ], "contact": { - "repo": "https://github.com/MeteorDevelopment/meteor-addon-template" + "repo": "https://www.youtube.com/" }, "icon": "assets/template/icon.png", "environment": "client",