diff options
Diffstat (limited to 'src/main/java')
18 files changed, 102 insertions, 62 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/dwarven/CrystalsChestHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java index 85d17e5f..bc794d89 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java @@ -154,7 +154,7 @@ public class CrystalsChestHighlighter { Vec3d highlightSpot = Vec3d.ZERO; //if to old remove particle - activeParticles.entrySet().removeIf(e -> System.currentTimeMillis() - e.getValue() > MAX_PARTICLE_LIFE_TIME); + activeParticles.object2LongEntrySet().removeIf(e -> System.currentTimeMillis() - e.getLongValue() > MAX_PARTICLE_LIFE_TIME); //add up all particle within range of active block for (Vec3d particlePos : activeParticles.keySet()) { 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 0e81c575..53969ef5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java @@ -160,9 +160,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/skyblock/waypoint/OrderedWaypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java index b88eb38f..c6901d4c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java @@ -12,6 +12,7 @@ import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.CodecUtils; import de.hysky.skyblocker.utils.ColorUtils; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.Utils; @@ -45,10 +46,7 @@ import java.io.ByteArrayOutputStream; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Semaphore; import java.util.zip.GZIPInputStream; @@ -349,7 +347,7 @@ public class OrderedWaypoints { //I think Cole Weight ignores the colors and overrides them so we will comment this out //float[] colorComponents = (waypoint.r().isPresent() && waypoint.g().isPresent() && waypoint.b().isPresent()) ? new float[] { waypoint.r().get() / 255f, waypoint.g().get() / 255f, waypoint.b().get() / 255f } : new float[0]; - convertedWaypoints.add(new OrderedWaypoint(new BlockPos(waypoint.x().get(), waypoint.y().get(), waypoint.z().get()), new float[0])); + convertedWaypoints.add(new OrderedWaypoint(new BlockPos(waypoint.x().getAsInt(), waypoint.y().getAsInt(), waypoint.z().getAsInt()), new float[0])); } } @@ -425,14 +423,14 @@ public class OrderedWaypoints { } } - private record ColeWeightWaypoint(Optional<Integer> x, Optional<Integer> y, Optional<Integer> z, Optional<Integer> r, Optional<Integer> g, Optional<Integer> b, Optional<Options> options) { + private record ColeWeightWaypoint(OptionalInt x, OptionalInt y, OptionalInt z, OptionalInt r, OptionalInt g, OptionalInt b, Optional<Options> options) { static final Codec<ColeWeightWaypoint> CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.INT.optionalFieldOf("x").forGetter(ColeWeightWaypoint::x), - Codec.INT.optionalFieldOf("y").forGetter(ColeWeightWaypoint::y), - Codec.INT.optionalFieldOf("z").forGetter(ColeWeightWaypoint::z), - Codec.INT.optionalFieldOf("r").forGetter(ColeWeightWaypoint::r), - Codec.INT.optionalFieldOf("g").forGetter(ColeWeightWaypoint::g), - Codec.INT.optionalFieldOf("b").forGetter(ColeWeightWaypoint::b), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("x")).forGetter(ColeWeightWaypoint::x), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("y")).forGetter(ColeWeightWaypoint::y), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("z")).forGetter(ColeWeightWaypoint::z), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("r")).forGetter(ColeWeightWaypoint::r), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("g")).forGetter(ColeWeightWaypoint::g), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("b")).forGetter(ColeWeightWaypoint::b), Options.CODEC.optionalFieldOf("options").forGetter(ColeWeightWaypoint::options)) .apply(instance, ColeWeightWaypoint::new)); static final Codec<List<ColeWeightWaypoint>> LIST_CODEC = CODEC.listOf(); 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 { |
