From 1b7fe4ad3cefa1b86c8a9678cf4b54704c95c301 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 28 Dec 2019 00:38:39 +0800 Subject: trying to optimise it --- .../me/shedaniel/rei/impl/RecipeHelperImpl.java | 38 +++++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java') diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java index 8db27a8c7..4337e4ad1 100644 --- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java @@ -47,16 +47,16 @@ public class RecipeHelperImpl implements RecipeHelper { VISIBILITY_HANDLER_COMPARATOR = comparator.reversed(); } - private final List autoTransferHandlers = Lists.newArrayList(); - private final List recipeFunctions = Lists.newArrayList(); - private final List screenClickAreas = Lists.newArrayList(); - private final AtomicInteger recipeCount = new AtomicInteger(); - private final Map> recipeCategoryListMap = Maps.newHashMap(); - private final List> categories = Lists.newArrayList(); - private final Map autoCraftAreaSupplierMap = Maps.newHashMap(); - private final Map>> categoryWorkingStations = Maps.newHashMap(); - private final List displayVisibilityHandlers = Lists.newArrayList(); - private final List> liveRecipeGenerators = Lists.newArrayList(); + private final List autoTransferHandlers = Lists.newLinkedList(); + private final List recipeFunctions = Lists.newLinkedList(); + private final List screenClickAreas = Lists.newLinkedList(); + private final int[] recipeCount = {0}; + private final Map> recipeCategoryListMap = Maps.newLinkedHashMap(); + private final List> categories = Lists.newLinkedList(); + private final Map autoCraftAreaSupplierMap = Maps.newLinkedHashMap(); + private final Map>> categoryWorkingStations = Maps.newLinkedHashMap(); + private final List displayVisibilityHandlers = Lists.newLinkedList(); + private final List> liveRecipeGenerators = Lists.newLinkedList(); private RecipeManager recipeManager; private boolean arePluginsLoading = false; @@ -118,14 +118,14 @@ public class RecipeHelperImpl implements RecipeHelper { public void registerDisplay(Identifier categoryIdentifier, RecipeDisplay display) { if (!recipeCategoryListMap.containsKey(categoryIdentifier)) return; - recipeCount.incrementAndGet(); + recipeCount[0]++; recipeCategoryListMap.get(categoryIdentifier).add(display); } private void registerDisplay(Identifier categoryIdentifier, RecipeDisplay display, int index) { if (!recipeCategoryListMap.containsKey(categoryIdentifier)) return; - recipeCount.incrementAndGet(); + recipeCount[0]++; recipeCategoryListMap.get(categoryIdentifier).add(index, display); } @@ -249,7 +249,7 @@ public class RecipeHelperImpl implements RecipeHelper { long startTime = System.currentTimeMillis(); arePluginsLoading = true; ScreenHelper.clearData(); - this.recipeCount.set(0); + recipeCount[0] = 0; this.recipeManager = recipeManager; this.recipeCategoryListMap.clear(); this.categories.clear(); @@ -277,7 +277,9 @@ public class RecipeHelperImpl implements RecipeHelper { for (REIPluginEntry plugin : plugins) { try { if (reiVersion instanceof SemanticVersion) - if (plugin.getMinimumVersion().compareTo((SemanticVersion) reiVersion) > 0) { + if (plugin.getMinimumVersion() == null) { + RoughlyEnoughItemsCore.LOGGER.warn("[REI] Plugin " + plugin.getPluginIdentifier().toString() + " did not provide a minimum version, skipping version check!"); + } else if (plugin.getMinimumVersion().compareTo((SemanticVersion) reiVersion) > 0) { throw new IllegalStateException("Requires " + plugin.getMinimumVersion().getFriendlyString() + " version of REI!"); } if (plugin instanceof REIPluginV0) { @@ -300,6 +302,9 @@ public class RecipeHelperImpl implements RecipeHelper { RoughlyEnoughItemsCore.LOGGER.error("[REI] " + identifier.toString() + " plugin failed to load!", e); } } + // Remove duplicate entries + ((EntryRegistryImpl) EntryRegistry.getInstance()).distinct(); + for (REIPluginV0 plugin : reiPluginV0s) { Identifier identifier = plugin.getPluginIdentifier(); try { @@ -333,12 +338,13 @@ public class RecipeHelperImpl implements RecipeHelper { return -1f; } }); + // Clear Cache ((DisplayHelperImpl) DisplayHelper.getInstance()).resetCache(); ScreenHelper.getOptionalOverlay().ifPresent(overlay -> overlay.shouldReInit = true); long usedTime = System.currentTimeMillis() - startTime; - RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d exclusion zones suppliers, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", EntryRegistry.getInstance().getStacksList().size(), recipeCount.get(), DisplayHelper.getInstance().getBaseBoundsHandler().supplierSize(), DisplayHelper.getInstance().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList())), usedTime); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d exclusion zones suppliers, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", EntryRegistry.getInstance().getStacksList().size(), recipeCount[0], DisplayHelper.getInstance().getBaseBoundsHandler().supplierSize(), DisplayHelper.getInstance().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList())), usedTime); arePluginsLoading = false; } @@ -355,7 +361,7 @@ public class RecipeHelperImpl implements RecipeHelper { @Override public int getRecipeCount() { - return recipeCount.get(); + return recipeCount[0]; } @Override -- cgit