From 84ce034ad0eeffd6e88ea7a1cae821779b620841 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 6 Jul 2022 17:16:20 +0800 Subject: Fix #970 --- .../client/categories/tag/DefaultTagCategory.java | 4 ++-- .../rei/plugin/common/displays/tag/TagNodes.java | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'default-plugin/src/main/java/me') diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java index 24296cfaa..94cab72f8 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java @@ -129,7 +129,7 @@ public class DefaultTagCategory implements DisplayCategory void create(TagKey tagKey, Consumer>> callback) { Registry registry = ((Registry>) Registry.REGISTRY).get((ResourceKey>) tagKey.registry()); requestTagData(tagKey.registry(), result -> { - callback.accept(result.flatMap(dataMap -> dataMap != null ? resolveTag(tagKey, registry, dataMap) : DataResult.error("No tag data"))); + callback.accept(result.flatMap(dataMap -> dataMap != null ? resolveTag(tagKey, registry, dataMap).orElse(DataResult.error("No tag data")) : DataResult.error("No tag data"))); }); } - private static DataResult> resolveTag(TagKey tagKey, Registry registry, Map tagDataMap) { + private static Optional>> resolveTag(TagKey tagKey, Registry registry, Map tagDataMap) { TagData tagData = tagDataMap.get(tagKey.location()); - if (tagData == null) return DataResult.error("Tag Missing: " + tagKey.location()); + if (tagData == null) return Optional.empty(); TagNode self = TagNode.ofReference(tagKey); List> holders = new ArrayList<>(); @@ -201,11 +201,14 @@ public class TagNodes { for (ResourceLocation childTagId : tagData.otherTags()) { TagKey childTagKey = TagKey.create(tagKey.registry(), childTagId); if (registry.getTag(childTagKey).isPresent()) { - DataResult> result = resolveTag(childTagKey, registry, tagDataMap); - if (result.error().isPresent()) return DataResult.error(result.error().get().message()); - self.addChild(result.result().get()); + Optional>> resultOptional = resolveTag(childTagKey, registry, tagDataMap); + if (resultOptional.isPresent()) { + DataResult> result = resultOptional.get(); + if (result.error().isPresent()) return Optional.of(DataResult.error(result.error().get().message())); + self.addChild(result.result().get()); + } } } - return DataResult.success(self); + return Optional.of(DataResult.success(self)); } } -- cgit