From efa2c0dd2c1500edff663a2efd0b1d1ea902ce34 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 2 May 2021 20:24:51 -0400 Subject: Add custom name colours --- .../java/me/Danker/features/ColouredNames.java | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/main/java/me/Danker/features/ColouredNames.java (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java new file mode 100644 index 0000000..eec2d5c --- /dev/null +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -0,0 +1,78 @@ +package me.Danker.features; + +import me.Danker.DankersSkyblockMod; +import me.Danker.commands.ToggleCommand; +import me.Danker.utils.Utils; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ColouredNames { + + public static List users = new ArrayList<>(); + + @SubscribeEvent + public void onChat(ClientChatReceivedEvent event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock || event.type != 0) return; + long startTime = System.currentTimeMillis(); + + for (String user : users) { + if (event.message.getFormattedText().contains(user)) { + event.message = replaceChat(event.message, user); + } + } + System.out.println("Chat time: " + ((System.currentTimeMillis() - startTime) / 1000D) + "s"); + } + + @SubscribeEvent + public void onTooltip(ItemTooltipEvent event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + + for (String user : users) { + for (int i = 0; i < event.toolTip.size(); i++) { + if (event.toolTip.get(i).contains(user)) { + event.toolTip.set(i, replaceName(event.toolTip.get(i), user, getColourFromName(user))); + } + } + } + } + + // https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/src/main/java/com/stevekung/skyblockcatia/utils/SupporterUtils.java#L53 + public static String replaceName(String text, String name, String colour) { + String namePattern = "(?:(?:\\u00a7[0-9a-fbr])\\B(?:" + name + ")\\b)|(?:\\u00a7[rb]" + name + "\\u00a7r)|\\b" + name + "\\b"; + Matcher prevColourMat = Pattern.compile("(?:.*(?:(?\\u00a7[0-9a-fbr])" + name + ")\\b.*)").matcher(text); + + if (prevColourMat.matches()) { + return text.replaceAll(namePattern, colour + name + prevColourMat.group("colour")); + } + return text.replaceAll(namePattern, colour + name + EnumChatFormatting.WHITE); + } + + // https://github.com/Moulberry/Hychat/blob/master/src/main/java/io/github/moulberry/hychat/util/TextProcessing.java#L23 + public static IChatComponent replaceChat(IChatComponent component, String user) { + IChatComponent newComponent; + ChatComponentText text = (ChatComponentText) component; + + newComponent = new ChatComponentText(replaceName(text.getUnformattedTextForChat(), user, getColourFromName(user))); + newComponent.setChatStyle(text.getChatStyle().createShallowCopy()); + + for (IChatComponent sibling : text.getSiblings()) { + newComponent.appendSibling(replaceChat(sibling, user)); + } + + return newComponent; + } + + public static String getColourFromName(String name) { + return "§" + DankersSkyblockMod.data.get("colourednames").getAsJsonObject().get(name).getAsString(); + } + +} -- cgit From d52c64ca20fa8df90f0e4496a954328335803725 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Tue, 15 Jun 2021 20:34:51 -0400 Subject: Add support for percentage skill bar --- src/main/java/me/Danker/DankersSkyblockMod.java | 80 +++++++++- src/main/java/me/Danker/features/AutoDisplay.java | 1 - .../java/me/Danker/features/ColouredNames.java | 2 - .../java/me/Danker/features/Skill50Display.java | 45 +++++- src/main/java/me/Danker/features/SkillTracker.java | 169 ++++++++++++--------- .../java/me/Danker/handlers/ConfigHandler.java | 10 ++ src/main/java/me/Danker/utils/Utils.java | 56 ++++++- 7 files changed, 280 insertions(+), 83 deletions(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index c9aaa26..f1c8c1c 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -60,6 +60,7 @@ import javax.sound.sampled.UnsupportedAudioFileException; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; @@ -79,6 +80,15 @@ public class DankersSkyblockMod { public static boolean firstLaunch = false; public static String configDirectory; public static JsonObject data = null; + + public static int farmingLevel; + public static int miningLevel; + public static int combatLevel; + public static int foragingLevel; + public static int fishingLevel; + public static int enchantingLevel; + public static int alchemyLevel; + public static int carpentryLevel; public static String MAIN_COLOUR; public static String SECONDARY_COLOUR; @@ -268,12 +278,47 @@ public class DankersSkyblockMod { @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { - String message = StringUtils.stripControlCodes(event.message.getUnformattedText()); + String message = StringUtils.stripControlCodes(event.message.getUnformattedText()); if (message.startsWith("Your new API key is ") && Utils.isOnHypixel()) { String apiKey = event.message.getSiblings().get(0).getChatStyle().getChatClickEvent().getValue(); ConfigHandler.writeStringConfig("api", "APIKey", apiKey); Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Set API key to " + DankersSkyblockMod.SECONDARY_COLOUR + apiKey)); + } else if (Utils.inSkyblock && !message.contains(":") && message.contains(" SKILL LEVEL UP ")) { + // Handle skill level ups + String skill = message.substring(message.indexOf("UP") + 3, message.lastIndexOf(" ")); + int level = Utils.getIntFromString(message.substring(message.indexOf("➜") + 1), true); + + switch (skill) { + case "Farming": + DankersSkyblockMod.farmingLevel = level; + break; + case "Mining": + DankersSkyblockMod.miningLevel = level; + break; + case "Combat": + DankersSkyblockMod.combatLevel = level; + break; + case "Foraging": + DankersSkyblockMod.foragingLevel = level; + break; + case "Fishing": + DankersSkyblockMod.fishingLevel = level; + break; + case "Enchanting": + DankersSkyblockMod.enchantingLevel = level; + break; + case "Alchemy": + DankersSkyblockMod.alchemyLevel = level; + break; + case "Carpentry": + DankersSkyblockMod.carpentryLevel = level; + break; + default: + System.err.println("Unknown skill leveled up."); + } + + ConfigHandler.writeIntConfig("skills", skill.toLowerCase(Locale.US), level); } } @@ -306,7 +351,8 @@ public class DankersSkyblockMod { public void onTick(TickEvent.ClientTickEvent event) { if (event.phase != Phase.START) return; - EntityPlayerSP player = Minecraft.getMinecraft().thePlayer; + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayerSP player = mc.thePlayer; tickAmount++; if (tickAmount % 20 == 0) { @@ -324,6 +370,36 @@ public class DankersSkyblockMod { } titleTimer--; } + + // New skill level detection + if (mc.currentScreen instanceof GuiChest && tickAmount % 5 == 0 && player != null) { + ContainerChest chest = (ContainerChest) player.openContainer; + String chestName = chest.getLowerChestInventory().getDisplayName().getUnformattedText().trim(); + + if (chestName.equals("Your Skills")) { + List invSlots = ((GuiChest) mc.currentScreen).inventorySlots.inventorySlots; + + farmingLevel = Utils.getIntFromString(invSlots.get(19).getStack().getDisplayName().substring(invSlots.get(19).getStack().getDisplayName().indexOf(" ") + 1), true); + miningLevel = Utils.getIntFromString(invSlots.get(20).getStack().getDisplayName().substring(invSlots.get(20).getStack().getDisplayName().indexOf(" ") + 1), true); + combatLevel = Utils.getIntFromString(invSlots.get(21).getStack().getDisplayName().substring(invSlots.get(21).getStack().getDisplayName().indexOf(" ") + 1), true); + foragingLevel = Utils.getIntFromString(invSlots.get(22).getStack().getDisplayName().substring(invSlots.get(22).getStack().getDisplayName().indexOf(" ") + 1), true); + fishingLevel = Utils.getIntFromString(invSlots.get(23).getStack().getDisplayName().substring(invSlots.get(23).getStack().getDisplayName().indexOf(" ") + 1), true); + enchantingLevel = Utils.getIntFromString(invSlots.get(24).getStack().getDisplayName().substring(invSlots.get(24).getStack().getDisplayName().indexOf(" ") + 1), true); + alchemyLevel = Utils.getIntFromString(invSlots.get(25).getStack().getDisplayName().substring(invSlots.get(25).getStack().getDisplayName().indexOf(" ") + 1), true); + carpentryLevel = Utils.getIntFromString(invSlots.get(29).getStack().getDisplayName().substring(invSlots.get(29).getStack().getDisplayName().indexOf(" ") + 1), true); + + ConfigHandler.writeIntConfig("skills", "farming", farmingLevel); + ConfigHandler.writeIntConfig("skills", "mining", miningLevel); + ConfigHandler.writeIntConfig("skills", "combat", combatLevel); + ConfigHandler.writeIntConfig("skills", "foraging", foragingLevel); + ConfigHandler.writeIntConfig("skills", "fishing", fishingLevel); + ConfigHandler.writeIntConfig("skills", "enchanting", enchantingLevel); + ConfigHandler.writeIntConfig("skills", "alchemy", alchemyLevel); + ConfigHandler.writeIntConfig("skills", "carpentry", carpentryLevel); + + System.out.println("Updated skill levels."); + } + } } // Delay GUI by 1 tick diff --git a/src/main/java/me/Danker/features/AutoDisplay.java b/src/main/java/me/Danker/features/AutoDisplay.java index 783c428..bead243 100644 --- a/src/main/java/me/Danker/features/AutoDisplay.java +++ b/src/main/java/me/Danker/features/AutoDisplay.java @@ -6,7 +6,6 @@ import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.ScoreboardHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.client.settings.GameSettings; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index eec2d5c..478a47d 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -22,14 +22,12 @@ public class ColouredNames { @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { if (!ToggleCommand.customColouredNames || !Utils.inSkyblock || event.type != 0) return; - long startTime = System.currentTimeMillis(); for (String user : users) { if (event.message.getFormattedText().contains(user)) { event.message = replaceChat(event.message, user); } } - System.out.println("Chat time: " + ((System.currentTimeMillis() - startTime) / 1000D) + "s"); } @SubscribeEvent diff --git a/src/main/java/me/Danker/features/Skill50Display.java b/src/main/java/me/Danker/features/Skill50Display.java index 3b73cf9..d7b759e 100644 --- a/src/main/java/me/Danker/features/Skill50Display.java +++ b/src/main/java/me/Danker/features/Skill50Display.java @@ -1,5 +1,6 @@ package me.Danker.features; +import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; import me.Danker.commands.ToggleCommand; @@ -7,6 +8,7 @@ import me.Danker.events.RenderOverlay; import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; +import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -30,8 +32,8 @@ public class Skill50Display { String[] actionBarSections = event.message.getUnformattedText().split(" {3,}"); for (String section : actionBarSections) { - if (section.contains("+") && section.contains("/") && section.contains("(")) { - if (ToggleCommand.skill50DisplayToggled && !section.contains("Runecrafting")) { + if (ToggleCommand.skill50DisplayToggled && section.contains("+") && section.contains("(") && section.contains(")") && !section.contains("Runecrafting")) { + if (section.contains("/")) { String xpGained = section.substring(section.indexOf("+"), section.indexOf("(") - 1); double currentXp = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", "")); int limit; @@ -50,6 +52,40 @@ public class Skill50Display { skillTimer = SKILL_TIME; showSkill = true; skillText = SKILL_50_COLOUR + xpGained + " (" + nf.format(currentXp + previousXp) + "/" + nf.format(totalXp) + ") " + percentage + "%"; + } else { + if (!Utils.skillsInitialized()) { + return; + } + + String xpGained = section.substring(section.indexOf("+"), section.indexOf("(") - 1); + double percentage = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("%"))); + int level = 1; + if (section.contains("Farming")) { + level = DankersSkyblockMod.farmingLevel; + } else if (section.contains("Mining")) { + level = DankersSkyblockMod.miningLevel; + } else if (section.contains("Combat")) { + level = DankersSkyblockMod.combatLevel; + } else if (section.contains("Foraging")) { + level = DankersSkyblockMod.foragingLevel; + } else if (section.contains("Fishing")) { + level = DankersSkyblockMod.fishingLevel; + } else if (section.contains("Enchanting")) { + level = DankersSkyblockMod.enchantingLevel; + } else if (section.contains("Alchemy")) { + level = DankersSkyblockMod.alchemyLevel; + } else if (section.contains("Carpentry")) { + level = DankersSkyblockMod.carpentryLevel; + } + + double currentXp = Utils.getTotalXpEarned(level, percentage); + int totalXp = section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining") || section.contains("Combat") ? 111672425 : 55172425; + double percentageTo50 = Math.floor((currentXp / totalXp) * 10000D) / 100D; + + NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); + skillTimer = SKILL_TIME; + showSkill = true; + skillText = SKILL_50_COLOUR + xpGained + " (" + nf.format(currentXp) + "/" + nf.format(totalXp) + ") " + percentageTo50 + "%"; } } } @@ -69,6 +105,11 @@ public class Skill50Display { @SubscribeEvent public void renderPlayerInfo(RenderOverlay event) { + if (!Utils.skillsInitialized()) { + new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features.", MoveCommand.skill50XY[0], MoveCommand.skill50XY[0], ScaleCommand.skill50Scale); + return; + } + if (showSkill) { new TextRenderer(Minecraft.getMinecraft(), skillText, MoveCommand.skill50XY[0], MoveCommand.skill50XY[1], ScaleCommand.skill50Scale); } diff --git a/src/main/java/me/Danker/features/SkillTracker.java b/src/main/java/me/Danker/features/SkillTracker.java index 60eb632..a2f3249 100644 --- a/src/main/java/me/Danker/features/SkillTracker.java +++ b/src/main/java/me/Danker/features/SkillTracker.java @@ -52,78 +52,106 @@ public class SkillTracker { String[] actionBarSections = event.message.getUnformattedText().split(" {3,}"); for (String section : actionBarSections) { - if (section.contains("+") && section.contains("/") && section.contains("(")) { - if (!section.contains("Runecrafting") && !section.contains("Carpentry")) { - if (ToggleCommand.autoSkillTrackerToggled && System.currentTimeMillis() / 1000 - timeSinceGained <= 2) { - if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) { - skillStopwatch.resume(); - } else if (!skillStopwatch.isStarted()) { - skillStopwatch.start(); - } + if (section.contains("+") && section.contains("(") && section.contains(")") && !section.contains("Runecrafting") && !section.contains("Carpentry")) { + if (ToggleCommand.autoSkillTrackerToggled && System.currentTimeMillis() / 1000 - timeSinceGained <= 2) { + if (skillStopwatch.isStarted() && skillStopwatch.isSuspended()) { + skillStopwatch.resume(); + } else if (!skillStopwatch.isStarted()) { + skillStopwatch.start(); } - timeSinceGained = System.currentTimeMillis() / 1000; + } + timeSinceGained = System.currentTimeMillis() / 1000; + + String skill = section.substring(section.indexOf(" ") + 1, section.lastIndexOf(" ")); + double totalXP; + if (section.contains("/")) { int limit = section.contains("Farming") || section.contains("Enchanting") || section.contains("Mining") || section.contains("Combat") ? 60 : 50; double currentXP = Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("/")).replace(",", "")); int xpToLevelUp = Integer.parseInt(section.substring(section.indexOf("/") + 1, section.indexOf(")")).replaceAll(",", "")); xpLeft = xpToLevelUp - currentXP; int previousXP = Utils.getPastXpEarned(xpToLevelUp, limit); - double totalXP = currentXP + previousXP; - - String skill = section.substring(section.indexOf(" ") + 1, section.lastIndexOf(" ")); - switch (skill) { - case "Farming": - lastSkill = "Farming"; - if (farmingXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) farmingXPGained += totalXP - farmingXP; - } - farmingXP = totalXP; - break; - case "Mining": - lastSkill = "Mining"; - if (miningXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) miningXPGained += totalXP - miningXP; - } - miningXP = totalXP; - break; - case "Combat": - lastSkill = "Combat"; - if (combatXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) combatXPGained += totalXP - combatXP; - } - combatXP = totalXP; - break; - case "Foraging": - lastSkill = "Foraging"; - if (foragingXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) foragingXPGained += totalXP - foragingXP; - } - foragingXP = totalXP; - break; - case "Fishing": - lastSkill = "Fishing"; - if (fishingXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) fishingXPGained += totalXP - fishingXP; - } - fishingXP = totalXP; - break; - case "Enchanting": - lastSkill = "Enchanting"; - if (enchantingXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) enchantingXPGained += totalXP - enchantingXP; - } - enchantingXP = totalXP; - break; - case "Alchemy": - lastSkill = "Alchemy"; - if (alchemyXP != 0) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) alchemyXPGained += totalXP - alchemyXP; - } - alchemyXP = totalXP; - break; - default: - System.err.println("Unknown skill."); + totalXP = currentXP + previousXP; + } else { + if (!Utils.skillsInitialized()) { + return; + } + + int level = 1; + if (section.contains("Farming")) { + level = DankersSkyblockMod.farmingLevel; + } else if (section.contains("Mining")) { + level = DankersSkyblockMod.miningLevel; + } else if (section.contains("Combat")) { + level = DankersSkyblockMod.combatLevel; + } else if (section.contains("Foraging")) { + level = DankersSkyblockMod.foragingLevel; + } else if (section.contains("Fishing")) { + level = DankersSkyblockMod.fishingLevel; + } else if (section.contains("Enchanting")) { + level = DankersSkyblockMod.enchantingLevel; + } else if (section.contains("Alchemy")) { + level = DankersSkyblockMod.alchemyLevel; + } else if (section.contains("Carpentry")) { + level = DankersSkyblockMod.carpentryLevel; } + + totalXP = Utils.getTotalXpEarned(level, Double.parseDouble(section.substring(section.indexOf("(") + 1, section.indexOf("%")))); + xpLeft = Utils.getTotalXpEarned(level + 1, 0) - totalXP; + } + + switch (skill) { + case "Farming": + lastSkill = "Farming"; + if (farmingXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) farmingXPGained += totalXP - farmingXP; + } + farmingXP = totalXP; + break; + case "Mining": + lastSkill = "Mining"; + if (miningXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) miningXPGained += totalXP - miningXP; + } + miningXP = totalXP; + break; + case "Combat": + lastSkill = "Combat"; + if (combatXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) combatXPGained += totalXP - combatXP; + } + combatXP = totalXP; + break; + case "Foraging": + lastSkill = "Foraging"; + if (foragingXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) foragingXPGained += totalXP - foragingXP; + } + foragingXP = totalXP; + break; + case "Fishing": + lastSkill = "Fishing"; + if (fishingXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) fishingXPGained += totalXP - fishingXP; + } + fishingXP = totalXP; + break; + case "Enchanting": + lastSkill = "Enchanting"; + if (enchantingXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) enchantingXPGained += totalXP - enchantingXP; + } + enchantingXP = totalXP; + break; + case "Alchemy": + lastSkill = "Alchemy"; + if (alchemyXP != 0) { + if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) alchemyXPGained += totalXP - alchemyXP; + } + alchemyXP = totalXP; + break; + default: + System.err.println("Unknown skill."); } } } @@ -132,6 +160,11 @@ public class SkillTracker { @SubscribeEvent public void renderPlayerInfo(RenderOverlay event) { if (showSkillTracker && Utils.inSkyblock) { + if (!Utils.skillsInitialized()) { + new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features.", MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[0], ScaleCommand.skillTrackerScale); + return; + } + int xpPerHour; double xpToShow = 0; switch (lastSkill) { @@ -196,12 +229,8 @@ public class SkillTracker { @SubscribeEvent public void onGuiOpen(GuiOpenEvent event) { - if (event.gui instanceof GuiChest) { - if (ToggleCommand.autoSkillTrackerToggled) { - if (skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) { - skillStopwatch.suspend(); - } - } + if (event.gui instanceof GuiChest && ToggleCommand.autoSkillTrackerToggled && skillStopwatch.isStarted() && !skillStopwatch.isSuspended()) { + skillStopwatch.suspend(); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 250c1f2..c289dac 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -484,6 +484,16 @@ public class ConfigHandler { ScaleCommand.teammatesInRadiusScale = initDouble("scales", "teammatesInRadiusScale", 1); ScaleCommand.giantHPScale = initDouble("scales", "giantHPScale", 1); + // Skills + DankersSkyblockMod.farmingLevel = initInt("skills", "farming", -1); + DankersSkyblockMod.miningLevel = initInt("skills", "mining", -1); + DankersSkyblockMod.combatLevel = initInt("skills", "combat", -1); + DankersSkyblockMod.foragingLevel = initInt("skills", "foraging", -1); + DankersSkyblockMod.fishingLevel = initInt("skills", "fishing", -1); + DankersSkyblockMod.enchantingLevel = initInt("skills", "enchanting", -1); + DankersSkyblockMod.alchemyLevel = initInt("skills", "alchemy", -1); + DankersSkyblockMod.carpentryLevel = initInt("skills", "carpentry", -1); + // Colours DankersSkyblockMod.MAIN_COLOUR = initString("colors", "main", EnumChatFormatting.GREEN.toString()); DankersSkyblockMod.SECONDARY_COLOUR = initString("colors", "secondary", EnumChatFormatting.DARK_GREEN.toString()); diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index d3d6325..4acee7f 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -25,10 +25,8 @@ import net.minecraft.util.*; import org.lwjgl.opengl.GL11; import java.awt.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -47,6 +45,15 @@ public class Utils { 19000000, 24000000, 30000000, 38000000, 48000000, 60000000, 75000000, 93000000, 116250000}; static int[] expertiseKills = {50, 100, 250, 500, 1000, 2500, 5500, 10000, 15000}; static Pattern boldPattern = Pattern.compile("(?i)\\u00A7L"); + static Map romanNumerals = new HashMap(){{ + put('I', 1); + put('V', 5); + put('X', 10); + put('L', 50); + put('C', 100); + put('D', 500); + put('M', 1000); + }}; public static int getItems(String item) { Minecraft mc = Minecraft.getMinecraft(); @@ -260,7 +267,8 @@ public class Utils { } return -1; } - + + // Only used when over limit public static int getPastXpEarned(int currentLevelXp, int limit) { if (currentLevelXp == 0) { int xpAdded = 0; @@ -275,6 +283,16 @@ public class Utils { } return 0; } + + public static double getTotalXpEarned(int currentLevel, double percentage) { + double progress = 0; + if (currentLevel < 60) progress = skillXPPerLevel[currentLevel + 1] * (percentage / 100D); + double xpAdded = 0; + for (int i = 1; i <= currentLevel; i++) { + xpAdded += skillXPPerLevel[i]; + } + return xpAdded + progress; + } public static String getColouredBoolean(boolean bool) { return bool ? EnumChatFormatting.GREEN + "On" : EnumChatFormatting.RED + "Off"; @@ -546,7 +564,33 @@ public class Utils { } public static String removeBold(String text) { - return boldPattern.matcher(text).replaceAll(""); + return boldPattern.matcher(text).replaceAll(""); } - + + public static int getIntFromString(String text, boolean romanNumeral) { + if (text.matches(".*\\d.*")) { + return Integer.parseInt(StringUtils.stripControlCodes(text).replaceAll("[^\\d]", "")); + } else if (romanNumeral) { + int number = 0; + + for (int i = 0; i < text.length(); i++) { + int roman = romanNumerals.get(text.charAt(i)); + + if (i != text.length() - 1 && roman < romanNumerals.get(text.charAt(i + 1))) { + number += romanNumerals.get(text.charAt(i + 1)) - roman; + i++; + } else { + number += roman; + } + } + + return number; + } + return -1; + } + + public static boolean skillsInitialized() { + return DankersSkyblockMod.miningLevel != -1; + } + } -- cgit From 6eed0d48eeaa054392efe19dffaef691701c1356 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 11 Jul 2021 17:18:07 -0400 Subject: Add custom colours to nametags Also fix Spider's Den detection and fix copy paste error in /toggle --- .../java/me/Danker/commands/ToggleCommand.java | 2 +- src/main/java/me/Danker/features/ArachneESP.java | 2 +- .../java/me/Danker/features/ColouredNames.java | 27 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 3770d8f..95c4d98 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -293,7 +293,7 @@ public class ToggleCommand extends CommandBase implements ICommand { case "bonzotimer": bonzoTimerToggled = !bonzoTimerToggled; ConfigHandler.writeBooleanConfig("toggles", "BonzoTimer", bonzoTimerToggled); - player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + necronNotificationsToggled + DankersSkyblockMod.MAIN_COLOUR + ".")); + player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Bonzo's Mask timer has been set to " + DankersSkyblockMod.SECONDARY_COLOUR + bonzoTimerToggled + DankersSkyblockMod.MAIN_COLOUR + ".")); break; case "autoskilltracker": autoSkillTrackerToggled = !autoSkillTrackerToggled; diff --git a/src/main/java/me/Danker/features/ArachneESP.java b/src/main/java/me/Danker/features/ArachneESP.java index c78c385..7e39a8f 100644 --- a/src/main/java/me/Danker/features/ArachneESP.java +++ b/src/main/java/me/Danker/features/ArachneESP.java @@ -32,7 +32,7 @@ public class ArachneESP { public boolean inSpidersDen(List scoreboard) { for (String s : scoreboard) { - if (ScoreboardHandler.cleanSB(s).contains("Spiders Den")) { + if (ScoreboardHandler.cleanSB(s).contains("Spider's Den")) { return true; } } diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index 478a47d..2156f3a 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -3,11 +3,15 @@ package me.Danker.features; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.utils.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.ArrayList; @@ -43,6 +47,29 @@ public class ColouredNames { } } + @SubscribeEvent + public void onRenderNametag(PlayerEvent.NameFormat event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + + if (users.contains(event.username)) { + event.displayname = replaceName(event.displayname, event.username, getColourFromName(event.username)); + } + } + + @SubscribeEvent + public void onRenderLiving(RenderLivingEvent.Specials.Pre event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + + Entity entity = event.entity; + if (entity.hasCustomName()) { + for (String user : users) { + if (entity.getCustomNameTag().contains(user)) { + entity.setCustomNameTag(replaceName(entity.getCustomNameTag(), user, getColourFromName(user))); + } + } + } + } + // https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/src/main/java/com/stevekung/skyblockcatia/utils/SupporterUtils.java#L53 public static String replaceName(String text, String name, String colour) { String namePattern = "(?:(?:\\u00a7[0-9a-fbr])\\B(?:" + name + ")\\b)|(?:\\u00a7[rb]" + name + "\\u00a7r)|\\b" + name + "\\b"; -- cgit From 342c6c8c6096db1e3e0e2ea4363ba34764f1121b Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 30 Jul 2021 17:49:30 -0400 Subject: Add rainbow colour names --- src/main/java/me/Danker/features/ColouredNames.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index 2156f3a..cba327a 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -22,6 +22,7 @@ import java.util.regex.Pattern; public class ColouredNames { public static List users = new ArrayList<>(); + public static final EnumChatFormatting[] RAINBOW_COLOURS = new EnumChatFormatting[]{EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { @@ -76,8 +77,23 @@ public class ColouredNames { Matcher prevColourMat = Pattern.compile("(?:.*(?:(?\\u00a7[0-9a-fbr])" + name + ")\\b.*)").matcher(text); if (prevColourMat.matches()) { + if (colour.equals("§z")) { + StringBuilder rainbowName = new StringBuilder(); + for (int i = 0; i < name.length(); i++) { + rainbowName.append(RAINBOW_COLOURS[i % 7]).append(name.charAt(i)); + } + return text.replaceAll(namePattern, rainbowName + prevColourMat.group("colour")); + } return text.replaceAll(namePattern, colour + name + prevColourMat.group("colour")); } + + if (colour.equals("§z")) { + StringBuilder rainbowName = new StringBuilder(); + for (int i = 0; i < name.length(); i++) { + rainbowName.append(RAINBOW_COLOURS[i % 7]).append(name.charAt(i)); + } + return text.replaceAll(namePattern, rainbowName.toString() + EnumChatFormatting.WHITE); + } return text.replaceAll(namePattern, colour + name + EnumChatFormatting.WHITE); } -- cgit From 5a045d7805b0708e2baa9db648130137be986e9a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sat, 7 Aug 2021 15:57:44 -0400 Subject: Add more info to open skill menu warning --- src/main/java/me/Danker/features/ColouredNames.java | 3 ++- src/main/java/me/Danker/features/Skill50Display.java | 2 +- src/main/java/me/Danker/features/SkillTracker.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index cba327a..d0daf2a 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -5,6 +5,7 @@ import me.Danker.commands.ToggleCommand; import me.Danker.utils.Utils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityArmorStand; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; @@ -62,7 +63,7 @@ public class ColouredNames { if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; Entity entity = event.entity; - if (entity.hasCustomName()) { + if (entity instanceof EntityArmorStand && entity.hasCustomName()) { for (String user : users) { if (entity.getCustomNameTag().contains(user)) { entity.setCustomNameTag(replaceName(entity.getCustomNameTag(), user, getColourFromName(user))); diff --git a/src/main/java/me/Danker/features/Skill50Display.java b/src/main/java/me/Danker/features/Skill50Display.java index 54afb3a..5a58b0c 100644 --- a/src/main/java/me/Danker/features/Skill50Display.java +++ b/src/main/java/me/Danker/features/Skill50Display.java @@ -115,7 +115,7 @@ public class Skill50Display { @SubscribeEvent public void renderPlayerInfo(RenderOverlay event) { if (!Utils.skillsInitialized() && Utils.inSkyblock) { - new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features.", MoveCommand.skill50XY[0], MoveCommand.skill50XY[0], ScaleCommand.skill50Scale); + new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features. (/skills)", MoveCommand.skill50XY[0], MoveCommand.skill50XY[0], ScaleCommand.skill50Scale); return; } diff --git a/src/main/java/me/Danker/features/SkillTracker.java b/src/main/java/me/Danker/features/SkillTracker.java index 9438b3d..3d932d0 100644 --- a/src/main/java/me/Danker/features/SkillTracker.java +++ b/src/main/java/me/Danker/features/SkillTracker.java @@ -169,7 +169,7 @@ public class SkillTracker { public void renderPlayerInfo(RenderOverlay event) { if (showSkillTracker && Utils.inSkyblock) { if (!Utils.skillsInitialized()) { - new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features.", MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[0], ScaleCommand.skillTrackerScale); + new TextRenderer(Minecraft.getMinecraft(), EnumChatFormatting.RED + "Please open the skill menu to use skill features. (/skills)", MoveCommand.skillTrackerXY[0], MoveCommand.skillTrackerXY[0], ScaleCommand.skillTrackerScale); return; } -- cgit From e1cd7b73d0e96b1be4892d75f46cc92ad7bf979e Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 26 Aug 2021 22:41:16 -0400 Subject: Reduce lag with custom colours --- .../java/me/Danker/features/ColouredNames.java | 33 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index d0daf2a..dfd6d84 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -13,16 +13,21 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ColouredNames { public static List users = new ArrayList<>(); + public static Map nametags = new HashMap<>(); public static final EnumChatFormatting[] RAINBOW_COLOURS = new EnumChatFormatting[]{EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; @SubscribeEvent @@ -58,20 +63,38 @@ public class ColouredNames { } } - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.LOW) public void onRenderLiving(RenderLivingEvent.Specials.Pre event) { if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; Entity entity = event.entity; - if (entity instanceof EntityArmorStand && entity.hasCustomName()) { - for (String user : users) { - if (entity.getCustomNameTag().contains(user)) { - entity.setCustomNameTag(replaceName(entity.getCustomNameTag(), user, getColourFromName(user))); + if (entity instanceof EntityArmorStand && !entity.isDead && entity.hasCustomName()) { + String name = entity.getCustomNameTag(); + if (name.charAt(name.length() - 1) == '❤') return; + + String id = entity.getUniqueID().toString(); + String nametag = nametags.get(id); + + if (name.equals(nametag)) { + entity.setCustomNameTag(nametag); + } else { + for (String user : users) { + if (name.contains(user)) { + name = replaceName(name, user, getColourFromName(user)); + } } + + nametags.put(id, name); + entity.setCustomNameTag(name); } } } + @SubscribeEvent + public void onWorldChange(WorldEvent.Load event) { + nametags.clear(); + } + // https://github.com/SteveKunG/SkyBlockcatia/blob/1.8.9/src/main/java/com/stevekung/skyblockcatia/utils/SupporterUtils.java#L53 public static String replaceName(String text, String name, String colour) { String namePattern = "(?:(?:\\u00a7[0-9a-fbr])\\B(?:" + name + ")\\b)|(?:\\u00a7[rb]" + name + "\\u00a7r)|\\b" + name + "\\b"; -- cgit From 836c6a646526649f8bb4e85b4396ff038a5aef9b Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Tue, 11 Jan 2022 21:25:50 -0500 Subject: Fix custom colour crash Possibly getting value when data is loading into JsonObject --- src/main/java/me/Danker/features/ColouredNames.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index dfd6d84..f7f4d7a 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -137,7 +137,11 @@ public class ColouredNames { } public static String getColourFromName(String name) { - return "§" + DankersSkyblockMod.data.get("colourednames").getAsJsonObject().get(name).getAsString(); + try { + return "§" + DankersSkyblockMod.data.get("colourednames").getAsJsonObject().get(name).getAsString(); + } catch (NullPointerException ex) { + return EnumChatFormatting.WHITE.toString(); + } } } -- cgit From 4a9c72be2c81059569f6cf75e854b9cdefc2891a Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Fri, 4 Mar 2022 20:26:29 -0500 Subject: Add custom colours to titles --- src/main/java/me/Danker/DankersSkyblockMod.java | 1 - .../me/Danker/commands/CustomMusicCommand.java | 3 --- .../java/me/Danker/commands/InventoryCommand.java | 1 - .../java/me/Danker/features/AbilityCooldowns.java | 1 - .../java/me/Danker/features/ColouredNames.java | 31 ++++++++++++++++++++++ src/main/java/me/Danker/features/DungeonScore.java | 2 -- src/main/java/me/Danker/gui/CustomMusicGui.java | 1 - src/main/java/me/Danker/gui/DankerGui.java | 2 -- src/main/java/me/Danker/gui/DisplayGui.java | 2 -- src/main/java/me/Danker/gui/ExperimentsGui.java | 1 - src/main/java/me/Danker/gui/OnlySlayerGui.java | 4 --- src/main/java/me/Danker/gui/PuzzleSolversGui.java | 1 - src/main/java/me/Danker/gui/SkillTrackerGui.java | 2 -- src/main/java/me/Danker/gui/WarningGui.java | 1 - .../java/me/Danker/gui/alerts/AlertAddGui.java | 3 --- src/main/java/me/Danker/gui/alerts/AlertsGui.java | 1 - .../CrystalHollowWaypointActionGui.java | 1 - .../CrystalHollowWaypointsGui.java | 2 -- .../java/me/Danker/handlers/ConfigHandler.java | 6 +++-- src/main/java/me/Danker/utils/Utils.java | 1 - 20 files changed, 35 insertions(+), 32 deletions(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java index 0d7e577..ce39152 100644 --- a/src/main/java/me/Danker/DankersSkyblockMod.java +++ b/src/main/java/me/Danker/DankersSkyblockMod.java @@ -9,7 +9,6 @@ import me.Danker.features.*; import me.Danker.features.loot.*; import me.Danker.features.puzzlesolvers.*; import me.Danker.gui.*; -import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui; import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.PacketHandler; import me.Danker.utils.RenderUtils; diff --git a/src/main/java/me/Danker/commands/CustomMusicCommand.java b/src/main/java/me/Danker/commands/CustomMusicCommand.java index d21d08e..283b748 100644 --- a/src/main/java/me/Danker/commands/CustomMusicCommand.java +++ b/src/main/java/me/Danker/commands/CustomMusicCommand.java @@ -10,9 +10,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.UnsupportedAudioFileException; -import java.io.IOException; import java.util.List; public class CustomMusicCommand extends CommandBase { diff --git a/src/main/java/me/Danker/commands/InventoryCommand.java b/src/main/java/me/Danker/commands/InventoryCommand.java index d4b35ae..66a5725 100644 --- a/src/main/java/me/Danker/commands/InventoryCommand.java +++ b/src/main/java/me/Danker/commands/InventoryCommand.java @@ -12,7 +12,6 @@ import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryBasic; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/Danker/features/AbilityCooldowns.java b/src/main/java/me/Danker/features/AbilityCooldowns.java index 397857a..e98660e 100644 --- a/src/main/java/me/Danker/features/AbilityCooldowns.java +++ b/src/main/java/me/Danker/features/AbilityCooldowns.java @@ -12,7 +12,6 @@ import net.minecraft.client.gui.inventory.GuiChest; import net.minecraft.inventory.ContainerChest; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StringUtils; import net.minecraftforge.client.event.ClientChatReceivedEvent; diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index f7f4d7a..aad1ab1 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -2,10 +2,12 @@ package me.Danker.features; import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; +import me.Danker.events.PacketReadEvent; import me.Danker.utils.Utils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.network.play.server.S45PacketTitle; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; @@ -16,7 +18,9 @@ import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.ReflectionHelper; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -30,6 +34,8 @@ public class ColouredNames { public static Map nametags = new HashMap<>(); public static final EnumChatFormatting[] RAINBOW_COLOURS = new EnumChatFormatting[]{EnumChatFormatting.RED, EnumChatFormatting.GOLD, EnumChatFormatting.YELLOW, EnumChatFormatting.GREEN, EnumChatFormatting.AQUA, EnumChatFormatting.BLUE, EnumChatFormatting.DARK_PURPLE}; + static Field messageField = ReflectionHelper.findField(S45PacketTitle.class, "message", "field_179810_b", "b"); + @SubscribeEvent public void onChat(ClientChatReceivedEvent event) { if (!ToggleCommand.customColouredNames || !Utils.inSkyblock || event.type != 0) return; @@ -90,6 +96,31 @@ public class ColouredNames { } } + @SubscribeEvent + public void onPacketRead(PacketReadEvent event) { + if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + + if (event.packet instanceof S45PacketTitle) { + S45PacketTitle packet = (S45PacketTitle) event.packet; + + if (packet.getMessage() == null) return; + + String message = packet.getMessage().getUnformattedText(); + for (String user : users) { + if (message.contains(user)) { + try { + messageField.setAccessible(true); + messageField.set(packet, replaceChat(packet.getMessage(), user)); + event.packet = packet; + } catch (IllegalAccessException ex) { + ex.printStackTrace(); + } + break; + } + } + } + } + @SubscribeEvent public void onWorldChange(WorldEvent.Load event) { nametags.clear(); diff --git a/src/main/java/me/Danker/features/DungeonScore.java b/src/main/java/me/Danker/features/DungeonScore.java index 2b6b287..706ce62 100644 --- a/src/main/java/me/Danker/features/DungeonScore.java +++ b/src/main/java/me/Danker/features/DungeonScore.java @@ -5,12 +5,10 @@ import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; import me.Danker.commands.ToggleCommand; import me.Danker.events.RenderOverlayEvent; -import me.Danker.handlers.ConfigHandler; import me.Danker.handlers.ScoreboardHandler; import me.Danker.handlers.TextRenderer; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.network.NetworkPlayerInfo; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; diff --git a/src/main/java/me/Danker/gui/CustomMusicGui.java b/src/main/java/me/Danker/gui/CustomMusicGui.java index 6695b9a..4d5dcc9 100644 --- a/src/main/java/me/Danker/gui/CustomMusicGui.java +++ b/src/main/java/me/Danker/gui/CustomMusicGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.features.CustomMusic; import me.Danker.handlers.ConfigHandler; diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 6edffa9..d5e9ee8 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -1,12 +1,10 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.gui.alerts.AlertsGui; import me.Danker.gui.buttons.FeatureButton; import me.Danker.gui.crystalhollowwaypoints.CrystalHollowWaypointsGui; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/gui/DisplayGui.java b/src/main/java/me/Danker/gui/DisplayGui.java index 4da92c6..17726f8 100644 --- a/src/main/java/me/Danker/gui/DisplayGui.java +++ b/src/main/java/me/Danker/gui/DisplayGui.java @@ -1,9 +1,7 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.features.loot.LootDisplay; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/gui/ExperimentsGui.java b/src/main/java/me/Danker/gui/ExperimentsGui.java index 3cc4929..53eb118 100644 --- a/src/main/java/me/Danker/gui/ExperimentsGui.java +++ b/src/main/java/me/Danker/gui/ExperimentsGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.handlers.ConfigHandler; import me.Danker.utils.Utils; diff --git a/src/main/java/me/Danker/gui/OnlySlayerGui.java b/src/main/java/me/Danker/gui/OnlySlayerGui.java index a5674f8..2a6d844 100644 --- a/src/main/java/me/Danker/gui/OnlySlayerGui.java +++ b/src/main/java/me/Danker/gui/OnlySlayerGui.java @@ -1,12 +1,8 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; -import me.Danker.commands.ToggleCommand; import me.Danker.features.BlockWrongSlayer; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; -import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java index 3356ead..0cfa72b 100644 --- a/src/main/java/me/Danker/gui/PuzzleSolversGui.java +++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.handlers.ConfigHandler; import me.Danker.utils.Utils; diff --git a/src/main/java/me/Danker/gui/SkillTrackerGui.java b/src/main/java/me/Danker/gui/SkillTrackerGui.java index 84cc2e3..e77f785 100644 --- a/src/main/java/me/Danker/gui/SkillTrackerGui.java +++ b/src/main/java/me/Danker/gui/SkillTrackerGui.java @@ -1,9 +1,7 @@ package me.Danker.gui; -import me.Danker.DankersSkyblockMod; import me.Danker.features.SkillTracker; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; diff --git a/src/main/java/me/Danker/gui/WarningGui.java b/src/main/java/me/Danker/gui/WarningGui.java index bb37b83..901b59e 100644 --- a/src/main/java/me/Danker/gui/WarningGui.java +++ b/src/main/java/me/Danker/gui/WarningGui.java @@ -1,6 +1,5 @@ package me.Danker.gui; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; diff --git a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java index 9014ea1..efc099c 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertAddGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertAddGui.java @@ -1,7 +1,5 @@ package me.Danker.gui.alerts; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import me.Danker.features.Alerts; import me.Danker.handlers.TextRenderer; import net.minecraft.client.Minecraft; @@ -11,7 +9,6 @@ import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.ScaledResolution; import net.minecraftforge.fml.client.config.GuiCheckBox; -import java.io.FileWriter; import java.io.IOException; public class AlertAddGui extends GuiScreen { diff --git a/src/main/java/me/Danker/gui/alerts/AlertsGui.java b/src/main/java/me/Danker/gui/alerts/AlertsGui.java index 8eaedca..d73d56a 100644 --- a/src/main/java/me/Danker/gui/alerts/AlertsGui.java +++ b/src/main/java/me/Danker/gui/alerts/AlertsGui.java @@ -5,7 +5,6 @@ import me.Danker.features.Alerts; import me.Danker.gui.DankerGui; import me.Danker.gui.buttons.FeatureButton; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java index 30447a0..8d6fa85 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointActionGui.java @@ -2,7 +2,6 @@ package me.Danker.gui.crystalhollowwaypoints; import me.Danker.DankersSkyblockMod; import me.Danker.features.CrystalHollowWaypoints; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java index 2331ec0..fc0f108 100644 --- a/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java +++ b/src/main/java/me/Danker/gui/crystalhollowwaypoints/CrystalHollowWaypointsGui.java @@ -1,12 +1,10 @@ package me.Danker.gui.crystalhollowwaypoints; -import me.Danker.DankersSkyblockMod; import me.Danker.commands.ToggleCommand; import me.Danker.features.CrystalHollowWaypoints; import me.Danker.gui.DankerGui; import me.Danker.gui.buttons.FeatureButton; import me.Danker.handlers.ConfigHandler; -import me.Danker.handlers.TextRenderer; import me.Danker.utils.RenderUtils; import me.Danker.utils.Utils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index e5ed372..3839766 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -2,7 +2,6 @@ package me.Danker.handlers; import com.google.gson.Gson; import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import me.Danker.DankersSkyblockMod; import me.Danker.commands.MoveCommand; import me.Danker.commands.ScaleCommand; @@ -16,7 +15,10 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Configuration; -import java.io.*; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java index 682c5af..8c48c54 100644 --- a/src/main/java/me/Danker/utils/Utils.java +++ b/src/main/java/me/Danker/utils/Utils.java @@ -9,7 +9,6 @@ import me.Danker.handlers.ScoreboardHandler; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.client.settings.GameSettings; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItemFrame; import net.minecraft.entity.player.EntityPlayer; -- cgit From d35e43b33b98796acc7b8dc76bc06848d0ee3129 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Thu, 28 Apr 2022 02:26:15 -0400 Subject: Fix custom colour replacing with colour codes User 6940 makes 940k auctions become white --- src/main/java/me/Danker/features/ColouredNames.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index aad1ab1..90d722e 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -11,6 +11,7 @@ import net.minecraft.network.play.server.S45PacketTitle; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; +import net.minecraft.util.StringUtils; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; @@ -53,7 +54,7 @@ public class ColouredNames { for (String user : users) { for (int i = 0; i < event.toolTip.size(); i++) { - if (event.toolTip.get(i).contains(user)) { + if (StringUtils.stripControlCodes(event.toolTip.get(i)).contains(user)) { event.toolTip.set(i, replaceName(event.toolTip.get(i), user, getColourFromName(user))); } } -- cgit From b0954c47d499b922ca006a18a4331c8e1ae366b5 Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Wed, 11 May 2022 19:18:07 -0400 Subject: Add option to disable custom colours on nametags --- src/main/java/me/Danker/commands/ToggleCommand.java | 1 + src/main/java/me/Danker/features/ColouredNames.java | 2 +- src/main/java/me/Danker/gui/DankerGui.java | 7 +++++++ src/main/java/me/Danker/handlers/ConfigHandler.java | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/main/java/me/Danker/features/ColouredNames.java') diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java index 09b59d9..91584f8 100644 --- a/src/main/java/me/Danker/commands/ToggleCommand.java +++ b/src/main/java/me/Danker/commands/ToggleCommand.java @@ -49,6 +49,7 @@ public class ToggleCommand extends CommandBase implements ICommand { public static boolean giantHP; public static boolean hidePetCandy; public static boolean customColouredNames; + public static boolean customNametags; public static boolean endOfFarmAlert; public static boolean gemstoneLore; public static boolean crystalHollowWaypoints; diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java index 90d722e..9f7890c 100644 --- a/src/main/java/me/Danker/features/ColouredNames.java +++ b/src/main/java/me/Danker/features/ColouredNames.java @@ -72,7 +72,7 @@ public class ColouredNames { @SubscribeEvent(priority = EventPriority.LOW) public void onRenderLiving(RenderLivingEvent.Specials.Pre event) { - if (!ToggleCommand.customColouredNames || !Utils.inSkyblock) return; + if (!ToggleCommand.customColouredNames || !ToggleCommand.customNametags || !Utils.inSkyblock) return; Entity entity = event.entity; if (entity instanceof EntityArmorStand && !entity.isDead && entity.hasCustomName()) { diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java index 9e013b7..663adf5 100644 --- a/src/main/java/me/Danker/gui/DankerGui.java +++ b/src/main/java/me/Danker/gui/DankerGui.java @@ -74,6 +74,7 @@ public class DankerGui extends GuiScreen { private GuiButton giantHP; private GuiButton hidePetCandy; private GuiButton customColouredNames; + private GuiButton customNametags; private GuiButton endOfFarmAlert; private GuiButton gemstoneLore; private GuiButton autoAcceptReparty; @@ -177,6 +178,7 @@ public class DankerGui extends GuiScreen { giantHP = new FeatureButton("Display Giant HP: " + Utils.getColouredBoolean(ToggleCommand.giantHP), "Displays health of Sadan's giants during F6 bossfight and F7 blood room."); hidePetCandy = new FeatureButton("Hide Pet Candy: " + Utils.getColouredBoolean(ToggleCommand.hidePetCandy), "Hide pet candy in pet tooltips."); customColouredNames = new FeatureButton("Custom Name Colors: " + Utils.getColouredBoolean(ToggleCommand.customColouredNames), "Replaces some player's usernames with a custom color."); + customNametags = new FeatureButton("Custom Color on Nametags: " + Utils.getColouredBoolean(ToggleCommand.customNametags), "Displays custom name colors on nametags. Disabling will increase performance with custom colors."); endOfFarmAlert = new FeatureButton("Alert When Reaching End of Farm: " + Utils.getColouredBoolean(ToggleCommand.endOfFarmAlert), "Alerts when you go past coords set with /dsmfarmlength."); gemstoneLore = new FeatureButton("Applied Gemstones in Lore: " + Utils.getColouredBoolean(ToggleCommand.gemstoneLore), "Adds applied gemstones to item tooltip."); autoAcceptReparty = new FeatureButton("Auto Accept Reparty: " + Utils.getColouredBoolean(ToggleCommand.autoAcceptReparty), "Automatically rejoins parties when disbanded and invited."); @@ -238,6 +240,7 @@ public class DankerGui extends GuiScreen { allButtons.add(giantHP); allButtons.add(hidePetCandy); allButtons.add(customColouredNames); + allButtons.add(customNametags); allButtons.add(endOfFarmAlert); allButtons.add(gemstoneLore); allButtons.add(autoAcceptReparty); @@ -544,6 +547,10 @@ public class DankerGui extends GuiScreen { ToggleCommand.fishingAlert = !ToggleCommand.fishingAlert; ConfigHandler.writeBooleanConfig("toggles", "FishingAlert", ToggleCommand.fishingAlert); fishingAlert.displayString = "Fishing Spawn Alerts: " + Utils.getColouredBoolean(ToggleCommand.fishingAlert); + } else if (button == customNametags) { + ToggleCommand.customNametags = !ToggleCommand.customNametags; + ConfigHandler.writeBooleanConfig("toggles", "CustomNametags", ToggleCommand.customNametags); + customNametags.displayString = "Custom Color on Nametags: " + Utils.getColouredBoolean(ToggleCommand.customNametags); } } diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java index 48693c8..1f00c9f 100644 --- a/src/main/java/me/Danker/handlers/ConfigHandler.java +++ b/src/main/java/me/Danker/handlers/ConfigHandler.java @@ -223,6 +223,7 @@ public class ConfigHandler { ToggleCommand.giantHP = initBoolean("toggles", "GiantHP", false); ToggleCommand.hidePetCandy = initBoolean("toggles", "HidePetCandy", false); ToggleCommand.customColouredNames = initBoolean("toggles", "CustomColouredNames", true); // enabled by default + ToggleCommand.customNametags = initBoolean("toggles", "CustomNametags", true); ToggleCommand.endOfFarmAlert = initBoolean("toggles", "EndOfFarmAlert", false); ToggleCommand.gemstoneLore = initBoolean("toggles", "GemstoneLore", false); ToggleCommand.crystalHollowWaypoints = initBoolean("toggles", "CrystalHollowWaypoints", false); -- cgit