From 90c8362c952fc2d9c0ca65c92c417a822d369a4d Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sat, 31 Jul 2021 14:58:01 +0300 Subject: [PATCH] JSON cache --- src/main/java/ru/bclib/client/models/PatternsHelper.java | 9 +++++++-- .../java/ru/bclib/mixin/client/ModelBakeryMixin.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/bclib/client/models/PatternsHelper.java b/src/main/java/ru/bclib/client/models/PatternsHelper.java index ace06642..c6e7348d 100644 --- a/src/main/java/ru/bclib/client/models/PatternsHelper.java +++ b/src/main/java/ru/bclib/client/models/PatternsHelper.java @@ -14,6 +14,8 @@ import java.util.Optional; import java.util.stream.Collectors; public class PatternsHelper { + private static final Map JSON_CACHE = Maps.newConcurrentMap(); + public static Optional createItemGenerated(ResourceLocation itemId) { return createJson(BasePatterns.ITEM_GENERATED, itemId); } @@ -52,8 +54,11 @@ public class PatternsHelper { public static Optional createJson(ResourceLocation patternId, Map textures) { ResourceManager resourceManager = Minecraft.getInstance().getResourceManager(); try (InputStream input = resourceManager.getResource(patternId).getInputStream()) { - String json = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8)).lines() - .collect(Collectors.joining()); + String json = JSON_CACHE.get(patternId); + if (json == null) { + json = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8)).lines().collect(Collectors.joining()); + JSON_CACHE.put(patternId, json); + } for (Map.Entry texture : textures.entrySet()) { json = json.replace(texture.getKey(), texture.getValue()); } diff --git a/src/main/java/ru/bclib/mixin/client/ModelBakeryMixin.java b/src/main/java/ru/bclib/mixin/client/ModelBakeryMixin.java index 0c44df77..1f1406ed 100644 --- a/src/main/java/ru/bclib/mixin/client/ModelBakeryMixin.java +++ b/src/main/java/ru/bclib/mixin/client/ModelBakeryMixin.java @@ -72,7 +72,7 @@ public abstract class ModelBakeryMixin { }); } else { - states.stream().parallel().forEach(blockState -> { + states.forEach(blockState -> { ResourceLocation stateID = BlockModelShaper.stateToModelLocation(blockID, blockState); UnbakedModel model = provider.getModelVariant(stateID, blockState, cache); cache.put(stateID, model);