Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 42 additions & 45 deletions src/main/java/com/genyo/addon/hud/PvPNeccessaryHud.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -32,10 +33,10 @@ public class PvPNeccessaryHud extends HudElement {
.build()
);

private final Setting<NoneMode> noneMode = sgGeneral.add(new EnumSetting.Builder<NoneMode>()
.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<SettingColor> textColor = sgGeneral.add(new ColorSetting.Builder()
.name("text-color")
.description("Brasil")
.defaultValue(new SettingColor(255, 255, 255, 255))
.build()
);

Expand Down Expand Up @@ -95,60 +96,71 @@ 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
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);
Expand All @@ -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";
};
}
}

}
15 changes: 4 additions & 11 deletions src/main/java/com/genyo/addon/utils/HudUtils.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);
Expand All @@ -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();
}

Expand Down
44 changes: 44 additions & 0 deletions src/main/java/com/genyo/addon/utils/InventoryUtils.java
Original file line number Diff line number Diff line change
@@ -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<ItemStack> isGood) {
if (mc.player == null) return new FindItemResult(0, 0);
return find(isGood, 0, mc.player.getInventory().size());
}

public static FindItemResult find(Predicate<ItemStack> 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);
}

}
4 changes: 2 additions & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading