diff options
5 files changed, 44 insertions, 31 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DisciplineTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DisciplineTestHelper.java index 5c7e8c5a..641b8728 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DisciplineTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DisciplineTestHelper.java @@ -1,10 +1,14 @@ package de.hysky.skyblocker.skyblock.crimson.dojo; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; +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.util.Util; import java.util.HashMap; +import java.util.Map; public class DisciplineTestHelper { private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); @@ -22,12 +26,12 @@ public class DisciplineTestHelper { /** * Stores a color related to the color of the sword: wood = brown, iron = silver, gold = gold, diamond = cyan */ - private static final HashMap<String, Integer> SWORD_TO_COLOR_LOOKUP = Util.make(new HashMap<>(), map -> { - map.put("WOOD_SWORD", 0xa52a2a); - map.put("IRON_SWORD", 0xc0c0c0); - map.put("GOLD_SWORD", 0xffd700); - map.put("DIAMOND_SWORD", 0x00ffff); - }); + private static final Object2IntMap<String> SWORD_TO_COLOR_LOOKUP = Object2IntMaps.unmodifiable(new Object2IntOpenHashMap<>(Map.of( + "WOOD_SWORD", 0xa52a2a, + "IRON_SWORD", 0xc0c0c0, + "GOLD_SWORD", 0xffd700, + "DIAMOND_SWORD", 0x00ffff + ))); /** * Works out if a zombie should glow based on its name and the currently held item by the player @@ -58,7 +62,7 @@ public class DisciplineTestHelper { } String heldId = ItemTooltip.getInternalNameFromNBT(CLIENT.player.getMainHandStack(), true); if (SWORD_TO_COLOR_LOOKUP.containsKey(heldId)) { - return SWORD_TO_COLOR_LOOKUP.get(heldId); + return SWORD_TO_COLOR_LOOKUP.getInt(heldId); } return 0; } 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 3f39a994..8ffb4bd2 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,9 @@ 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.Object2LongMaps; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.entity.Entity; import net.minecraft.entity.mob.ZombieEntity; @@ -11,7 +14,6 @@ import net.minecraft.util.math.Vec3d; import java.awt.*; import java.text.DecimalFormat; -import java.util.HashMap; import java.util.Map; public class ForceTestHelper { @@ -19,7 +21,7 @@ public class ForceTestHelper { private static final DecimalFormat FORMATTER = new DecimalFormat("0.0"); private static final int ZOMBIE_LIFE_TIME = 10100; - private static final Map<ZombieEntity, Long> zombies = new HashMap<>(); + private static final Object2LongOpenHashMap<ZombieEntity> zombies = new Object2LongOpenHashMap<>(); protected static void reset() { zombies.clear(); @@ -56,14 +58,14 @@ public class ForceTestHelper { protected static void onEntityDespawn(Entity entity) { if (entity instanceof ZombieEntity zombie) { - zombies.remove(zombie); + zombies.removeLong(zombie); } } protected static void render(WorldRenderContext context) { //render times long currentTime = System.currentTimeMillis(); - for (Map.Entry<ZombieEntity, Long> zombie : zombies.entrySet()) { + for (Map.Entry<ZombieEntity, Long> zombie : zombies.object2LongEntrySet()) { float secondsTime = Math.max((zombie.getValue() - currentTime) / 1000f, 0); MutableText text = Text.literal(FORMATTER.format(secondsTime)); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java index 32b2442a..d40c89c3 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java @@ -1,6 +1,9 @@ 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.Object2LongMaps; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -23,7 +26,7 @@ public class MasteryTestHelper { private static final int BLOCK_LIFE_TIME = 6550; private static final List<BlockPos> blockOrder = new ArrayList<>(); - private static final Map<BlockPos, Long> endTimes = new HashMap<>(); + private static final Object2LongOpenHashMap<BlockPos> endTimes = new Object2LongOpenHashMap<>(); protected static void reset() { blockOrder.clear(); @@ -43,7 +46,7 @@ public class MasteryTestHelper { } if (state.isAir()) { blockOrder.remove(pos); - endTimes.remove(pos); + endTimes.removeLong(pos); } } @@ -59,7 +62,7 @@ public class MasteryTestHelper { //render times long currentTime = System.currentTimeMillis(); for (BlockPos pos : blockOrder) { - long blockEndTime = endTimes.get(pos); + long blockEndTime = endTimes.getLong(pos); float secondsTime = Math.max((blockEndTime - currentTime) / 1000f, 0); RenderHelper.renderText(context, Text.literal(FORMATTER.format(secondsTime)), pos.add(0, 1, 0).toCenterPos(), 3, true); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java index afb53243..d8b17cd4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java @@ -1,6 +1,9 @@ package de.hysky.skyblocker.skyblock.crimson.dojo; import de.hysky.skyblocker.utils.render.RenderHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -21,10 +24,10 @@ public class StaminaTestHelper { private static final List<Box> wallHoles = new ArrayList<>(); private static final List<Box> lastHoles = new ArrayList<>(); - private static final Map<Box, holeDirection> holeDirections = new HashMap<>(); + private static final Map<Box, HoleDirection> holeDirections = new HashMap<>(); private static BlockPos middleBase; - private enum holeDirection { + private enum HoleDirection { POSITIVE_X, POSITIVE_Z, NEGATIVE_X, @@ -59,11 +62,11 @@ public class StaminaTestHelper { wallHoles.addAll(findHolesInBox(wall)); } // get direction for the holes - Map<Box, holeDirection> lastHoleDirections = new HashMap<>(holeDirections); + Map<Box, HoleDirection> lastHoleDirections = new HashMap<>(holeDirections); holeDirections.clear(); for (Box hole : wallHoles) { - holeDirection holeDirection = getWholeDirection(hole); - if (holeDirection == StaminaTestHelper.holeDirection.UNCHANGED) { + HoleDirection holeDirection = getWholeDirection(hole); + if (holeDirection == HoleDirection.UNCHANGED) { holeDirections.put(hole, lastHoleDirections.get(hole)); continue; } @@ -112,8 +115,8 @@ public class StaminaTestHelper { } private static List<Box> findWalls(List<BlockPos> currentBottomWallLocations) { - Map<Integer, List<BlockPos>> possibleWallsX = new HashMap<>(); - Map<Integer, List<BlockPos>> possibleWallsZ = new HashMap<>(); + Int2ObjectOpenHashMap<List<BlockPos>> possibleWallsX = new Int2ObjectOpenHashMap<>(); + Int2ObjectOpenHashMap<List<BlockPos>> possibleWallsZ = new Int2ObjectOpenHashMap<>(); for (BlockPos block : currentBottomWallLocations) { //add to the x walls int x = block.getX(); @@ -224,30 +227,30 @@ public class StaminaTestHelper { return holes; } - private static holeDirection getWholeDirection(Box hole) { + private static HoleDirection getWholeDirection(Box hole) { //the value has not changed since last time if (lastHoles.contains(hole)) { - return holeDirection.UNCHANGED; + return HoleDirection.UNCHANGED; } //check each direction to work out which way the whole is going Box posX = hole.offset(1, 0, 0); if (lastHoles.contains(posX)) { - return holeDirection.POSITIVE_X; + return HoleDirection.POSITIVE_X; } Box negX = hole.offset(-1, 0, 0); if (lastHoles.contains(negX)) { - return holeDirection.NEGATIVE_X; + return HoleDirection.NEGATIVE_X; } Box posZ = hole.offset(0, 0, 1); if (lastHoles.contains(posZ)) { - return holeDirection.POSITIVE_Z; + return HoleDirection.POSITIVE_Z; } Box negZ = hole.offset(0, 0, -1); if (lastHoles.contains(negZ)) { - return holeDirection.NEGATIVE_Z; + return HoleDirection.NEGATIVE_Z; } // if pos can not be found mark as new - return holeDirection.NEW; + return HoleDirection.NEW; } @@ -262,7 +265,7 @@ public class StaminaTestHelper { } } - private static boolean isHoleIncoming(Box holePos, holeDirection holeDirection, BlockPos playerPos) { + private static boolean isHoleIncoming(Box holePos, HoleDirection holeDirection, BlockPos playerPos) { return switch (holeDirection) { case POSITIVE_X -> playerPos.getX() < holePos.minX; case POSITIVE_Z -> playerPos.getZ() < holePos.minZ; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/TenacityTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/TenacityTestHelper.java index 861b3453..71c49d76 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/TenacityTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/TenacityTestHelper.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.Object2ObjectOpenHashMap; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; @@ -17,8 +18,8 @@ import java.util.*; public class TenacityTestHelper { private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); - private static final Map<ArmorStandEntity, Vec3d> fireBallsWithStartPos = new HashMap<>(); - private static final Map<ArmorStandEntity, Vec3d> particleOffsets = new HashMap<>(); + private static final Object2ObjectOpenHashMap<ArmorStandEntity, Vec3d> fireBallsWithStartPos = new Object2ObjectOpenHashMap<>(); + private static final Object2ObjectOpenHashMap<ArmorStandEntity, Vec3d> particleOffsets = new Object2ObjectOpenHashMap<>(); protected static void reset() { fireBallsWithStartPos.clear(); |