diff --git a/src/main/java/org/ultramine/server/RecipeCache.java b/src/main/java/org/ultramine/server/RecipeCache.java index bbf6e63..07ec78d 100644 --- a/src/main/java/org/ultramine/server/RecipeCache.java +++ b/src/main/java/org/ultramine/server/RecipeCache.java @@ -19,6 +19,7 @@ private final List originList; private final Map cache = new HashMap(); private final Set noRecipeSet = new HashSet(); + private boolean enabled; @SuppressWarnings("unchecked") public RecipeCache() @@ -26,8 +27,15 @@ originList = CraftingManager.getInstance().getRecipeList(); } + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + public IRecipe findRecipe(InventoryCrafting inv, World world) { + if(!enabled) + return originalSearch(inv, world); RecipeKey key = new RecipeKeyBuilder(inv).build(); if(key.width == 0) return null; @@ -43,13 +51,11 @@ } else { - for(IRecipe recipe : originList) + IRecipe recipe = originalSearch(inv, world); + if(recipe != null) { - if (recipe.matches(inv, world)) - { - addToCache(key, recipe); - return recipe; - } + addToCache(key, recipe); + return recipe; } } @@ -66,6 +72,19 @@ cache.put(key, recipe); } + private IRecipe originalSearch(InventoryCrafting inv, World world) + { + for(IRecipe recipe : originList) + { + if (recipe.matches(inv, world)) + { + return recipe; + } + } + + return null; + } + public void clearCache() { cache.clear(); diff --git a/src/main/java/org/ultramine/server/UltramineServerConfig.java b/src/main/java/org/ultramine/server/UltramineServerConfig.java index 1b6ee0a..4bfb58f 100644 --- a/src/main/java/org/ultramine/server/UltramineServerConfig.java +++ b/src/main/java/org/ultramine/server/UltramineServerConfig.java @@ -73,6 +73,7 @@ public String resourcePack = ""; public boolean enableCommandBlock = false; public boolean splitWorldDirs = true; + public boolean recipeCacheEnabled = true; } public static class SpawnLocationsConf diff --git a/src/main/java/org/ultramine/server/UltramineServerModContainer.java b/src/main/java/org/ultramine/server/UltramineServerModContainer.java index bfda039..8686d30 100644 --- a/src/main/java/org/ultramine/server/UltramineServerModContainer.java +++ b/src/main/java/org/ultramine/server/UltramineServerModContainer.java @@ -173,6 +173,8 @@ for(String name : loader.getFastWarps()) reg.registerCommand(new FastWarpCommand(name)); getRecipeCache().clearCache(); + if(e.getSide().isServer()) + getRecipeCache().setEnabled(ConfigurationHandler.getServerConfig().settings.other.recipeCacheEnabled); } @Subscribe @@ -225,6 +227,7 @@ public void reloadToolsCfg() { + getRecipeCache().setEnabled(ConfigurationHandler.getServerConfig().settings.other.recipeCacheEnabled); itemBlocker.reload(); } }