This commit is contained in:
Flummi 2024-05-02 16:57:59 +02:00
parent 42dc328562
commit 2804531bf5
Signed by: Flummi
GPG Key ID: AA2AEF822A6F4817

View File

@ -11,6 +11,32 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtCompound;
public class OverlayRenderer { public class OverlayRenderer {
private record ExpObject(double ExpRequired, double ExpPrevious, String EnchantLevel) {}
private static double[] EnchantInfoChampion = { 0, 50000, 100000, 250000, 500000, 1000000, 1500000, 2000000, 2500000, 3000000 };
private static double[] EnchantInfoCultivation = { 0, 1000, 5000, 25000, 100000, 300000, 1500000, 5000000, 20000000, 100000000 };
private static double[] EnchantInfoExpertise = { 0, 50, 100, 250, 500, 1000, 2500, 5500, 10000, 15000 };
private static double[] EnchantInfoCompact = { 0, 100, 500, 1500, 5000, 15000, 50000, 150000, 500000, 1000000 };
private static String[] Levels = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" };
private static ExpObject getExpInformation(double[] InfoTable, double itemExp) {
if (itemExp >= InfoTable[InfoTable.length - 1])
return new ExpObject(-1, InfoTable[InfoTable.length - 1], Levels[Levels.length - 1]);
double ExpRequired = 0;
double ExpPrevious = 0;
String EnchantLevel = Levels[0];
for (int i = 0; i < InfoTable.length; i++) {
if (itemExp < InfoTable[i]) {
ExpRequired = InfoTable[i];
EnchantLevel = Levels[i];
break;
}
else
ExpPrevious = InfoTable[i];
}
return new ExpObject(ExpRequired, ExpPrevious, EnchantLevel);
}
public static void renderOverlay(DrawContext context, float deltaTick) { public static void renderOverlay(DrawContext context, float deltaTick) {
MinecraftClient Instance = MinecraftClient.getInstance(); MinecraftClient Instance = MinecraftClient.getInstance();
ClientPlayerEntity player = Instance.player; ClientPlayerEntity player = Instance.player;
@ -21,11 +47,9 @@ public class OverlayRenderer {
ItemStack mainHandItem = player.getMainHandStack(); ItemStack mainHandItem = player.getMainHandStack();
double ItemExp = 0; double ItemExp = 0;
int ItemExpRequired = 0;
String EnchantLevel = "null";
String EnchantPercent = "0%"; String EnchantPercent = "0%";
int ItemExpPrevious = 0;
String EnchantName = ""; String EnchantName = "";
ExpObject ExpInfo;
if (mainHandItem == null) if (mainHandItem == null)
return; return;
@ -41,198 +65,37 @@ public class OverlayRenderer {
if (extraAttributes.contains("champion_combat_xp")) { if (extraAttributes.contains("champion_combat_xp")) {
EnchantName = "Champion"; EnchantName = "Champion";
ItemExp = extraAttributes.getDouble("champion_combat_xp"); ItemExp = extraAttributes.getDouble("champion_combat_xp");
ExpInfo = getExpInformation(EnchantInfoChampion, ItemExp);
if (ItemExp < 50000) {
ItemExpRequired = 50000;
EnchantLevel = "I";
} else if (ItemExp < 100000) {
ItemExpRequired = 100000;
ItemExpPrevious = 50000;
EnchantLevel = "II";
} else if (ItemExp < 250000) {
ItemExpRequired = 250000;
ItemExpPrevious = 100000;
EnchantLevel = "III";
} else if (ItemExp < 500000) {
ItemExpRequired = 500000;
ItemExpPrevious = 250000;
EnchantLevel = "IV";
} else if (ItemExp < 1000000) {
ItemExpRequired = 1000000;
ItemExpPrevious = 500000;
EnchantLevel = "V";
} else if (ItemExp < 1500000) {
ItemExpRequired = 1500000;
ItemExpPrevious = 1000000;
EnchantLevel = "VI";
} else if (ItemExp < 2000000) {
ItemExpRequired = 2000000;
ItemExpPrevious = 1500000;
EnchantLevel = "VII";
} else if (ItemExp < 2500000) {
ItemExpRequired = 2500000;
ItemExpPrevious = 2000000;
EnchantLevel = "VIII";
} else if (ItemExp < 3000000) {
ItemExpRequired = 3000000;
ItemExpPrevious = 2500000;
EnchantLevel = "IX";
} else if (ItemExp > 3000000) {
ItemExpRequired = -1;
ItemExpPrevious = 3000000;
EnchantLevel = "X";
}
} }
else if (extraAttributes.contains("farmed_cultivating")) { else if (extraAttributes.contains("farmed_cultivating")) {
EnchantName = "Cultivating"; EnchantName = "Cultivating";
ItemExp = extraAttributes.getDouble("farmed_cultivating"); ItemExp = extraAttributes.getDouble("farmed_cultivating");
ExpInfo = getExpInformation(EnchantInfoCultivation, ItemExp);
if (ItemExp < 1000) {
ItemExpRequired = 1000;
EnchantLevel = "I";
} else if (ItemExp < 5000) {
ItemExpRequired = 5000;
ItemExpPrevious = 1000;
EnchantLevel = "II";
} else if (ItemExp < 25000) {
ItemExpRequired = 25000;
ItemExpPrevious = 5000;
EnchantLevel = "III";
} else if (ItemExp < 100000) {
ItemExpRequired = 100000;
ItemExpPrevious = 25000;
EnchantLevel = "IV";
} else if (ItemExp < 300000) {
ItemExpRequired = 300000;
ItemExpPrevious = 100000;
EnchantLevel = "V";
} else if (ItemExp < 1500000) {
ItemExpRequired = 1500000;
ItemExpPrevious = 300000;
EnchantLevel = "VI";
} else if (ItemExp < 5000000) {
ItemExpRequired = 5000000;
ItemExpPrevious = 1500000;
EnchantLevel = "VII";
} else if (ItemExp < 20000000) {
ItemExpRequired = 20000000;
ItemExpPrevious = 5000000;
EnchantLevel = "VIII";
} else if (ItemExp < 100000000) {
ItemExpRequired = 100000000;
ItemExpPrevious = 20000000;
EnchantLevel = "IX";
} else if (ItemExp > 100000000) {
ItemExpRequired = -1;
ItemExpPrevious = 100000000;
EnchantLevel = "X";
}
} }
else if (extraAttributes.contains("expertise_kills")) { else if (extraAttributes.contains("expertise_kills")) {
EnchantName = "Expertise"; EnchantName = "Expertise";
ItemExp = extraAttributes.getDouble("expertise_kills"); ItemExp = extraAttributes.getDouble("expertise_kills");
ExpInfo = getExpInformation(EnchantInfoExpertise, ItemExp);
if (ItemExp < 50) {
ItemExpRequired = 50;
EnchantLevel = "I";
} else if (ItemExp < 100) {
ItemExpRequired = 100;
ItemExpPrevious = 50;
EnchantLevel = "II";
} else if (ItemExp < 250) {
ItemExpRequired = 250;
ItemExpPrevious = 100;
EnchantLevel = "III";
} else if (ItemExp < 500) {
ItemExpRequired = 500;
ItemExpPrevious = 250;
EnchantLevel = "IV";
} else if (ItemExp < 1000) {
ItemExpRequired = 1000;
ItemExpPrevious = 500;
EnchantLevel = "V";
} else if (ItemExp < 2500) {
ItemExpRequired = 2500;
ItemExpPrevious = 1000;
EnchantLevel = "VI";
} else if (ItemExp < 5500) {
ItemExpRequired = 5500;
ItemExpPrevious = 2500;
EnchantLevel = "VII";
} else if (ItemExp < 10000) {
ItemExpRequired = 10000;
ItemExpPrevious = 5500;
EnchantLevel = "VIII";
} else if (ItemExp < 15000) {
ItemExpRequired = 15000;
ItemExpPrevious = 10000;
EnchantLevel = "IX";
} else if (ItemExp > 15000) {
ItemExpRequired = -1;
ItemExpPrevious = 15000;
EnchantLevel = "X";
}
} }
else if (extraAttributes.contains("compact_blocks")) { else if (extraAttributes.contains("compact_blocks")) {
EnchantName = "Compact"; EnchantName = "Compact";
ItemExp = extraAttributes.getDouble("compact_blocks"); ItemExp = extraAttributes.getDouble("compact_blocks");
ExpInfo = getExpInformation(EnchantInfoCompact, ItemExp);
if (ItemExp < 100) {
ItemExpRequired = 100;
EnchantLevel = "I";
} else if (ItemExp < 500) {
ItemExpRequired = 500;
ItemExpPrevious = 100;
EnchantLevel = "II";
} else if (ItemExp < 1500) {
ItemExpRequired = 1500;
ItemExpPrevious = 500;
EnchantLevel = "III";
} else if (ItemExp < 5000) {
ItemExpRequired = 5000;
ItemExpPrevious = 1500;
EnchantLevel = "IV";
} else if (ItemExp < 15000) {
ItemExpRequired = 15000;
ItemExpPrevious = 5000;
EnchantLevel = "V";
} else if (ItemExp < 50000) {
ItemExpRequired = 50000;
ItemExpPrevious = 15000;
EnchantLevel = "VI";
} else if (ItemExp < 150000) {
ItemExpRequired = 150000;
ItemExpPrevious = 50000;
EnchantLevel = "VII";
} else if (ItemExp < 500000) {
ItemExpRequired = 500000;
ItemExpPrevious = 150000;
EnchantLevel = "VIII";
} else if (ItemExp < 1000000) {
ItemExpRequired = 1000000;
ItemExpPrevious = 500000;
EnchantLevel = "IX";
} else if (ItemExp > 1000000) {
ItemExpRequired = -1;
ItemExpPrevious = 15000;
EnchantLevel = "X";
} }
} else
/*else { return;
System.out.println(extraAttributes);
}*/
// show hud // show hud
if(ItemExp > 0) { if(ItemExp > 0) {
EnchantPercent = new DecimalFormat("##.00") EnchantPercent = new DecimalFormat("##0.00")
.format((ItemExp - ItemExpPrevious) / (ItemExpRequired - ItemExpPrevious) * 100); .format((ItemExp - ExpInfo.ExpPrevious) / (ExpInfo.ExpRequired - ExpInfo.ExpPrevious) * 100);
NumberFormat format = NumberFormat.getIntegerInstance(); NumberFormat format = NumberFormat.getIntegerInstance();
TextRenderer textRenderer = Instance.textRenderer; TextRenderer textRenderer = Instance.textRenderer;
String text = EnchantName + " " + EnchantLevel + ": " String text = EnchantName + " " + ExpInfo.EnchantLevel + ": "
+ format.format(ItemExp) + " / " + format.format(ItemExp) + " / "
+ (ItemExpRequired == -1 ? "Maxed" : format.format(ItemExpRequired) + " (" + EnchantPercent + "%)"); + (ExpInfo.EnchantLevel == "X" ? "Maxed" : format.format(ExpInfo.ExpRequired) + " (" + EnchantPercent + "%)");
int width = context.getScaledWindowWidth(); int width = context.getScaledWindowWidth();
int height = context.getScaledWindowHeight(); int height = context.getScaledWindowHeight();
int textWidth = textRenderer.getWidth(text); int textWidth = textRenderer.getWidth(text);