diff options
| author | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:52 +0800 |
|---|---|---|
| committer | Danielshe <shekwancheung0528@gmail.com> | 2019-11-03 14:44:59 +0800 |
| commit | 9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch) | |
| tree | 0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java | |
| parent | 3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff) | |
| download | RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.gz RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.tar.bz2 RoughlyEnoughItems-9f5a9eae9a7863412cc5eb433bf15e5ee71da616.zip | |
3.2.1
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java index cf182ebf5..2abf3ddd8 100644 --- a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java @@ -50,12 +50,13 @@ public class DisplayHelperImpl implements DisplayHelper { private Map<Class<?>, DisplayBoundsHandler<?>> handlerCache = Maps.newHashMap(); private Map<Class, List<DisplayBoundsHandler<?>>> handlerSortedCache = Maps.newHashMap(); private BaseBoundsHandler baseBoundsHandler; - private Class tempScreen; + private Class<?> tempScreen; @Override public List<DisplayBoundsHandler<?>> getSortedBoundsHandlers(Class<?> screenClass) { - if (handlerSortedCache.containsKey(screenClass)) - return handlerSortedCache.get(screenClass); + List<DisplayBoundsHandler<?>> possibleCached = handlerSortedCache.get(screenClass); + if (possibleCached != null) + return possibleCached; tempScreen = screenClass; handlerSortedCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).collect(Collectors.toList())); return handlerSortedCache.get(screenClass); @@ -68,14 +69,16 @@ public class DisplayHelperImpl implements DisplayHelper { @Override public DisplayBoundsHandler<?> getResponsibleBoundsHandler(Class<?> screenClass) { - if (handlerCache.containsKey(screenClass)) - return handlerCache.get(screenClass); - tempScreen = screenClass; - handlerCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).findAny().orElse(EMPTY)); + DisplayBoundsHandler<?> possibleCached = handlerCache.get(screenClass); + if (possibleCached != null) + return possibleCached; + List<DisplayBoundsHandler<?>> handlers = getSortedBoundsHandlers(screenClass); + handlerCache.put(screenClass, handlers.isEmpty() ? EMPTY : handlers.get(0)); return handlerCache.get(screenClass); } - public boolean filterResponsible(DisplayBoundsHandler handler) { + @Deprecated + public boolean filterResponsible(DisplayBoundsHandler<?> handler) { return handler.getBaseSupportedClass().isAssignableFrom(tempScreen); } @@ -89,14 +92,17 @@ public class DisplayHelperImpl implements DisplayHelper { return baseBoundsHandler; } + @Deprecated public void setBaseBoundsHandler(BaseBoundsHandler baseBoundsHandler) { this.baseBoundsHandler = baseBoundsHandler; } + @Deprecated public void resetData() { screenDisplayBoundsHandlers.clear(); } + @Deprecated public void resetCache() { handlerCache.clear(); handlerSortedCache.clear(); |
