diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-08-06 22:04:15 +0200 |
|---|---|---|
| committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-08-06 22:04:15 +0200 |
| commit | 4d7071b74a94e19dbad460ec2c11ca169f3fa444 (patch) | |
| tree | 3f450a6b6facfe1f1ec7862f63b52e2f05f9b9d6 /src/main/java/de | |
| parent | 088583a5a5fff6758748e152d30de0adbbb12388 (diff) | |
| download | Skyblocker-4d7071b74a94e19dbad460ec2c11ca169f3fa444.tar.gz Skyblocker-4d7071b74a94e19dbad460ec2c11ca169f3fa444.tar.bz2 Skyblocker-4d7071b74a94e19dbad460ec2c11ca169f3fa444.zip | |
dah refactor
Diffstat (limited to 'src/main/java/de')
15 files changed, 69 insertions, 49 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java index 323c985c..d74ea310 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java @@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.crimson.dojo; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; +import it.unimi.dsi.fastutil.booleans.BooleanPredicate; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; @@ -28,7 +29,6 @@ import net.minecraft.world.World; import java.util.Arrays; import java.util.Objects; -import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -51,9 +51,9 @@ public class DojoManager { TENACITY("Tenacity", enabled -> SkyblockerConfigManager.get().crimsonIsle.dojo.enableTenacityHelper); private final String name; - private final Predicate<Boolean> enabled; + private final BooleanPredicate enabled; - DojoChallenges(String name, Predicate<Boolean> enabled) { + DojoChallenges(String name, BooleanPredicate enabled) { this.name = name; this.enabled = enabled; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java index 70d6a401..e521a59e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java @@ -1,6 +1,7 @@ package de.hysky.skyblocker.skyblock.crimson.dojo; import de.hysky.skyblocker.utils.render.RenderHelper; +import it.unimi.dsi.fastutil.objects.Object2LongMap; import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.entity.Entity; @@ -12,7 +13,6 @@ import net.minecraft.util.math.Vec3d; import java.awt.*; import java.text.DecimalFormat; -import java.util.Map; public class ForceTestHelper { @@ -62,8 +62,8 @@ public class ForceTestHelper { protected static void render(WorldRenderContext context) { //render times long currentTime = System.currentTimeMillis(); - for (Map.Entry<ZombieEntity, Long> zombie : zombies.object2LongEntrySet()) { - float secondsTime = Math.max((zombie.getValue() - currentTime) / 1000f, 0); + for (Object2LongMap.Entry<ZombieEntity> zombie : zombies.object2LongEntrySet()) { + float secondsTime = Math.max((zombie.getLongValue() - currentTime) / 1000f, 0); MutableText text = Text.literal(FORMATTER.format(secondsTime)); if (secondsTime > 1) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java index e846a88a..02b78aa2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java @@ -138,10 +138,11 @@ public class EventNotifications { if (skyblockEvent == null) continue; } String eventName = entry.getKey(); + // Cannot be changed to fast util due to casting issues List<Integer> reminderTimes = SkyblockerConfigManager.get().eventNotifications.eventsReminderTimes.getOrDefault(eventName, DEFAULT_REMINDERS); if (reminderTimes.isEmpty()) continue; - for (Integer reminderTime : reminderTimes) { + for (int reminderTime : reminderTimes) { if (criterionMet() && currentTime + reminderTime < skyblockEvent.start() && newTime + reminderTime >= skyblockEvent.start()) { MinecraftClient instance = MinecraftClient.getInstance(); if (eventName.equals(JACOBS)) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java b/src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java index 8d9b8311..808dce2e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java @@ -3,6 +3,8 @@ package de.hysky.skyblocker.skyblock.experiment; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.config.configs.HelperConfig; import de.hysky.skyblocker.utils.container.SimpleContainerSolver; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; @@ -10,16 +12,13 @@ import net.minecraft.item.ItemStack; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.Map; - public abstract sealed class ExperimentSolver extends SimpleContainerSolver permits ChronomatronSolver, SuperpairsSolver, UltrasequencerSolver { public enum State { REMEMBER, WAIT, SHOW, END } private State state = State.REMEMBER; - private final Map<Integer, ItemStack> slots = new HashMap<>(); + private final Int2ObjectMap<ItemStack> slots = new Int2ObjectOpenHashMap<>(); protected ExperimentSolver(@NotNull @Language("RegExp") String containerName) { super(containerName); @@ -33,7 +32,7 @@ public abstract sealed class ExperimentSolver extends SimpleContainerSolver perm this.state = state; } - public Map<Integer, ItemStack> getSlots() { + public Int2ObjectMap<ItemStack> getSlots() { return slots; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java b/src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java index f2d4c55d..7dc76b1d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java @@ -3,6 +3,8 @@ package de.hysky.skyblocker.skyblock.experiment; import de.hysky.skyblocker.config.configs.HelperConfig; import de.hysky.skyblocker.utils.render.gui.ColorHighlight; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.item.ItemStack; @@ -13,7 +15,7 @@ import java.util.*; public final class SuperpairsSolver extends ExperimentSolver { private int superpairsPrevClickedSlot; private ItemStack superpairsCurrentSlot; - private final Set<Integer> superpairsDuplicatedSlots = new HashSet<>(); + private final IntSet superpairsDuplicatedSlots = new IntOpenHashSet(); public SuperpairsSolver() { super("^Superpairs \\(\\w+\\)$"); @@ -50,7 +52,7 @@ public final class SuperpairsSolver extends ExperimentSolver { if (getState() == State.SHOW && getSlots().get(superpairsPrevClickedSlot) == null) { ItemStack itemStack = genericContainerScreen.getScreenHandler().getInventory().getStack(superpairsPrevClickedSlot); if (!(itemStack.isOf(Items.CYAN_STAINED_GLASS) || itemStack.isOf(Items.BLACK_STAINED_GLASS_PANE) || itemStack.isOf(Items.AIR))) { - getSlots().entrySet().stream().filter((entry -> ItemStack.areEqual(entry.getValue(), itemStack))).findAny().ifPresent(entry -> superpairsDuplicatedSlots.add(entry.getKey())); + getSlots().int2ObjectEntrySet().stream().filter((entry -> ItemStack.areEqual(entry.getValue(), itemStack))).findAny().ifPresent(entry -> superpairsDuplicatedSlots.add(entry.getIntKey())); getSlots().put(superpairsPrevClickedSlot, itemStack); superpairsCurrentSlot = itemStack; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java index 54af7a03..451875fd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.skyblock.fancybars; +import it.unimi.dsi.fastutil.booleans.BooleanConsumer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -188,7 +189,7 @@ public class EditBarWidget extends ContainerWidget { public static class BooleanOption extends ClickableWidget { private boolean current = false; - private Consumer<Boolean> onChange = null; + private BooleanConsumer onChange = null; public BooleanOption(int x, int y, int width, Text message) { super(x, y, width, 11, message); @@ -220,7 +221,7 @@ public class EditBarWidget extends ContainerWidget { this.current = current; } - public void setOnChange(Consumer<Boolean> onChange) { + public void setOnChange(BooleanConsumer onChange) { this.onChange = onChange; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java index a412c1c5..ce9c503d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java @@ -2,6 +2,7 @@ package de.hysky.skyblocker.skyblock.fancybars; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.ObjectBooleanMutablePair; +import it.unimi.dsi.fastutil.objects.ObjectBooleanPair; import it.unimi.dsi.fastutil.objects.ObjectObjectMutablePair; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.ScreenPos; @@ -39,7 +40,7 @@ public class StatusBarsConfigScreen extends Screen { private BarLocation currentInsertLocation = new BarLocation(null, 0, 0); - private final Pair<BarLocation, Boolean> resizeHover = new ObjectBooleanMutablePair<>(BarLocation.NULL, false); + private final ObjectBooleanPair<BarLocation> resizeHover = new ObjectBooleanMutablePair<>(BarLocation.NULL, false); private final Pair<BarLocation, BarLocation> resizedBars = ObjectObjectMutablePair.of(BarLocation.NULL, BarLocation.NULL); private boolean resizing = false; @@ -346,7 +347,7 @@ public class StatusBarsConfigScreen extends Screen { if (!editBarWidget.isMouseOver(mouseX, mouseY) && button == 0 && !first.equals(BarLocation.NULL)) { BarPositioner.BarAnchor barAnchor = first.barAnchor(); assert barAnchor != null; - if (resizeHover.right()) { + if (resizeHover.rightBoolean()) { resizedBars.left(first); if (FancyStatusBars.barPositioner.hasNeighbor(barAnchor, first.y(), first.x(), true)) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java index 7dd332e0..259ebcdd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java @@ -156,9 +156,9 @@ public class VisitorHelper { context.getMatrices().pop(); } - private static int drawItemEntryWithHover(DrawContext context, TextRenderer textRenderer, Map.Entry<String, Integer> itemEntry, int index, int mouseX, int mouseY) { + private static int drawItemEntryWithHover(DrawContext context, TextRenderer textRenderer, Object2IntMap.Entry<String> itemEntry, int index, int mouseX, int mouseY) { String itemName = itemEntry.getKey(); - int amount = itemEntry.getValue(); + int amount = itemEntry.getIntValue(); ItemStack stack = getCachedItem(itemName); drawItemEntryWithHover(context, textRenderer, stack, itemName, amount, index, mouseX, mouseY); return index + 1; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java index 06230d4e..ab748698 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java @@ -1,5 +1,9 @@ package de.hysky.skyblocker.skyblock.itemlist; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.Map; public class ItemFixerUpper { @@ -173,7 +177,7 @@ public class ItemFixerUpper { "minecraft:fern" }; - private final static Map<Integer, String> SPAWN_EGG_VARIANTS = Map.ofEntries( + private final static Int2ObjectMap<String> SPAWN_EGG_VARIANTS = Int2ObjectMaps.unmodifiable(new Int2ObjectOpenHashMap<>(Map.ofEntries( //This entry 0 is technically not right but Hypixel decided to make it polar bear so well we use that Map.entry(0, "minecraft:polar_bear_spawn_egg"), Map.entry(50, "minecraft:creeper_spawn_egg"), @@ -203,7 +207,7 @@ public class ItemFixerUpper { Map.entry(100, "minecraft:horse_spawn_egg"), Map.entry(101, "minecraft:rabbit_spawn_egg"), Map.entry(120, "minecraft:villager_spawn_egg") - ); + ))); private final static String[] SANDSTONE_VARIANTS = { ":", diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java index f74526a4..80af2935 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java @@ -16,6 +16,8 @@ import de.hysky.skyblocker.utils.ApiUtils; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.ProfileUtils; import de.hysky.skyblocker.utils.scheduler.Scheduler; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -218,7 +220,7 @@ public class ProfileViewerScreen extends Screen { JsonObject jsonObject = JsonParser.parseString(Http.sendGetRequest(HYPIXEL_COLLECTIONS)).getAsJsonObject(); if (jsonObject.get("success").getAsBoolean()) { Map<String, String[]> collectionsMap = new HashMap<>(); - Map<String, List<Integer>> tierRequirementsMap = new HashMap<>(); + Map<String, IntList> tierRequirementsMap = new HashMap<>(); JsonObject collections = jsonObject.getAsJsonObject("collections"); collections.entrySet().forEach(entry -> { String category = entry.getKey(); @@ -226,7 +228,7 @@ public class ProfileViewerScreen extends Screen { String[] items = itemsObject.keySet().toArray(new String[0]); collectionsMap.put(category, items); itemsObject.entrySet().forEach(itemEntry -> { - List<Integer> tierReqs = new ArrayList<>(); + IntList tierReqs = new IntArrayList(); itemEntry.getValue().getAsJsonObject().getAsJsonArray("tiers").forEach(req -> tierReqs.add(req.getAsJsonObject().get("amountRequired").getAsInt())); tierRequirementsMap.put(itemEntry.getKey(), tierReqs); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/collections/GenericCategory.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/collections/GenericCategory.java index a9f83ca8..f34ad06e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/collections/GenericCategory.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/collections/GenericCategory.java @@ -5,6 +5,7 @@ import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.skyblock.itemlist.ItemRepository; import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerPage; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; +import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -38,7 +39,7 @@ public class GenericCategory implements ProfileViewerPage { private static final int COLUMNS = 7; private final Map<String, String[]> collectionsMap; - private final Map<String, List<Integer>> tierRequirementsMap; + private final Map<String, IntList> tierRequirementsMap; private final Map<String, String> ICON_TRANSLATION = Map.ofEntries( Map.entry("MUSHROOM_COLLECTION", "RED_MUSHROOM")); private final String[] ROMAN_NUMERALS = {"-", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX"}; @@ -48,13 +49,13 @@ public class GenericCategory implements ProfileViewerPage { //noinspection unchecked collectionsMap = (Map<String, String[]>) fetchedData.get("COLLECTIONS"); //noinspection unchecked - tierRequirementsMap = (Map<String, List<Integer>>) fetchedData.get("TIER_REQS"); + tierRequirementsMap = (Map<String, IntList>) fetchedData.get("TIER_REQS"); this.category = collection; setupItemStacks(hProfile, pProfile); } - private int calculateTier(int achieved, List<Integer> requirements) { - return (int) requirements.stream().filter(req -> achieved >= req).count(); + private int calculateTier(int achieved, IntList requirements) { + return (int) requirements.intStream().filter(req -> achieved >= req).count(); } private void setupItemStacks(JsonObject hProfile, JsonObject pProfile) { @@ -84,7 +85,7 @@ public class GenericCategory implements ProfileViewerPage { } int collectionTier = calculateTier(totalCollection, tierRequirementsMap.get(collection)); - List<Integer> tierRequirements = tierRequirementsMap.get(collection); + IntList tierRequirements = tierRequirementsMap.get(collection); List<Text> lore = new ArrayList<>(); lore.add(Text.literal("Collection Item").setStyle(style).formatted(Formatting.DARK_GRAY)); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java index 780eec24..5f0dbae8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java @@ -4,6 +4,8 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -11,7 +13,6 @@ import net.minecraft.util.Identifier; import java.awt.*; import java.text.DecimalFormat; -import java.util.HashMap; import java.util.Map; public class DungeonMiscStatsWidgets { @@ -21,7 +22,7 @@ public class DungeonMiscStatsWidgets { private static final DecimalFormat DF = new DecimalFormat("#.##"); private static final String[] DUNGEONS = {"catacombs", "master_catacombs"}; - private final Map<String, Integer> dungeonRuns = new HashMap<>(); + private final Object2IntMap<String> dungeonRuns = new Object2IntOpenHashMap<>(); private int secrets = 0; private int totalRuns = 0; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Pet.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Pet.java index 857198e1..53d4886f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Pet.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Pet.java @@ -14,6 +14,9 @@ import io.github.moulberry.repo.data.Rarity; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; import net.minecraft.component.type.ProfileComponent; @@ -51,9 +54,9 @@ public class Pet { - private static final Map<String, Integer> TIER_MAP = Map.of( + private static final Object2IntMap<String> TIER_MAP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.of( "COMMON", 0, "UNCOMMON", 1, "RARE", 2, "EPIC", 3, "LEGENDARY", 4, "MYTHIC", 5 - ); + ))); private static final Int2ObjectMap<Formatting> RARITY_COLOR_MAP = Int2ObjectMaps.unmodifiable(new Int2ObjectOpenHashMap<>(Map.of( 0, Formatting.WHITE, // COMMON diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/skills/SkillWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/skills/SkillWidget.java index 65c54b49..d169343e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/skills/SkillWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/skills/SkillWidget.java @@ -5,6 +5,9 @@ import de.hysky.skyblocker.skyblock.profileviewer.utils.LevelFinder; import de.hysky.skyblocker.skyblock.profileviewer.utils.ProfileViewerUtils; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; import de.hysky.skyblocker.utils.render.RenderHelper; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -41,7 +44,7 @@ public class SkillWidget { Map.entry("Runecraft", Ico.MAGMA_CREAM), Map.entry("Social", Ico.EMERALD) ); - private static final Map<String, Integer> SKILL_CAP = Map.ofEntries( + private static final Object2IntMap<String> SKILL_CAP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.ofEntries( Map.entry("Combat", 60), Map.entry("Farming", 60), Map.entry("Mining", 60), @@ -54,27 +57,25 @@ public class SkillWidget { Map.entry("Catacombs", 50), Map.entry("Runecraft", 25), Map.entry("Social", 25) - ); - private static final Map<String, Integer> SOFT_SKILL_CAP = Map.of( + ))); + private static final Object2IntMap<String> SOFT_SKILL_CAP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.of( "Taming", 50, "Farming", 50 - ); + ))); - private static final Map<String, Integer> INFINITE = Map.of( - "Catacombs", 0 - ); + private static final Object2IntMap<String> INFINITE = Object2IntMaps.singleton("Catacombs", 0); public SkillWidget(String skill, long xp, int playerCap) { this.SKILL_NAME = skill; this.SKILL_LEVEL = LevelFinder.getLevelInfo(skill, xp); - if (SKILL_LEVEL.level >= SKILL_CAP.get(skill) && !INFINITE.containsKey(skill)) { + if (SKILL_LEVEL.level >= SKILL_CAP.getInt(skill) && !INFINITE.containsKey(skill)) { SKILL_LEVEL.fill = 1; - SKILL_LEVEL.level = SKILL_CAP.get(skill); + SKILL_LEVEL.level = SKILL_CAP.getInt(skill); } this.stack = SKILL_LOGO.getOrDefault(skill, Ico.BARRIER); if (playerCap != -1) { - this.SKILL_LEVEL.level = Math.min(SKILL_LEVEL.level, (SOFT_SKILL_CAP.get(this.SKILL_NAME) + playerCap)); + this.SKILL_LEVEL.level = Math.min(SKILL_LEVEL.level, (SOFT_SKILL_CAP.getInt(this.SKILL_NAME) + playerCap)); } } @@ -84,12 +85,12 @@ public class SkillWidget { context.drawText(textRenderer, SKILL_NAME + " " + SKILL_LEVEL.level, x + 31, y + 2, Color.white.hashCode(), false); Color fillColor = Color.green; - if (SKILL_LEVEL.level >= SKILL_CAP.get(SKILL_NAME)) { + if (SKILL_LEVEL.level >= SKILL_CAP.getInt(SKILL_NAME)) { fillColor = Color.MAGENTA; } - if ((SOFT_SKILL_CAP.containsKey(SKILL_NAME) && SKILL_LEVEL.level > SOFT_SKILL_CAP.get(SKILL_NAME)) - && SKILL_LEVEL.level < SKILL_CAP.get(SKILL_NAME) && SKILL_LEVEL.fill == 1) { + if ((SOFT_SKILL_CAP.containsKey(SKILL_NAME) && SKILL_LEVEL.level > SOFT_SKILL_CAP.getInt(SKILL_NAME)) + && SKILL_LEVEL.level < SKILL_CAP.getInt(SKILL_NAME) && SKILL_LEVEL.fill == 1) { fillColor = Color.YELLOW; } diff --git a/src/main/java/de/hysky/skyblocker/utils/Calculator.java b/src/main/java/de/hysky/skyblocker/utils/Calculator.java index 8e16b1a7..680803a1 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Calculator.java +++ b/src/main/java/de/hysky/skyblocker/utils/Calculator.java @@ -1,5 +1,9 @@ package de.hysky.skyblocker.utils; +import it.unimi.dsi.fastutil.objects.Object2LongMap; +import it.unimi.dsi.fastutil.objects.Object2LongMaps; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; + import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -16,14 +20,14 @@ public class Calculator { } private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+\\.?\\d*)([sekmbt]?)"); - private static final Map<String, Long> MAGNITUDE_VALUES = Map.of( + private static final Object2LongMap<String> MAGNITUDE_VALUES = Object2LongMaps.unmodifiable(new Object2LongOpenHashMap<>(Map.of( "s", 64L, "e", 160L, "k", 1_000L, "m", 1_000_000L, "b", 1_000_000_000L, "t", 1_000_000_000_000L - ); + ))); private static List<Token> lex(String input) { List<Token> tokens = new ArrayList<>(); @@ -194,7 +198,7 @@ public class Calculator { if (!MAGNITUDE_VALUES.containsKey(magnitude)) {//its invalid if its another letter throw new UnsupportedOperationException("Invalid magnitude"); } - number *= MAGNITUDE_VALUES.get(magnitude); + number *= MAGNITUDE_VALUES.getLong(magnitude); } return number; |
