aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
diff options
context:
space:
mode:
authorDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:52 +0800
committerDanielshe <shekwancheung0528@gmail.com>2019-11-03 14:44:59 +0800
commit9f5a9eae9a7863412cc5eb433bf15e5ee71da616 (patch)
tree0e6b0b94af061c5e9023b1ff19f339a6c30149be /src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
parent3e3e25855b9f6df507a7d4c8a07c64b9a502fae2 (diff)
downloadRoughlyEnoughItems-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.java22
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();