diff options
| author | kr45732 <52721908+kr45732@users.noreply.github.com> | 2022-08-16 14:28:45 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-16 20:28:45 +0200 |
| commit | 65158242ac750931ec358e50c394171cfee490ce (patch) | |
| tree | 0a499fe6d2280428836689cb8e2ed57fb9a2abde /src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java | |
| parent | 51a8977344343eac1899ed59f63621c7d87d7d00 (diff) | |
| download | notenoughupdates-65158242ac750931ec358e50c394171cfee490ce.tar.gz notenoughupdates-65158242ac750931ec358e50c394171cfee490ce.tar.bz2 notenoughupdates-65158242ac750931ec358e50c394171cfee490ce.zip | |
Fix pets crashes (#226)
* fix some stuff maybe
* Boulberry Bushing
* spam jani logs
* maybe fix sob
* more spam
* does dat fix anytihnkgMjl
* more spam (real)
* ae
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java')
| -rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java | 136 |
1 files changed, 11 insertions, 125 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java index 486640a0..90300bbc 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/PetInfoOverlay.java @@ -22,7 +22,6 @@ package io.github.moulberry.notenoughupdates.miscfeatures; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonObject; @@ -53,7 +52,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -442,7 +440,7 @@ public class PetInfoOverlay extends TextOverlay { String etaStr = null; String etaMaxStr = null; - if (currentPet.petLevel.level < 100) { + if (currentPet.petLevel.level < currentPet.petLevel.maxLevel) { float remaining = currentPet.petLevel.currentLevelRequirement - currentPet.petLevel.levelXp; if (remaining > 0) { if (xpGain < 1000) { @@ -454,14 +452,14 @@ public class PetInfoOverlay extends TextOverlay { } } - if (currentPet.petLevel.level < 99 || !NotEnoughUpdates.INSTANCE.config.petOverlay.petOverlayText.contains(6)) { + if (currentPet.petLevel.level < (currentPet.petLevel.maxLevel - 1) || !NotEnoughUpdates.INSTANCE.config.petOverlay.petOverlayText.contains(6)) { float remainingMax = currentPet.petLevel.maxXP - currentPet.petLevel.totalXp; if (remaining > 0) { if (xpGain < 1000) { - etaMaxStr = EnumChatFormatting.AQUA + "Until L100: " + + etaMaxStr = EnumChatFormatting.AQUA + "Until L" + currentPet.petLevel.maxLevel + ": " + EnumChatFormatting.YELLOW + "N/A"; } else { - etaMaxStr = EnumChatFormatting.AQUA + "Until L100: " + + etaMaxStr = EnumChatFormatting.AQUA + "Until L" + currentPet.petLevel.maxLevel + ": " + EnumChatFormatting.YELLOW + Utils.prettyTime((long) (remainingMax) * 1000 * 60 * 60 / (long) xpGain); } } @@ -546,75 +544,6 @@ public class PetInfoOverlay extends TextOverlay { } } - private static float getMaxLevelXp(JsonArray levels, int offset, int maxLevel) { - float xpTotal = 0; - - for (int i = offset; i < offset + maxLevel - 1; i++) { - xpTotal += levels.get(i).getAsFloat(); - } - - return xpTotal; - } - - private static GuiProfileViewer.PetLevel getLevel( - String petType, - int offset, - float exp - ) { - int maxLevel = 100; - - JsonArray levels = new JsonArray(); - levels.addAll(Constants.PETS.get("pet_levels").getAsJsonArray()); - JsonElement customLevelingJson = Constants.PETS.get("custom_pet_leveling").getAsJsonObject().get(petType); - if (customLevelingJson != null) { - switch (Utils.getElementAsInt(Utils.getElement(customLevelingJson, "type"), 0)) { - case 1: - levels.addAll(customLevelingJson.getAsJsonObject().get("pet_levels").getAsJsonArray()); - break; - case 2: - levels = customLevelingJson.getAsJsonObject().get("pet_levels").getAsJsonArray(); - break; - } - maxLevel = Utils.getElementAsInt(Utils.getElement(customLevelingJson, "max_level"), 100); - } - - float maxXP = getMaxLevelXp(levels, offset, maxLevel); - boolean isMaxed = exp >= maxXP; - - int level = 1; - float currentLevelRequirement = 0; - float xpThisLevel = 0; - float pct = 0; - - if (isMaxed) { - level = maxLevel; - currentLevelRequirement = levels.get(offset + level - 2).getAsFloat(); - xpThisLevel = currentLevelRequirement; - } else { - long totalExp = 0; - for (int i = offset; i < levels.size(); i++) { - currentLevelRequirement = levels.get(i).getAsLong(); - totalExp += currentLevelRequirement; - if (totalExp >= exp) { - xpThisLevel = currentLevelRequirement - (totalExp - exp); - level = Math.min(i - offset + 1, maxLevel); - break; - } - } - pct = currentLevelRequirement != 0 ? xpThisLevel / currentLevelRequirement : 0; - level += pct; - } - - GuiProfileViewer.PetLevel levelObj = new GuiProfileViewer.PetLevel(); - levelObj.level = level; - levelObj.currentLevelRequirement = currentLevelRequirement; - levelObj.maxXP = maxXP; - levelObj.levelPercentage = pct; - levelObj.levelXp = xpThisLevel; - levelObj.totalXp = exp; - return levelObj; - } - public static Pet getPetFromStack(NBTTagCompound tag) { if (Constants.PETS == null || Constants.PETS.get("pet_levels") == null || Constants.PETS.get("pet_levels") instanceof JsonNull) { @@ -634,11 +563,10 @@ public class PetInfoOverlay extends TextOverlay { JsonObject petInfo = new JsonParser().parse(ea.getString("petInfo")).getAsJsonObject(); petType = petInfo.get("type").getAsString(); rarity = Rarity.valueOf(petInfo.get("tier").getAsString()); - - level = getLevel( - petType , - rarity.petOffset, - petInfo.get("exp").getAsFloat() + level = GuiProfileViewer. getPetLevel( + petType, + rarity.name(), + Utils.getElementAsFloat(petInfo.get("exp"), 0) // Should only default if from item list and repo missing exp:0 ); if (petInfo.has("heldItem")) { heldItem = petInfo.get("heldItem").getAsString(); @@ -786,7 +714,7 @@ public class PetInfoOverlay extends TextOverlay { float petXp = petInfoObject.get("exp").getAsFloat(); - double petLevel = XPInformation.getInstance().getPetLevel(name, petXp, rarityString); + double petLevel = GuiProfileViewer.getPetLevel(name, rarityString, petXp).level; int index = getClosestPetIndex(name, rarity, "", (float) petLevel); if (index != config.selectedPet) { clearPet(); @@ -976,7 +904,7 @@ public class PetInfoOverlay extends TextOverlay { } public static float getXpGain(Pet pet, float xp, String xpType) { - if (pet.petLevel.level >= 100) return 0; + if (pet.petLevel.level >= pet.petLevel.maxLevel) return 0; if (validXpTypes == null) validXpTypes = Lists.newArrayList("mining", "foraging", "enchanting", "farming", "combat", "fishing", "alchemy"); @@ -1066,7 +994,7 @@ public class PetInfoOverlay extends TextOverlay { JsonObject petsJson = Constants.PETS; if (currentPet != null && petsJson != null) { currentPet.petLevel = GuiProfileViewer.getPetLevel( - currentPet.petItem, + currentPet.petType, currentPet.rarity.name(), currentPet.petLevel.totalXp ); @@ -1097,48 +1025,6 @@ public class PetInfoOverlay extends TextOverlay { private int lastLevelHovered = 0; - private static HashMap<String, String> itemMap = null; - - @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true) - public void onTooltip(ItemTooltipEvent event) { - for (String line : event.toolTip) { - String lastItemHovered = null; - if (line.startsWith("\u00a7o\u00a77[Lvl ")) { - lastItemHovered = null; - - String after = line.substring("\u00a7o\u00a77[Lvl ".length()); - if (after.contains("]")) { - String levelStr = after.split("]")[0]; - - try { - lastLevelHovered = Integer.parseInt(levelStr.trim()); - } catch (Exception ignored) { - } - } - } else if (line.startsWith("\u00a75\u00a7o\u00a76Held Item: ")) { - String after = line.substring("\u00a75\u00a7o\u00a76Held Item: ".length()); - - if (itemMap == null) { - itemMap = new HashMap<>(); - - for (Map.Entry<String, JsonObject> entry : NotEnoughUpdates.INSTANCE.manager - .getItemInformation() - .entrySet()) { - if (entry.getKey().equals("ALL_SKILLS_SUPER_BOOST") || - XP_BOOST_PATTERN.matcher(entry.getKey()).matches()) { - ItemStack stack = NotEnoughUpdates.INSTANCE.manager.jsonToStack(entry.getValue()); - itemMap.put(stack.getDisplayName(), entry.getKey()); - } - } - } - - if (itemMap.containsKey(after)) { - lastItemHovered = itemMap.get(after); - } - } - } - } - private static final Pattern AUTOPET_EQUIP = Pattern.compile( "\u00a7cAutopet \u00a7eequipped your \u00a77\\[Lvl (\\d+)] \u00a7(.{2,})\u00a7e! \u00a7a\u00a7lVIEW RULE\u00a7r"); |
