parse TerraScripts in parallel

This commit is contained in:
dfsek
2021-12-22 13:34:08 -07:00
parent a461a57f0d
commit 086d944f10
@@ -44,24 +44,27 @@ public class TerraScriptAddon implements AddonInitializer {
.then(event -> { .then(event -> {
CheckedRegistry<Structure> structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); CheckedRegistry<Structure> structureRegistry = event.getPack().getOrCreateRegistry(Structure.class);
CheckedRegistry<LootTable> lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); CheckedRegistry<LootTable> lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class);
event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { event.getPack().getLoader().open("", ".tesf").thenEntries(
for(Map.Entry<String, InputStream> entry : entries) { entries ->
try { entries.stream()
String id = StringUtil.fileName(entry.getKey()); .parallel()
StructureScript structureScript = new StructureScript(entry.getValue(), .map(entry -> {
id, try {
platform, String id = StringUtil.fileName(entry.getKey());
structureRegistry, return new StructureScript(entry.getValue(),
lootRegistry, id,
event platform,
.getPack() structureRegistry,
.getOrCreateRegistry(FunctionBuilder.class)); lootRegistry,
structureRegistry.register(structureScript.getID(), structureScript); event.getPack().getOrCreateRegistry(FunctionBuilder.class));
} catch(ParseException e) { } catch(ParseException e) {
throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e); throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e);
} }
} })
}).close(); .toList()
.forEach(structureScript -> structureRegistry.register(structureScript.getID(),
structureScript)))
.close();
}) })
.priority(2) .priority(2)
.failThrough(); .failThrough();