From 1b055888a74e68f5a287068428dc80196558fc98 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 8 Dec 2019 18:46:17 +0800 Subject: Finally fixed the NPE --- .../rei/plugin/autocrafting/DefaultCategoryHandler.java | 2 -- .../java/me/shedaniel/rei/server/ContainerInfoHandler.java | 13 +++++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java index 11e32fdef..78ca518f5 100644 --- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java +++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java @@ -35,8 +35,6 @@ public class DefaultCategoryHandler implements AutoTransferHandler { if (!(context.getRecipe() instanceof TransferRecipeDisplay)) return Result.createNotApplicable(); TransferRecipeDisplay recipe = (TransferRecipeDisplay) context.getRecipe(); - if (!ContainerInfoHandler.isCategoryHandled(recipe.getRecipeCategory())) - return Result.createNotApplicable(); AbstractContainerScreen containerScreen = context.getContainerScreen(); Container container = containerScreen.getContainer(); ContainerInfo containerInfo = ContainerInfoHandler.getContainerInfo(recipe.getRecipeCategory(), container.getClass()); diff --git a/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java b/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java index 3ea2dc4f4..bad850074 100644 --- a/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java +++ b/src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java @@ -12,11 +12,11 @@ import net.minecraft.util.Identifier; import java.util.Map; public class ContainerInfoHandler { - private static final Map, ContainerInfo>> containerInfoMap = Maps.newHashMap(); + private static final Map, ContainerInfo>> containerInfoMap = Maps.newLinkedHashMap(); public static void registerContainerInfo(Identifier category, ContainerInfo containerInfo) { - if (!containerInfoMap.containsKey(category)) - containerInfoMap.put(category.toString(), Maps.newHashMap()); + if (!containerInfoMap.containsKey(category.toString())) + containerInfoMap.put(category.toString(), Maps.newLinkedHashMap()); containerInfoMap.get(category.toString()).put(containerInfo.getContainerClass(), containerInfo); } @@ -25,6 +25,11 @@ public class ContainerInfoHandler { } public static ContainerInfo getContainerInfo(Identifier category, Class containerClass) { - return isCategoryHandled(category) ? containerInfoMap.get(category.toString()).get(containerClass) : null; + if (!isCategoryHandled(category)) return null; + Map, ContainerInfo> infoMap = containerInfoMap.get(category.toString()); + if (infoMap.containsKey(containerClass)) return infoMap.get(containerClass); + for (Map.Entry, ContainerInfo> entry : infoMap.entrySet()) + if (entry.getKey().isAssignableFrom(containerClass)) return entry.getValue(); + return null; } } -- cgit