aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-08-12 15:45:35 -0400
committerGitHub <noreply@github.com>2024-08-12 15:45:35 -0400
commit11fc3c22ffb57834a3b95dcacafa252dd67a658e (patch)
treef9143208c32988b9aa9593c1125617ac0641dfd8 /src/main/java/de
parent9b95005a58c28324a2ec6eee851e7722c52ee0c4 (diff)
parenta09b40ede23d040b233ed8ac0734820ff54484ab (diff)
downloadSkyblocker-11fc3c22ffb57834a3b95dcacafa252dd67a658e.tar.gz
Skyblocker-11fc3c22ffb57834a3b95dcacafa252dd67a658e.tar.bz2
Skyblocker-11fc3c22ffb57834a3b95dcacafa252dd67a658e.zip
Merge pull request #896 from viciscat/fastutil-refactor
Fast util refactor
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/VisitorHelper.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/collections/GenericCategory.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Pet.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/skills/SkillWidget.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java22
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Calculator.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/CodecUtils.java22
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.o