Make recipe streams sequential
This commit is contained in:
parent
e56f27ee6b
commit
ed027eecec
@ -85,7 +85,7 @@ object RecipeResolverManager : SimpleJsonResourceReloadListener(GsonBuilder().se
|
||||
|
||||
fun interface Finder {
|
||||
/**
|
||||
* Returned stream should be thread safe (parallel)
|
||||
* Returned stream MUST be sequential
|
||||
*/
|
||||
fun find(server: MinecraftServer, json: JsonObject): Stream<ResolvedRecipe>
|
||||
}
|
||||
@ -113,7 +113,7 @@ object RecipeResolverManager : SimpleJsonResourceReloadListener(GsonBuilder().se
|
||||
val isCritical = data["is_critical"]?.asBoolean ?: true
|
||||
val ignoreDamageables = data["ignore_damageables"]?.asBoolean ?: false
|
||||
|
||||
server.recipeManager.byType(findRecipeType).values.parallelStream()
|
||||
server.recipeManager.byType(findRecipeType).values.stream()
|
||||
.filter { !it.isIncomplete && !it.ingredients.stream().anyMatch { it.isActuallyEmpty } } // get rid of invalid recipes, second "isActuallyEmpty" is required because we do care about ingredients being "missing"
|
||||
.filter {
|
||||
!ignoreDamageables || it.ingredients.stream().flatMap { Arrays.stream(it.items) }.noneMatch { it.isDamageableItem }
|
||||
@ -401,7 +401,7 @@ object RecipeResolverManager : SimpleJsonResourceReloadListener(GsonBuilder().se
|
||||
|
||||
val stream = Streams.concat(*foundResolvers.map {
|
||||
try {
|
||||
it.value.first.find(server, it.value.second).parallel()
|
||||
it.value.first.find(server, it.value.second).sequential()
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.fatal("Recipe resolver ${it.key} experienced internal error", err)
|
||||
throw RuntimeException("Recipe resolver ${it.key} experienced internal error", err)
|
||||
|
Loading…
Reference in New Issue
Block a user