From 086d944f10bba1d7dbd2e9e603277cc619431609 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 22 Dec 2021 13:34:08 -0700 Subject: [PATCH] parse TerraScripts in parallel --- .../addons/terrascript/TerraScriptAddon.java | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index b0f3d1e13..1a0186c73 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -44,24 +44,27 @@ public class TerraScriptAddon implements AddonInitializer { .then(event -> { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - String id = StringUtil.fileName(entry.getKey()); - StructureScript structureScript = new StructureScript(entry.getValue(), - id, - platform, - structureRegistry, - lootRegistry, - event - .getPack() - .getOrCreateRegistry(FunctionBuilder.class)); - structureRegistry.register(structureScript.getID(), structureScript); - } catch(ParseException e) { - throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e); - } - } - }).close(); + event.getPack().getLoader().open("", ".tesf").thenEntries( + entries -> + entries.stream() + .parallel() + .map(entry -> { + try { + String id = StringUtil.fileName(entry.getKey()); + return new StructureScript(entry.getValue(), + id, + platform, + structureRegistry, + lootRegistry, + event.getPack().getOrCreateRegistry(FunctionBuilder.class)); + } catch(ParseException e) { + throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e); + } + }) + .toList() + .forEach(structureScript -> structureRegistry.register(structureScript.getID(), + structureScript))) + .close(); }) .priority(2) .failThrough();