From b90611b4b4c176ec1c80df002cc4ac36aa0c4dc8 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Fri, 15 Jan 2021 15:32:11 +0000 Subject: [PATCH] Preserve registration order of upgrades Makes them display in a more reasonable order within JEI. Closes #647 (note, the title is an entirley separate issue)! --- .../java/dan200/computercraft/shared/PocketUpgrades.java | 4 +++- .../java/dan200/computercraft/shared/TurtleUpgrades.java | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/PocketUpgrades.java b/src/main/java/dan200/computercraft/shared/PocketUpgrades.java index 2358d28be..2bb1a0f61 100644 --- a/src/main/java/dan200/computercraft/shared/PocketUpgrades.java +++ b/src/main/java/dan200/computercraft/shared/PocketUpgrades.java @@ -7,7 +7,9 @@ import dan200.computercraft.ComputerCraft; import dan200.computercraft.api.pocket.IPocketUpgrade; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenCustomHashMap; import net.minecraft.item.ItemStack; +import net.minecraft.util.Util; import net.minecraftforge.fml.ModContainer; import net.minecraftforge.fml.ModLoadingContext; @@ -18,7 +20,7 @@ public final class PocketUpgrades { private static final Map upgrades = new HashMap<>(); - private static final IdentityHashMap upgradeOwners = new IdentityHashMap<>(); + private static final Map upgradeOwners = new Object2ObjectLinkedOpenCustomHashMap<>( Util.identityStrategy() ); private PocketUpgrades() {} diff --git a/src/main/java/dan200/computercraft/shared/TurtleUpgrades.java b/src/main/java/dan200/computercraft/shared/TurtleUpgrades.java index c13774b5a..6f5b3b3c2 100644 --- a/src/main/java/dan200/computercraft/shared/TurtleUpgrades.java +++ b/src/main/java/dan200/computercraft/shared/TurtleUpgrades.java @@ -8,12 +8,17 @@ import dan200.computercraft.ComputerCraft; import dan200.computercraft.api.turtle.ITurtleUpgrade; import dan200.computercraft.shared.computer.core.ComputerFamily; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenCustomHashMap; import net.minecraft.item.ItemStack; +import net.minecraft.util.Util; import net.minecraftforge.fml.ModLoadingContext; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; import java.util.stream.Stream; public final class TurtleUpgrades @@ -37,7 +42,7 @@ private static class Wrapper private static ITurtleUpgrade[] vanilla; private static final Map upgrades = new HashMap<>(); - private static final IdentityHashMap wrappers = new IdentityHashMap<>(); + private static final Map wrappers = new Object2ObjectLinkedOpenCustomHashMap<>( Util.identityStrategy() ); private static boolean needsRebuild; private TurtleUpgrades() {}