diff options
| author | shedaniel <daniel@shedaniel.me> | 2019-12-08 18:46:17 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2019-12-08 18:46:17 +0800 |
| commit | 1b055888a74e68f5a287068428dc80196558fc98 (patch) | |
| tree | 9a9f8707fb758966140dd68a56ef37b6598a4549 /src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java | |
| parent | 237fb0b83944fc2fd4960bdc8a8b518a8ca9aaaf (diff) | |
| download | RoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.tar.gz RoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.tar.bz2 RoughlyEnoughItems-1b055888a74e68f5a287068428dc80196558fc98.zip | |
Finally fixed the NPE
Diffstat (limited to 'src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java | 13 |
1 files changed, 9 insertions, 4 deletions
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; } } |
