mirror of
https://github.com/BX-Team/DivineMC.git
synced 2025-12-26 18:29:18 +00:00
62 lines
4.1 KiB
Diff
62 lines
4.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
Date: Sun, 12 May 2024 18:12:53 +0300
|
|
Subject: [PATCH] Carpet-Fixes: RecipeManager Optimize
|
|
|
|
Original project: https://github.com/fxmorin/carpet-fixes
|
|
Improves: [Blast]Furnace/Campfire/Smoker/Stonecutter/Crafting/Sheep Color Choosing
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
|
index a31326e24cb68472c81cd781c5e3041772712862..8bb9c2c070717364a842e682ea6b87074157cf6d 100644
|
|
--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
|
+++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
|
|
@@ -21,6 +21,7 @@ import java.util.Map.Entry;
|
|
import java.util.Optional;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
+import java.util.ArrayList;
|
|
import javax.annotation.Nullable;
|
|
import net.minecraft.core.HolderLookup;
|
|
import net.minecraft.core.NonNullList;
|
|
@@ -105,7 +106,7 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
|
|
List<RecipeHolder<T>> list = this.byType(type).stream().filter((recipeholder) -> {
|
|
return recipeholder.value().matches(inventory, world);
|
|
}).toList();
|
|
- Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority
|
|
+ Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority
|
|
inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
|
|
return recipe;
|
|
// CraftBukkit end
|
|
@@ -125,14 +126,14 @@ public class RecipeManager extends SimpleJsonResourceReloadListener {
|
|
List<RecipeHolder<T>> list = this.byType(type).stream().filter((recipeholder1) -> {
|
|
return recipeholder1.value().matches(inventory, world);
|
|
}).toList();
|
|
- Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.getLast()); // CraftBukkit - SPIGOT-4638: last recipe gets priority
|
|
+ Optional<RecipeHolder<T>> recipe = (list.isEmpty()) ? Optional.empty() : Optional.of(list.get(list.size() - 1)); // CraftBukkit - SPIGOT-4638: last recipe gets priority
|
|
inventory.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
|
|
return recipe;
|
|
// CraftBukkit end
|
|
}
|
|
|
|
public <C extends Container, T extends Recipe<C>> List<RecipeHolder<T>> getAllRecipesFor(RecipeType<T> type) {
|
|
- return List.copyOf(this.byType(type));
|
|
+ return space.bxteam.divinemc.configuration.DivineConfig.recipeManagerOptimization ? new ArrayList<>(this.byType(type)) : List.copyOf(this.byType(type)); // DivineMC - Carpet-Fixes: RecipeManager Optimize
|
|
}
|
|
|
|
public <C extends Container, T extends Recipe<C>> List<RecipeHolder<T>> getRecipesFor(RecipeType<T> type, C inventory, Level world) {
|
|
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
index bf550fa360f69b714ac346333c78d7f8de2a71b9..9ae6daeb94232c2f8c5e8f9cc3a2df2f89cd4ed3 100644
|
|
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
@@ -155,8 +155,10 @@ public class DivineConfig {
|
|
|
|
public static boolean biomeManagerOptimization = true;
|
|
public static boolean sheepOptimization = true;
|
|
+ public static boolean recipeManagerOptimization = true;
|
|
private static void optimizations() {
|
|
biomeManagerOptimization = getBoolean("settings.optimizations.biome-manager-optimization", biomeManagerOptimization);
|
|
sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization);
|
|
+ recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
|
|
}
|
|
}
|