Skip to content

Commit 06d0136

Browse files
authored
fix invalid "nonexistent ID" errors (#935)
Java's built in `IdentityHashMap` compares both keys and values by identity. That breaks mods that recreate the recipe ID for their EMI displays. I fixed it by using a FastUtil `Reference2ObjectOpenHashMap` instead.
1 parent 9da1433 commit 06d0136

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

xplat/src/main/java/dev/emi/emi/registry/EmiRecipes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
3737
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
3838
import it.unimi.dsi.fastutil.objects.ObjectArraySet;
39+
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
3940
import net.minecraft.client.MinecraftClient;
4041
import net.minecraft.client.resource.language.I18n;
4142
import net.minecraft.recipe.Recipe;
@@ -71,7 +72,7 @@ public static void clear() {
7172
MinecraftClient client = MinecraftClient.getInstance();
7273
if (client.world != null) {
7374
RecipeManager manager = client.world.getRecipeManager();
74-
recipeIds = Maps.newIdentityHashMap();
75+
recipeIds = new Reference2ObjectOpenHashMap<>();
7576
if (manager != null) {
7677
for (RecipeEntry<?> entry : manager.values()) {
7778
recipeIds.put(entry.value(), entry.id());

0 commit comments

Comments
 (0)