diff --git a/src/main/java/org/betterx/bclib/api/v3/datagen/TagDataProvider.java b/src/main/java/org/betterx/bclib/api/v3/datagen/TagDataProvider.java index 0be1374e..aed43aff 100644 --- a/src/main/java/org/betterx/bclib/api/v3/datagen/TagDataProvider.java +++ b/src/main/java/org/betterx/bclib/api/v3/datagen/TagDataProvider.java @@ -48,16 +48,11 @@ public class TagDataProvider extends FabricTagProvider { @Override protected void addTags(HolderLookup.Provider arg) { tagRegistry.forEachTag((tag, locs, tags) -> { + if (locs.isEmpty() && tags.isEmpty()) return; + final FabricTagProvider.FabricTagBuilder builder = getOrCreateTagBuilder(tag); - - boolean modTag = shouldAdd(tag.location()); - locs.stream() - .filter(loc -> modTag || this.shouldAdd(loc)) - .forEach(builder::add); - - tags.stream() - .filter(tagKey -> modTag || this.shouldAdd(tagKey.location())) - .forEach(builder::addTag); - }); + locs.forEach(builder::add); + tags.forEach(builder::addTag); + }, (tag, loc) -> shouldAdd(tag.location()) || this.shouldAdd(loc)); } } diff --git a/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java b/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java index bf4286b4..0271ad65 100644 --- a/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java +++ b/src/main/java/org/betterx/datagen/bclib/tests/TestBiomes.java @@ -103,7 +103,7 @@ public class TestBiomes extends TagDataProvider { FabricDataOutput output, CompletableFuture registriesFuture ) { - super(TagManager.BIOMES, List.of(BCLib.MOD_ID, WorldsTogether.MOD_ID), output, registriesFuture); + super(TagManager.BIOMES, List.of(BCLib.MOD_ID, WorldsTogether.MOD_ID, "c"), output, registriesFuture); } public static void bootstrap(BootstapContext bootstrapContext) { diff --git a/src/main/java/org/betterx/worlds/together/tag/v3/TagRegistry.java b/src/main/java/org/betterx/worlds/together/tag/v3/TagRegistry.java index d0fbc719..52c638f4 100644 --- a/src/main/java/org/betterx/worlds/together/tag/v3/TagRegistry.java +++ b/src/main/java/org/betterx/worlds/together/tag/v3/TagRegistry.java @@ -24,6 +24,7 @@ import com.google.common.collect.Sets; import java.util.*; import java.util.function.BiConsumer; +import java.util.function.BiPredicate; import java.util.function.Function; public class TagRegistry { @@ -264,16 +265,25 @@ public class TagRegistry { } public void forEachTag(TriConsumer, List, List>> consumer) { + forEachTag(consumer, null); + } + + public void forEachTag( + TriConsumer, List, List>> consumer, + BiPredicate, ResourceLocation> allow + ) { tags.forEach((tag, set) -> { List locations = new LinkedList<>(); List> tags = new LinkedList<>(); set.forEach(e -> { ExtraCodecs.TagOrElementLocation t = e.elementOrTag(); - if (t.tag()) { - tags.add(TagKey.create(registryKey, t.id())); - } else { - locations.add(t.id()); + if (allow == null || allow.test(tag, t.id())) { + if (t.tag()) { + tags.add(TagKey.create(registryKey, t.id())); + } else { + locations.add(t.id()); + } } });