From ffb0a6413360b0579e7331d71dd934a7d0050d16 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 2 Jun 2021 16:12:20 +0800 Subject: Refactor DisplayFiller --- .../registry/display/DisplayRegistryImpl.java | 34 ++++++++++------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'runtime/src') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java index fb5186dc1..1d6ea4721 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java @@ -47,7 +47,7 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl, List>> displayGenerators = new ConcurrentHashMap<>(); private final List> globalDisplayGenerators = new ArrayList<>(); private final List visibilityPredicates = new ArrayList<>(); - private final List> fillers = new ArrayList<>(); + private final List> fillers = new ArrayList<>(); private final MutableInt displayCount = new MutableInt(0); public DisplayRegistryImpl() { @@ -133,7 +133,12 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl void registerFiller(Class typeClass, Predicate predicate, Function filler) { - fillers.add(new DisplayFiller<>(typeClass, (Predicate) predicate, filler)); + registerFiller(o -> typeClass.isInstance(o) && ((Predicate) predicate).test((T) o), o -> filler.apply((T) o)); + } + + @Override + public void registerFiller(Predicate predicate, Function filler) { + fillers.add(new DisplayFiller<>((Predicate) predicate, (Function) filler)); } @Override @@ -164,7 +169,7 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl Collection tryFillDisplay(T value) { if (value instanceof Display) return Collections.singleton((Display) value); List displays = null; - for (DisplayFiller filler : fillers) { + for (DisplayFiller filler : fillers) { Display display = tryFillDisplayGenerics(filler, value); if (display != null) { if (displays == null) displays = Collections.singletonList(display); @@ -180,10 +185,10 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl D tryFillDisplayGenerics(DisplayFiller filler, Object value) { + private D tryFillDisplayGenerics(DisplayFiller filler, Object value) { try { - if (filler.typeClass.isInstance(value) && filler.predicate.test((T) value)) { - return filler.mappingFunction.apply((T) value); + if (filler.predicate.test(value)) { + return filler.mappingFunction.apply(value); } } catch (Throwable e) { RoughlyEnoughItemsCore.LOGGER.error("Failed to fill displays!", e); @@ -192,16 +197,9 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl { - private final Class typeClass; - private final Predicate predicate; - - private final Function mappingFunction; - - public DisplayFiller(Class typeClass, Predicate predicate, Function mappingFunction) { - this.typeClass = typeClass; - this.predicate = predicate; - this.mappingFunction = mappingFunction; - } - } + private static record DisplayFiller( + Predicate predicate, + + Function mappingFunction + ) {} } -- cgit