aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2019-12-08 18:46:17 +0800
committershedaniel <daniel@shedaniel.me>2019-12-08 18:46:17 +0800
commit1b055888a74e68f5a287068428dc80196558fc98 (patch)
tree9a9f8707fb758966140dd68a56ef37b6598a4549 /src/main/java
parent237fb0b83944fc2fd4960bdc8a8b518a8ca9aaaf (diff)
downloadRoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.tar.gz
RoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.tar.bz2
RoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.zip
Finally fixed the NPE
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java2
-rw-r--r--src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java13
2 files changed, 9 insertions, 6 deletions
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<String, Map<Class<? extends Container>, ContainerInfo>> containerInfoMap = Maps.newHashMap();
+ private static final Map<String, Map<Class<? extends Container>, 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<Class<? extends Container>, ContainerInfo> infoMap = containerInfoMap.get(category.toString());
+ if (infoMap.containsKey(containerClass)) return infoMap.get(containerClass);
+ for (Map.Entry<Class<? extends Container>, ContainerInfo> entry : infoMap.entrySet())
+ if (entry.getKey().isAssignableFrom(containerClass)) return entry.getValue();
+ return null;
}
}