From 4d7071b74a94e19dbad460ec2c11ca169f3fa444 Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:04:15 +0200 Subject: dah refactor --- .../skyblock/crimson/dojo/DojoManager.java | 6 ++--- .../skyblock/crimson/dojo/ForceTestHelper.java | 6 ++--- .../skyblock/events/EventNotifications.java | 3 ++- .../skyblock/experiment/ExperimentSolver.java | 9 ++++---- .../skyblock/experiment/SuperpairsSolver.java | 6 +++-- .../skyblock/fancybars/EditBarWidget.java | 5 ++-- .../skyblock/fancybars/StatusBarsConfigScreen.java | 5 ++-- .../skyblocker/skyblock/garden/VisitorHelper.java | 4 ++-- .../skyblock/itemlist/ItemFixerUpper.java | 8 +++++-- .../profileviewer/ProfileViewerScreen.java | 6 +++-- .../profileviewer/collections/GenericCategory.java | 11 +++++---- .../dungeons/DungeonMiscStatsWidgets.java | 5 ++-- .../skyblock/profileviewer/inventory/Pet.java | 7 ++++-- .../skyblock/profileviewer/skills/SkillWidget.java | 27 +++++++++++----------- .../java/de/hysky/skyblocker/utils/Calculator.java | 10 +++++--- 15 files changed, 69 insertions(+), 49 deletions(-) (limited to 'src/main/java/de') 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 enabled; + private final BooleanPredicate enabled; - DojoChallenges(String name, Predicate 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 zombie : zombies.object2LongEntrySet()) { - float secondsTime = Math.max((zombie.getValue() - currentTime) / 1000f, 0); + for (Object2LongMap.Entry 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 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 slots = new HashMap<>(); + private final Int2ObjectMap 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 getSlots() { + public Int2ObjectMap 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 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 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 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 resizeHover = new ObjectBooleanMutablePair<>(BarLocation.NULL, false); + private final ObjectBooleanPair resizeHover = new ObjectBooleanMutablePair<>(BarLocation.NULL, false); private final Pair 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 itemEntry, int index, int mouseX, int mouseY) { + private static int drawItemEntryWithHover(DrawContext context, TextRenderer textRenderer, Object2IntMap.Entry 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 SPAWN_EGG_VARIANTS = Map.ofEntries( + private final static Int2ObjectMap 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 collectionsMap = new HashMap<>(); - Map> tierRequirementsMap = new HashMap<>(); + Map 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 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 collectionsMap; - private final Map> tierRequirementsMap; + private final Map tierRequirementsMap; private final Map 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) fetchedData.get("COLLECTIONS"); //noinspection unchecked - tierRequirementsMap = (Map>) fetchedData.get("TIER_REQS"); + tierRequirementsMap = (Map) fetchedData.get("TIER_REQS"); this.category = collection; setupItemStacks(hProfile, pProfile); } - private int calculateTier(int achieved, List 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 tierRequirements = tierRequirementsMap.get(collection); + IntList tierRequirements = tierRequirementsMap.get(collection); List 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 dungeonRuns = new HashMap<>(); + private final Object2IntMap 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 TIER_MAP = Map.of( + private static final Object2IntMap TIER_MAP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.of( "COMMON", 0, "UNCOMMON", 1, "RARE", 2, "EPIC", 3, "LEGENDARY", 4, "MYTHIC", 5 - ); + ))); private static final Int2ObjectMap 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 SKILL_CAP = Map.ofEntries( + private static final Object2IntMap 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 SOFT_SKILL_CAP = Map.of( + ))); + private static final Object2IntMap SOFT_SKILL_CAP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.of( "Taming", 50, "Farming", 50 - ); + ))); - private static final Map INFINITE = Map.of( - "Catacombs", 0 - ); + private static final Object2IntMap 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 MAGNITUDE_VALUES = Map.of( + private static final Object2LongMap 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 lex(String input) { List 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; -- cgit From adbd80e0a67a5794bd50cb133a343dfc234864ad Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:36:58 +0200 Subject: yea --- .../skyblock/dwarven/CrystalsChestHighlighter.java | 2 +- .../skyblock/waypoint/OrderedWaypoints.java | 22 ++++++++++------------ .../java/de/hysky/skyblocker/utils/CodecUtils.java | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/utils/CodecUtils.java (limited to 'src/main/java/de') 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/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 x, Optional y, Optional z, Optional r, Optional g, Optional b, Optional options) { + private record ColeWeightWaypoint(OptionalInt x, OptionalInt y, OptionalInt z, OptionalInt r, OptionalInt g, OptionalInt b, Optional options) { static final Codec 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_CODEC = CODEC.listOf(); diff --git a/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java new file mode 100644 index 00000000..ec81af58 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java @@ -0,0 +1,22 @@ +package de.hysky.skyblocker.utils; + +import com.mojang.serialization.MapCodec; + +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.OptionalInt; + +public final class CodecUtils { + + private CodecUtils() { + throw new IllegalStateException("Uhhhh no? like just no. What are you trying to do? D- Do you think this will be useful to instantiate this? Like it's private, so you went through the effort of putting an accessor actually i'm not sure you can accessor a constructor. can you? so did you really put an access widener for that? like really? honestly this is just sad. Plus there isn't even any method in here that requires an instance. There's only static methods. like bruh. you know what i'm done typing shit for you to read, bye i'm leaving *voice lowers as I leave* I swear those modders think they can access all they want sheesh *comes back instantly* AND I SWEAR IF YOU INJECT SO THIS ERROR CANNOT BE THROWN I WILL SEND YOU TO HELL'S FREEZER"); + } + + public static MapCodec optionalInt(MapCodec> codec) { + return codec.xmap(opt -> opt.map(OptionalInt::of).orElseGet(OptionalInt::empty), optInt -> optInt.isPresent() ? Optional.of(optInt.getAsInt()) : Optional.empty()); + } + + public static MapCodec optionalDouble(MapCodec> codec) { + return codec.xmap(opt -> opt.map(OptionalDouble::of).orElseGet(OptionalDouble::empty), optDouble -> optDouble.isPresent() ? Optional.of(optDouble.getAsDouble()) : Optional.empty()); + } +} -- cgit From a09b40ede23d040b233ed8ac0734820ff54484ab Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:38:51 +0200 Subject: spelling --- src/main/java/de/hysky/skyblocker/utils/CodecUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/de') diff --git a/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java index ec81af58..5a780142 100644 --- a/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java +++ b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java @@ -9,7 +9,7 @@ import java.util.OptionalInt; public final class CodecUtils { private CodecUtils() { - throw new IllegalStateException("Uhhhh no? like just no. What are you trying to do? D- Do you think this will be useful to instantiate this? Like it's private, so you went through the effort of putting an accessor actually i'm not sure you can accessor a constructor. can you? so did you really put an access widener for that? like really? honestly this is just sad. Plus there isn't even any method in here that requires an instance. There's only static methods. like bruh. you know what i'm done typing shit for you to read, bye i'm leaving *voice lowers as I leave* I swear those modders think they can access all they want sheesh *comes back instantly* AND I SWEAR IF YOU INJECT SO THIS ERROR CANNOT BE THROWN I WILL SEND YOU TO HELL'S FREEZER"); + throw new IllegalStateException("Uhhhh no? like just no. What are you trying to do? D- Do you think this will be useful to instantiate this? Like it's private, so you went through the effort of putting an accessor actually i'm not sure you can accessor a constructor. can you? so if not did you really put an access widener for that? like really? honestly this is just sad. Plus there aren't even any method in here that requires an instance. There's only static methods. like bruh. you know what i'm done typing shit for you to read, bye i'm leaving *voice lowers as I leave* I swear those modders think they can access all they want sheesh *comes back instantly* AND I SWEAR IF YOU INJECT SO THIS ERROR CANNOT BE THROWN I WILL SEND YOU TO HELL'S FREEZER"); } public static MapCodec optionalInt(MapCodec> codec) { -- cgit