diff --git a/src/main/java/org/betterx/bclib/api/tag/CommonBlockTags.java b/src/main/java/org/betterx/bclib/api/tag/CommonBlockTags.java index f264807b..74a10aa2 100644 --- a/src/main/java/org/betterx/bclib/api/tag/CommonBlockTags.java +++ b/src/main/java/org/betterx/bclib/api/tag/CommonBlockTags.java @@ -1,5 +1,6 @@ package org.betterx.bclib.api.tag; +import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; @@ -26,4 +27,16 @@ public class CommonBlockTags { public static final TagKey MINABLE_WITH_HAMMER = TagAPI.makeCommonBlockTag("mineable/hammer"); public static final TagKey IS_OBSIDIAN = TagAPI.makeCommonBlockTag("is_obsidian"); + public static final TagKey STALAGMITE_REPLACEABLE = TagAPI.makeCommonBlockTag("stalagmite_replaceable_blocks"); + + static { + TagAPI.BLOCKS.addOtherTags(STALAGMITE_REPLACEABLE, + BlockTags.DRIPSTONE_REPLACEABLE, + BlockTags.BASE_STONE_NETHER, + BlockTags.BASE_STONE_OVERWORLD, + NETHER_STONES, + SOUL_GROUND, + NETHER_MYCELIUM, + END_STONES); + } } diff --git a/src/main/java/org/betterx/bclib/api/tag/TagAPI.java b/src/main/java/org/betterx/bclib/api/tag/TagAPI.java index 8f3f5349..d1880e55 100644 --- a/src/main/java/org/betterx/bclib/api/tag/TagAPI.java +++ b/src/main/java/org/betterx/bclib/api/tag/TagAPI.java @@ -29,8 +29,8 @@ public class TagAPI { public static TagType.RegistryBacked BLOCKS = registerType(Registry.BLOCK); public static TagType.RegistryBacked ITEMS = registerType(Registry.ITEM); public static TagType.Simple BIOMES = registerType(Registry.BIOME_REGISTRY, - "tags/worldgen/biome", - b -> BiomeAPI.getBiomeID(b)); + "tags/worldgen/biome", + b -> BiomeAPI.getBiomeID(b)); public static TagType.RegistryBacked registerType(DefaultedRegistry registry) { TagType type = new TagType.RegistryBacked<>(registry); @@ -45,9 +45,9 @@ public class TagAPI { String directory, Function locationProvider) { return (TagType.Simple) TYPES.computeIfAbsent(directory, - (dir) -> new TagType.Simple<>(registry, - dir, - locationProvider)); + (dir) -> new TagType.Simple<>(registry, + dir, + locationProvider)); } public static TagType.UnTyped registerType(ResourceKey> registry, String directory) { @@ -240,19 +240,6 @@ public class TagAPI { if (type != null) { type.apply(tagsMap); } - -// final BiConsumer> consumer; -// consumer = (id, ids) -> apply(tagsMap.computeIfAbsent(id, key -> Tag.Builder.tag()), ids); -// -// if ("tags/blocks".equals(directory)) { -// TAGS_BLOCK.forEach(consumer); -// } -// else if ("tags/items".equals(directory)) { -// TAGS_ITEM.forEach(consumer); -// } -// else if ("tags/worldgen/biome".equals(directory)) { -// TAGS_BIOME.forEach(consumer); -// } return tagsMap; } diff --git a/src/main/java/org/betterx/bclib/api/tag/TagType.java b/src/main/java/org/betterx/bclib/api/tag/TagType.java index 087e64ad..16c17f07 100644 --- a/src/main/java/org/betterx/bclib/api/tag/TagType.java +++ b/src/main/java/org/betterx/bclib/api/tag/TagType.java @@ -39,7 +39,7 @@ public class TagType { } return null; } - ); + ); this.registry = registry; } @@ -147,6 +147,33 @@ public class TagType { } } + public void addOtherTags(TagKey tagID, TagKey... tags) { + if (isFrozen) BCLib.LOGGER.warning("Adding Tag " + tagID + " after the API was frozen."); + Set set = getSetForTag(tagID); + for (TagKey tag : tags) { + ResourceLocation id = tag.location(); + if (id != null) { + set.add(id); + } + } + } + + /** + * Adds one Tag to multiple Elements. + * + * @param tagID {@link TagKey< Biome >} tag ID. + * @param locations array of Elements to add into tag. + */ + protected void addUnchecked(TagKey tagID, ResourceLocation... locations) { + if (isFrozen) BCLib.LOGGER.warning("Adding Tag " + tagID + " after the API was frozen."); + Set set = getSetForTag(tagID); + for (ResourceLocation id : locations) { + if (id != null) { + set.add(id); + } + } + } + /** * Adds one Tag to multiple Elements. *