Add fabric-convention-tags-v1 (#2063)

* Add framework for common-tags-v1

* Add javadoc to fabric tool tags

* Fix wrong package arrangement

* Add some more tags

* Add more biome tags
Thanks to TelepathicGrunt for the suggestions

* Update fabric-common-tags-api-v1/src/main/java/net/fabricmc/fabric/api/tags/v1/CommonEnchantmentTags.java

Co-authored-by: haykam821 <24855774+haykam821@users.noreply.github.com>

* Update fabric-common-tags-api-v1/src/main/java/net/fabricmc/fabric/api/tags/v1/CommonEnchantmentTags.java

Co-authored-by: haykam821 <24855774+haykam821@users.noreply.github.com>

* Clarify enchantment tags

* Add no-shulker tag

* Add minecart tag

* Begin work on datagen and populating tags

* Add bucket tags

* First pass at populating biome tags

* Add boat tag

* Fix missing inclusion of f:shears into c:shears

* Hide fabric tool tags in datagen

* Add weapon damage enhancement tag

* Change impl package name to be inline with rest of fapi

* Rename enchantment tags

* Some cleanup

* Populate blocktag datagen
Remove crops tag

* Add javadoc links to vanilla counterparts

* Move datagen to its own sourceset

* Fix package names for checkstyle

* Populate more entries

* Remove exclusion tag

* Add license headers
Fix checkstyle

* Add missing nether quarts to ores tag

* Use `worldgen/biome` instead of `biomes` for biome tags

Co-authored-by: haykam821 <24855774+haykam821@users.noreply.github.com>

* Manually include all biomes for overworld

* Remove ancient debris from NetheriteOres

* Add and populate glass tags

* Add and populate movement enhancement

* Break up item tags

* Add armour damage reduction tag

* Add missing ore and related tags

* Fix quartz tags

* Add floral tag

* Add golden carrot

* Correct some biome tag issues

* Separate SNOWY_PLAINS and PLAINS

* Add SNOWY tag and remove snowy biomes from ICY

* Correct enchantment tag
Remove silk touch tag

* Fix more biome issues

* Add deep and shllow ocean tags

* Add no-move tag

* Remove netherite ores

* Add shulker tags

* Add raw ore

* Add dye tags

* Fif dye tags

* Fix typo

* Document some biome tags where the naming may not be clear

* Remove tag mirroring for blocks and items

* Rename module
Remove unused methods

* Rename impl package

* Rename packages and module

* Rename folder

* Rename api classes

* Add generateResources task to cover all resource generation tasks.

* Add generated tags to repo

* Fix ocean tag excluding shallow ocean

* Iterate registry to generate foods tag

* Remove cache, add to gitignore

* Rename generated folder

Co-authored-by: haykam821 <24855774+haykam821@users.noreply.github.com>
Co-authored-by: modmuss50 <modmuss50@gmail.com>
This commit is contained in:
Deximus-Maximus 2022-04-17 14:23:48 -04:00 committed by modmuss50
parent 640dbc8a5f
commit bd8a4a1845
140 changed files with 2694 additions and 0 deletions

View file

@ -187,6 +187,11 @@ allprojects {
}
}
}
// Run this task after updating minecraft to regenerate any required resources
task generateResources {
group = "fabric"
}
}
// Apply auxiliary buildscripts to submodules

1
fabric-convention-tags-v1/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/src/generated/resources/.cache/

View file

@ -0,0 +1,44 @@
archivesBaseName = "fabric-convention-tags-v1"
version = getSubprojectVersion(project)
moduleDependencies(project, [
'fabric-api-base'
])
sourceSets {
main {
resources {
srcDirs += [
'src/generated/resources'
]
}
}
datagen {
compileClasspath += main.compileClasspath
runtimeClasspath += main.runtimeClasspath
compileClasspath += main.output
runtimeClasspath += main.output
}
}
dependencies {
datagenImplementation project(path: ":fabric-data-generation-api-v1", configuration: 'namedElements')
}
loom {
runs {
datagen {
inherit server
name "Data Generation"
vmArg "-Dfabric-api.datagen"
vmArg "-Dfabric-api.datagen.output-dir=${file("src/generated/resources")}"
vmArg "-Dfabric-api.datagen.strict-validation"
ideConfigGenerated = true
runDir "build/datagen"
source sourceSets.datagen
}
}
}
generateResources.dependsOn runDatagen

View file

@ -0,0 +1,38 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.BiomeTagGenerator;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.BlockTagGenerator;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.EnchantmentTagGenerator;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.EntityTypeTagGenerator;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.FluidTagGenerator;
import net.fabricmc.fabric.impl.tag.convention.datagen.generators.ItemTagGenerator;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
public class DatagenEntrypoint implements DataGeneratorEntrypoint {
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
fabricDataGenerator.addProvider(ItemTagGenerator::new);
fabricDataGenerator.addProvider(FluidTagGenerator::new);
fabricDataGenerator.addProvider(EnchantmentTagGenerator::new);
fabricDataGenerator.addProvider(BlockTagGenerator::new);
fabricDataGenerator.addProvider(BiomeTagGenerator::new);
fabricDataGenerator.addProvider(EntityTypeTagGenerator::new);
}
}

View file

@ -0,0 +1,244 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.tag.BiomeTags;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.BiomeKeys;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBiomeTags;
public class BiomeTagGenerator extends FabricTagProvider.DynamicRegistryTagProvider<Biome> {
public BiomeTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator, Registry.BIOME_KEY, "worldgen/biome", "Biome Tags");
}
@Override
protected void generateTags() {
generateDimensionTags();
generateCategoryTags();
generateOtherBiomeTypes();
generateClimateAndVegetationTags();
generateTerrainDescriptorTags();
}
private void generateDimensionTags() {
getOrCreateTagBuilder(ConventionalBiomeTags.IN_NETHER)
.addOptionalTag(BiomeTags.IS_NETHER)
.add(BiomeKeys.CRIMSON_FOREST)
.add(BiomeKeys.WARPED_FOREST)
.add(BiomeKeys.NETHER_WASTES)
.add(BiomeKeys.SOUL_SAND_VALLEY)
.add(BiomeKeys.BASALT_DELTAS);
getOrCreateTagBuilder(ConventionalBiomeTags.IN_THE_END)
.add(BiomeKeys.END_BARRENS)
.add(BiomeKeys.END_MIDLANDS)
.add(BiomeKeys.END_HIGHLANDS)
.add(BiomeKeys.THE_END)
.add(BiomeKeys.SMALL_END_ISLANDS);
// We avoid the vanilla group tags here as mods may add to them without actually spawning them in the overworld
getOrCreateTagBuilder(ConventionalBiomeTags.IN_OVERWORLD)
.add(BiomeKeys.RIVER).add(BiomeKeys.FROZEN_RIVER)
.add(BiomeKeys.COLD_OCEAN).add(BiomeKeys.DEEP_COLD_OCEAN)
.add(BiomeKeys.DEEP_FROZEN_OCEAN).add(BiomeKeys.DEEP_OCEAN)
.add(BiomeKeys.DEEP_LUKEWARM_OCEAN).add(BiomeKeys.WARM_OCEAN).add(BiomeKeys.LUKEWARM_OCEAN)
.add(BiomeKeys.FROZEN_OCEAN).add(BiomeKeys.OCEAN)
.add(BiomeKeys.BEACH).add(BiomeKeys.PLAINS)
.add(BiomeKeys.SUNFLOWER_PLAINS).add(BiomeKeys.SNOWY_PLAINS)
.add(BiomeKeys.ICE_SPIKES).add(BiomeKeys.DESERT)
.add(BiomeKeys.FOREST).add(BiomeKeys.FLOWER_FOREST)
.add(BiomeKeys.BIRCH_FOREST).add(BiomeKeys.DARK_FOREST)
.add(BiomeKeys.OLD_GROWTH_BIRCH_FOREST).add(BiomeKeys.OLD_GROWTH_PINE_TAIGA)
.add(BiomeKeys.OLD_GROWTH_SPRUCE_TAIGA).add(BiomeKeys.TAIGA)
.add(BiomeKeys.SNOWY_TAIGA).add(BiomeKeys.SAVANNA)
.add(BiomeKeys.SAVANNA_PLATEAU).add(BiomeKeys.WINDSWEPT_HILLS)
.add(BiomeKeys.WINDSWEPT_GRAVELLY_HILLS).add(BiomeKeys.WINDSWEPT_FOREST)
.add(BiomeKeys.WINDSWEPT_SAVANNA).add(BiomeKeys.JUNGLE).add(BiomeKeys.SPARSE_JUNGLE)
.add(BiomeKeys.BAMBOO_JUNGLE).add(BiomeKeys.BADLANDS).add(BiomeKeys.ERODED_BADLANDS)
.add(BiomeKeys.WOODED_BADLANDS).add(BiomeKeys.MEADOW).add(BiomeKeys.GROVE)
.add(BiomeKeys.SNOWY_SLOPES).add(BiomeKeys.FROZEN_PEAKS).add(BiomeKeys.JAGGED_PEAKS)
.add(BiomeKeys.STONY_PEAKS).add(BiomeKeys.MUSHROOM_FIELDS).add(BiomeKeys.DRIPSTONE_CAVES)
.add(BiomeKeys.LUSH_CAVES).add(BiomeKeys.SNOWY_BEACH).add(BiomeKeys.SWAMP).add(BiomeKeys.STONY_SHORE);
}
/**
* See {@link Biome.Category} for details.
*/
private void generateCategoryTags() {
getOrCreateTagBuilder(ConventionalBiomeTags.TAIGA)
.addOptionalTag(BiomeTags.IS_TAIGA);
getOrCreateTagBuilder(ConventionalBiomeTags.EXTREME_HILLS)
.add(BiomeKeys.WINDSWEPT_GRAVELLY_HILLS)
.add(BiomeKeys.WINDSWEPT_HILLS);
getOrCreateTagBuilder(ConventionalBiomeTags.JUNGLE)
.addOptionalTag(BiomeTags.IS_JUNGLE);
getOrCreateTagBuilder(ConventionalBiomeTags.MESA)
.add(BiomeKeys.WOODED_BADLANDS)
.add(BiomeKeys.ERODED_BADLANDS)
.add(BiomeKeys.BADLANDS);
getOrCreateTagBuilder(ConventionalBiomeTags.PLAINS)
.add(BiomeKeys.SUNFLOWER_PLAINS)
.add(BiomeKeys.PLAINS);
getOrCreateTagBuilder(ConventionalBiomeTags.SAVANNA)
.add(BiomeKeys.SAVANNA_PLATEAU)
.add(BiomeKeys.WINDSWEPT_SAVANNA)
.add(BiomeKeys.SAVANNA);
getOrCreateTagBuilder(ConventionalBiomeTags.ICY)
.add(BiomeKeys.FROZEN_RIVER)
.add(BiomeKeys.FROZEN_PEAKS)
.add(BiomeKeys.DEEP_FROZEN_OCEAN)
.add(BiomeKeys.ICE_SPIKES)
.add(BiomeKeys.FROZEN_OCEAN);
getOrCreateTagBuilder(ConventionalBiomeTags.SNOWY)
.add(BiomeKeys.SNOWY_BEACH)
.add(BiomeKeys.SNOWY_PLAINS)
.add(BiomeKeys.SNOWY_SLOPES)
.add(BiomeKeys.SNOWY_TAIGA);
getOrCreateTagBuilder(ConventionalBiomeTags.BEACH)
.addOptionalTag(BiomeTags.IS_BEACH)
.add(BiomeKeys.STONY_SHORE);
getOrCreateTagBuilder(ConventionalBiomeTags.FOREST)
.addOptionalTag(BiomeTags.IS_FOREST);
getOrCreateTagBuilder(ConventionalBiomeTags.OCEAN)
.addOptionalTag(ConventionalBiomeTags.DEEP_OCEAN)
.addOptionalTag(ConventionalBiomeTags.SHALLOW_OCEAN)
.addOptionalTag(BiomeTags.IS_OCEAN);
getOrCreateTagBuilder(ConventionalBiomeTags.DESERT)
.add(BiomeKeys.DESERT);
getOrCreateTagBuilder(ConventionalBiomeTags.RIVER)
.addOptionalTag(BiomeTags.IS_RIVER);
getOrCreateTagBuilder(ConventionalBiomeTags.SWAMP)
.add(BiomeKeys.SWAMP);
getOrCreateTagBuilder(ConventionalBiomeTags.MUSHROOM)
.add(BiomeKeys.MUSHROOM_FIELDS);
getOrCreateTagBuilder(ConventionalBiomeTags.UNDERGROUND)
.addOptionalTag(ConventionalBiomeTags.CAVES);
getOrCreateTagBuilder(ConventionalBiomeTags.MOUNTAIN)
.addOptionalTag(BiomeTags.IS_MOUNTAIN);
}
private void generateOtherBiomeTypes() {
getOrCreateTagBuilder(ConventionalBiomeTags.BADLANDS)
.addOptionalTag(ConventionalBiomeTags.MESA)
.addOptionalTag(BiomeTags.IS_BADLANDS);
getOrCreateTagBuilder(ConventionalBiomeTags.CAVES)
.add(BiomeKeys.DRIPSTONE_CAVES)
.add(BiomeKeys.LUSH_CAVES);
getOrCreateTagBuilder(ConventionalBiomeTags.VOID)
.add(BiomeKeys.THE_VOID);
getOrCreateTagBuilder(ConventionalBiomeTags.DEEP_OCEAN)
.add(BiomeKeys.DEEP_FROZEN_OCEAN)
.add(BiomeKeys.DEEP_LUKEWARM_OCEAN)
.add(BiomeKeys.DEEP_COLD_OCEAN)
.add(BiomeKeys.DEEP_OCEAN);
getOrCreateTagBuilder(ConventionalBiomeTags.SHALLOW_OCEAN)
.add(BiomeKeys.OCEAN)
.add(BiomeKeys.LUKEWARM_OCEAN)
.add(BiomeKeys.FROZEN_OCEAN)
.add(BiomeKeys.COLD_OCEAN)
.add(BiomeKeys.WARM_OCEAN);
}
private void generateClimateAndVegetationTags() {
getOrCreateTagBuilder(ConventionalBiomeTags.CLIMATE_COLD)
.add(BiomeKeys.GROVE)
.add(BiomeKeys.JAGGED_PEAKS)
.addOptionalTag(ConventionalBiomeTags.ICY);
getOrCreateTagBuilder(ConventionalBiomeTags.CLIMATE_TEMPERATE)
.add(BiomeKeys.FOREST)
.add(BiomeKeys.SUNFLOWER_PLAINS)
.add(BiomeKeys.SWAMP)
.add(BiomeKeys.STONY_SHORE)
.add(BiomeKeys.DARK_FOREST)
.add(BiomeKeys.WINDSWEPT_FOREST)
.add(BiomeKeys.BIRCH_FOREST)
.add(BiomeKeys.OLD_GROWTH_BIRCH_FOREST)
.add(BiomeKeys.MEADOW)
.add(BiomeKeys.PLAINS);
getOrCreateTagBuilder(ConventionalBiomeTags.CLIMATE_HOT)
.addOptionalTag(ConventionalBiomeTags.JUNGLE)
.addOptionalTag(ConventionalBiomeTags.SAVANNA)
.addOptionalTag(ConventionalBiomeTags.DESERT)
.addOptionalTag(ConventionalBiomeTags.BADLANDS)
.add(BiomeKeys.STONY_PEAKS)
.addOptionalTag(ConventionalBiomeTags.MUSHROOM)
.addOptionalTag(ConventionalBiomeTags.IN_NETHER);
getOrCreateTagBuilder(ConventionalBiomeTags.CLIMATE_WET)
.addOptionalTag(ConventionalBiomeTags.AQUATIC)
.addOptionalTag(ConventionalBiomeTags.SWAMP)
.add(BiomeKeys.LUSH_CAVES)
.addOptionalTag(ConventionalBiomeTags.JUNGLE);
getOrCreateTagBuilder(ConventionalBiomeTags.CLIMATE_DRY)
.addOptionalTag(ConventionalBiomeTags.IN_NETHER)
.addOptionalTag(ConventionalBiomeTags.BADLANDS)
.addOptionalTag(ConventionalBiomeTags.DESERT)
.addOptionalTag(ConventionalBiomeTags.SAVANNA);
getOrCreateTagBuilder(ConventionalBiomeTags.VEGETATION_DENSE)
.addOptionalTag(ConventionalBiomeTags.JUNGLE)
.add(BiomeKeys.SUNFLOWER_PLAINS);
getOrCreateTagBuilder(ConventionalBiomeTags.VEGETATION_SPARSE)
.addOptionalTag(ConventionalBiomeTags.SAVANNA)
.addOptionalTag(ConventionalBiomeTags.DESERT)
.addOptionalTag(ConventionalBiomeTags.DEAD)
.add(BiomeKeys.LUSH_CAVES)
.addOptionalTag(ConventionalBiomeTags.WASTELAND);
getOrCreateTagBuilder(ConventionalBiomeTags.TREE_CONIFEROUS)
.add(BiomeKeys.GROVE)
.addOptionalTag(ConventionalBiomeTags.TAIGA);
getOrCreateTagBuilder(ConventionalBiomeTags.TREE_DECIDUOUS)
.add(BiomeKeys.FOREST)
.add(BiomeKeys.WINDSWEPT_FOREST)
.add(BiomeKeys.FLOWER_FOREST)
.add(BiomeKeys.BIRCH_FOREST)
.add(BiomeKeys.DARK_FOREST)
.add(BiomeKeys.OLD_GROWTH_BIRCH_FOREST);
getOrCreateTagBuilder(ConventionalBiomeTags.TREE_JUNGLE)
.addOptionalTag(ConventionalBiomeTags.JUNGLE);
getOrCreateTagBuilder(ConventionalBiomeTags.TREE_SAVANNA)
.addOptionalTag(ConventionalBiomeTags.SAVANNA);
getOrCreateTagBuilder(ConventionalBiomeTags.FLORAL)
.add(BiomeKeys.SUNFLOWER_PLAINS)
.add(BiomeKeys.FLOWER_FOREST);
}
private void generateTerrainDescriptorTags() {
getOrCreateTagBuilder(ConventionalBiomeTags.MOUNTAIN_PEAK)
.add(BiomeKeys.FROZEN_PEAKS)
.add(BiomeKeys.JAGGED_PEAKS)
.add(BiomeKeys.STONY_PEAKS);
getOrCreateTagBuilder(ConventionalBiomeTags.MOUNTAIN_SLOPE)
.add(BiomeKeys.SNOWY_SLOPES);
getOrCreateTagBuilder(ConventionalBiomeTags.AQUATIC)
.addOptionalTag(ConventionalBiomeTags.OCEAN)
.addOptionalTag(ConventionalBiomeTags.RIVER);
getOrCreateTagBuilder(ConventionalBiomeTags.DEAD);
getOrCreateTagBuilder(ConventionalBiomeTags.WASTELAND);
getOrCreateTagBuilder(ConventionalBiomeTags.END_ISLANDS);
getOrCreateTagBuilder(ConventionalBiomeTags.NETHER_FORESTS)
.add(BiomeKeys.WARPED_FOREST)
.add(BiomeKeys.CRIMSON_FOREST);
getOrCreateTagBuilder(ConventionalBiomeTags.SNOWY_PLAINS)
.add(BiomeKeys.SNOWY_PLAINS);
getOrCreateTagBuilder(ConventionalBiomeTags.STONY_SHORES)
.add(BiomeKeys.STONY_SHORE);
getOrCreateTagBuilder(ConventionalBiomeTags.FLOWER_FORESTS)
.add(BiomeKeys.FLOWER_FOREST);
}
}

View file

@ -0,0 +1,115 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.block.Blocks;
import net.minecraft.tag.BlockTags;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags;
public class BlockTagGenerator extends FabricTagProvider.BlockTagProvider {
public BlockTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator);
}
@Override
protected void generateTags() {
getOrCreateTagBuilder(ConventionalBlockTags.QUARTZ_ORES)
.add(Blocks.NETHER_QUARTZ_ORE);
getOrCreateTagBuilder(ConventionalBlockTags.ORES)
.addOptionalTag(BlockTags.REDSTONE_ORES)
.addOptionalTag(BlockTags.COPPER_ORES)
.addOptionalTag(BlockTags.GOLD_ORES)
.addOptionalTag(BlockTags.IRON_ORES)
.addOptionalTag(BlockTags.COAL_ORES)
.addOptionalTag(BlockTags.EMERALD_ORES)
.addOptionalTag(BlockTags.LAPIS_ORES)
.addOptionalTag(BlockTags.DIAMOND_ORES)
.addOptionalTag(ConventionalBlockTags.QUARTZ_ORES);
getOrCreateTagBuilder(ConventionalBlockTags.CHESTS)
.add(Blocks.CHEST)
.add(Blocks.ENDER_CHEST)
.add(Blocks.TRAPPED_CHEST);
getOrCreateTagBuilder(ConventionalBlockTags.BOOKSHELVES)
.add(Blocks.BOOKSHELF);
generateGlassTags();
generateShulkerTag();
}
private void generateShulkerTag() {
getOrCreateTagBuilder(ConventionalBlockTags.SHULKER_BOXES)
.add(Blocks.SHULKER_BOX)
.add(Blocks.BLUE_SHULKER_BOX)
.add(Blocks.BROWN_SHULKER_BOX)
.add(Blocks.CYAN_SHULKER_BOX)
.add(Blocks.GRAY_SHULKER_BOX)
.add(Blocks.GREEN_SHULKER_BOX)
.add(Blocks.LIGHT_BLUE_SHULKER_BOX)
.add(Blocks.LIGHT_GRAY_SHULKER_BOX)
.add(Blocks.LIME_SHULKER_BOX)
.add(Blocks.MAGENTA_SHULKER_BOX)
.add(Blocks.ORANGE_SHULKER_BOX)
.add(Blocks.PINK_SHULKER_BOX)
.add(Blocks.PURPLE_SHULKER_BOX)
.add(Blocks.RED_SHULKER_BOX)
.add(Blocks.WHITE_SHULKER_BOX)
.add(Blocks.YELLOW_SHULKER_BOX)
.add(Blocks.BLACK_SHULKER_BOX);
}
private void generateGlassTags() {
getOrCreateTagBuilder(ConventionalBlockTags.GLASS_BLOCKS)
.add(Blocks.GLASS)
.add(Blocks.GRAY_STAINED_GLASS)
.add(Blocks.BLACK_STAINED_GLASS)
.add(Blocks.ORANGE_STAINED_GLASS)
.add(Blocks.BLUE_STAINED_GLASS)
.add(Blocks.BROWN_STAINED_GLASS)
.add(Blocks.CYAN_STAINED_GLASS)
.add(Blocks.GREEN_STAINED_GLASS)
.add(Blocks.LIGHT_BLUE_STAINED_GLASS)
.add(Blocks.LIGHT_GRAY_STAINED_GLASS)
.add(Blocks.LIME_STAINED_GLASS)
.add(Blocks.MAGENTA_STAINED_GLASS)
.add(Blocks.PINK_STAINED_GLASS)
.add(Blocks.PURPLE_STAINED_GLASS)
.add(Blocks.RED_STAINED_GLASS)
.add(Blocks.TINTED_GLASS)
.add(Blocks.WHITE_STAINED_GLASS)
.add(Blocks.YELLOW_STAINED_GLASS);
getOrCreateTagBuilder(ConventionalBlockTags.GLASS_PANES)
.add(Blocks.GLASS_PANE)
.add(Blocks.GRAY_STAINED_GLASS_PANE)
.add(Blocks.BLACK_STAINED_GLASS_PANE)
.add(Blocks.ORANGE_STAINED_GLASS_PANE)
.add(Blocks.BLUE_STAINED_GLASS_PANE)
.add(Blocks.BROWN_STAINED_GLASS_PANE)
.add(Blocks.CYAN_STAINED_GLASS_PANE)
.add(Blocks.GREEN_STAINED_GLASS_PANE)
.add(Blocks.LIGHT_BLUE_STAINED_GLASS_PANE)
.add(Blocks.LIGHT_GRAY_STAINED_GLASS_PANE)
.add(Blocks.LIME_STAINED_GLASS_PANE)
.add(Blocks.MAGENTA_STAINED_GLASS_PANE)
.add(Blocks.PINK_STAINED_GLASS_PANE)
.add(Blocks.PURPLE_STAINED_GLASS_PANE)
.add(Blocks.RED_STAINED_GLASS_PANE)
.add(Blocks.WHITE_STAINED_GLASS_PANE)
.add(Blocks.YELLOW_STAINED_GLASS_PANE);
}
}

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.util.registry.Registry;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalEnchantmentTags;
public class EnchantmentTagGenerator extends FabricTagProvider<Enchantment> {
public EnchantmentTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator, Registry.ENCHANTMENT, "Enchantment Tags");
}
@Override
protected void generateTags() {
getOrCreateTagBuilder(ConventionalEnchantmentTags.INCREASES_BLOCK_DROPS)
.add(Enchantments.FORTUNE);
getOrCreateTagBuilder(ConventionalEnchantmentTags.INCREASES_ENTITY_DROPS)
.add(Enchantments.LOOTING);
getOrCreateTagBuilder(ConventionalEnchantmentTags.WEAPON_DAMAGE_ENHANCEMENT)
.add(Enchantments.BANE_OF_ARTHROPODS)
.add(Enchantments.IMPALING)
.add(Enchantments.SMITE)
.add(Enchantments.POWER)
.add(Enchantments.SHARPNESS);
getOrCreateTagBuilder(ConventionalEnchantmentTags.ENTITY_MOVEMENT_ENHANCEMENT)
.add(Enchantments.DEPTH_STRIDER)
.add(Enchantments.SOUL_SPEED);
getOrCreateTagBuilder(ConventionalEnchantmentTags.ENTITY_DEFENSE_ENHANCEMENT)
.add(Enchantments.FEATHER_FALLING)
.add(Enchantments.PROTECTION)
.add(Enchantments.BLAST_PROTECTION)
.add(Enchantments.PROJECTILE_PROTECTION)
.add(Enchantments.FIRE_PROTECTION)
.add(Enchantments.RESPIRATION);
}
}

View file

@ -0,0 +1,46 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.entity.EntityType;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalEntityTypeTags;
public class EntityTypeTagGenerator extends FabricTagProvider.EntityTypeTagProvider {
public EntityTypeTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator);
}
@Override
protected void generateTags() {
getOrCreateTagBuilder(ConventionalEntityTypeTags.BOSSES)
.add(EntityType.ENDER_DRAGON)
.add(EntityType.WITHER);
getOrCreateTagBuilder(ConventionalEntityTypeTags.MINECARTS)
.add(EntityType.MINECART)
.add(EntityType.TNT_MINECART)
.add(EntityType.CHEST_MINECART)
.add(EntityType.FURNACE_MINECART)
.add(EntityType.COMMAND_BLOCK_MINECART)
.add(EntityType.HOPPER_MINECART)
.add(EntityType.SPAWNER_MINECART);
getOrCreateTagBuilder(ConventionalEntityTypeTags.BOATS)
.add(EntityType.BOAT);
}
}

View file

@ -0,0 +1,37 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.tag.FluidTags;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalFluidTags;
public class FluidTagGenerator extends FabricTagProvider.FluidTagProvider {
public FluidTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator);
}
@Override
protected void generateTags() {
getOrCreateTagBuilder(ConventionalFluidTags.WATER)
.addOptionalTag(FluidTags.WATER);
getOrCreateTagBuilder(ConventionalFluidTags.LAVA)
.addOptionalTag(FluidTags.LAVA);
}
}

View file

@ -0,0 +1,317 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import net.minecraft.item.Items;
import net.minecraft.tag.ItemTags;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalItemTags;
public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
/**
* @deprecated Use {@link ConventionalItemTags#PICKAXES}
*/
@Deprecated
private static final Identifier FABRIC_PICKAXES = createFabricId("pickaxes");
/**
* @deprecated Use {@link ConventionalItemTags#SHOVELS}
*/
@Deprecated
private static final Identifier FABRIC_SHOVELS = createFabricId("shovels");
/**
* @deprecated Use {@link ConventionalItemTags#HOES}
*/
@Deprecated
private static final Identifier FABRIC_HOES = createFabricId("hoes");
/**
* @deprecated Use {@link ConventionalItemTags#AXES}
*/
@Deprecated
private static final Identifier FABRIC_AXES = createFabricId("axes");
/**
* @deprecated Use {@link ConventionalItemTags#SHEARS}
*/
@Deprecated
private static final Identifier FABRIC_SHEARS = createFabricId("shears");
/**
* @deprecated Use {@link ConventionalItemTags#SWORDS}
*/
@Deprecated
private static final Identifier FABRIC_SWORDS = createFabricId("swords");
public ItemTagGenerator(FabricDataGenerator dataGenerator) {
super(dataGenerator);
}
@Override
protected void generateTags() {
generateToolTags();
generateBucketTags();
generateOreAndRelatedTags();
generateConsumableTags();
generateGlassTags();
generateShulkerTag();
generateDyeTags();
}
private void generateDyeTags() {
getOrCreateTagBuilder(ConventionalItemTags.DYES)
.addOptionalTag(ConventionalItemTags.BLACK_DYES)
.addOptionalTag(ConventionalItemTags.BLUE_DYES)
.addOptionalTag(ConventionalItemTags.BROWN_DYES)
.addOptionalTag(ConventionalItemTags.GREEN_DYES)
.addOptionalTag(ConventionalItemTags.RED_DYES)
.addOptionalTag(ConventionalItemTags.WHITE_DYES)
.addOptionalTag(ConventionalItemTags.YELLOW_DYES)
.addOptionalTag(ConventionalItemTags.LIGHT_GRAY_DYES)
.addOptionalTag(ConventionalItemTags.LIGHT_BLUE_DYES)
.addOptionalTag(ConventionalItemTags.LIME_DYES)
.addOptionalTag(ConventionalItemTags.MAGENTA_DYES)
.addOptionalTag(ConventionalItemTags.ORANGE_DYES)
.addOptionalTag(ConventionalItemTags.PINK_DYES)
.addOptionalTag(ConventionalItemTags.CYAN_DYES)
.addOptionalTag(ConventionalItemTags.GRAY_DYES)
.addOptionalTag(ConventionalItemTags.PURPLE_DYES);
getOrCreateTagBuilder(ConventionalItemTags.BLACK_DYES)
.add(Items.BLACK_DYE);
getOrCreateTagBuilder(ConventionalItemTags.BLUE_DYES)
.add(Items.BLUE_DYE);
getOrCreateTagBuilder(ConventionalItemTags.BROWN_DYES)
.add(Items.PURPLE_DYE);
getOrCreateTagBuilder(ConventionalItemTags.GREEN_DYES)
.add(Items.GREEN_DYE);
getOrCreateTagBuilder(ConventionalItemTags.RED_DYES)
.add(Items.RED_DYE);
getOrCreateTagBuilder(ConventionalItemTags.WHITE_DYES)
.add(Items.WHITE_DYE);
getOrCreateTagBuilder(ConventionalItemTags.YELLOW_DYES)
.add(Items.YELLOW_DYE);
getOrCreateTagBuilder(ConventionalItemTags.LIGHT_BLUE_DYES)
.add(Items.LIGHT_BLUE_DYE);
getOrCreateTagBuilder(ConventionalItemTags.LIGHT_GRAY_DYES)
.add(Items.LIGHT_GRAY_DYE);
getOrCreateTagBuilder(ConventionalItemTags.LIME_DYES)
.add(Items.LIME_DYE);
getOrCreateTagBuilder(ConventionalItemTags.MAGENTA_DYES)
.add(Items.MAGENTA_DYE);
getOrCreateTagBuilder(ConventionalItemTags.ORANGE_DYES)
.add(Items.ORANGE_DYE);
getOrCreateTagBuilder(ConventionalItemTags.PINK_DYES)
.add(Items.PINK_DYE);
getOrCreateTagBuilder(ConventionalItemTags.CYAN_DYES)
.add(Items.CYAN_DYE);
getOrCreateTagBuilder(ConventionalItemTags.GRAY_DYES)
.add(Items.GRAY_DYE);
getOrCreateTagBuilder(ConventionalItemTags.PURPLE_DYES)
.add(Items.PURPLE_DYE);
}
private void generateShulkerTag() {
getOrCreateTagBuilder(ConventionalItemTags.SHULKER_BOXES)
.add(Items.SHULKER_BOX)
.add(Items.BLUE_SHULKER_BOX)
.add(Items.BROWN_SHULKER_BOX)
.add(Items.CYAN_SHULKER_BOX)
.add(Items.GRAY_SHULKER_BOX)
.add(Items.GREEN_SHULKER_BOX)
.add(Items.LIGHT_BLUE_SHULKER_BOX)
.add(Items.LIGHT_GRAY_SHULKER_BOX)
.add(Items.LIME_SHULKER_BOX)
.add(Items.MAGENTA_SHULKER_BOX)
.add(Items.ORANGE_SHULKER_BOX)
.add(Items.PINK_SHULKER_BOX)
.add(Items.PURPLE_SHULKER_BOX)
.add(Items.RED_SHULKER_BOX)
.add(Items.WHITE_SHULKER_BOX)
.add(Items.YELLOW_SHULKER_BOX)
.add(Items.BLACK_SHULKER_BOX);
}
private void generateGlassTags() {
getOrCreateTagBuilder(ConventionalItemTags.GLASS_BLOCKS)
.add(Items.GLASS)
.add(Items.GRAY_STAINED_GLASS)
.add(Items.BLACK_STAINED_GLASS)
.add(Items.ORANGE_STAINED_GLASS)
.add(Items.BLUE_STAINED_GLASS)
.add(Items.BROWN_STAINED_GLASS)
.add(Items.CYAN_STAINED_GLASS)
.add(Items.GREEN_STAINED_GLASS)
.add(Items.LIGHT_BLUE_STAINED_GLASS)
.add(Items.LIGHT_GRAY_STAINED_GLASS)
.add(Items.LIME_STAINED_GLASS)
.add(Items.MAGENTA_STAINED_GLASS)
.add(Items.PINK_STAINED_GLASS)
.add(Items.PURPLE_STAINED_GLASS)
.add(Items.RED_STAINED_GLASS)
.add(Items.TINTED_GLASS)
.add(Items.WHITE_STAINED_GLASS)
.add(Items.YELLOW_STAINED_GLASS);
getOrCreateTagBuilder(ConventionalItemTags.GLASS_PANES)
.add(Items.GLASS_PANE)
.add(Items.GRAY_STAINED_GLASS_PANE)
.add(Items.BLACK_STAINED_GLASS_PANE)
.add(Items.ORANGE_STAINED_GLASS_PANE)
.add(Items.BLUE_STAINED_GLASS_PANE)
.add(Items.BROWN_STAINED_GLASS_PANE)
.add(Items.CYAN_STAINED_GLASS_PANE)
.add(Items.GREEN_STAINED_GLASS_PANE)
.add(Items.LIGHT_BLUE_STAINED_GLASS_PANE)
.add(Items.LIGHT_GRAY_STAINED_GLASS_PANE)
.add(Items.LIME_STAINED_GLASS_PANE)
.add(Items.MAGENTA_STAINED_GLASS_PANE)
.add(Items.PINK_STAINED_GLASS_PANE)
.add(Items.PURPLE_STAINED_GLASS_PANE)
.add(Items.RED_STAINED_GLASS_PANE)
.add(Items.WHITE_STAINED_GLASS_PANE)
.add(Items.YELLOW_STAINED_GLASS_PANE);
}
private void generateConsumableTags() {
Registry.ITEM.forEach(item -> {
if (item.getFoodComponent() != null) {
getOrCreateTagBuilder(ConventionalItemTags.FOODS).add(item);
}
});
getOrCreateTagBuilder(ConventionalItemTags.POTIONS)
.add(Items.LINGERING_POTION)
.add(Items.SPLASH_POTION)
.add(Items.POTION);
}
private void generateBucketTags() {
getOrCreateTagBuilder(ConventionalItemTags.EMPTY_BUCKET)
.add(Items.BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.LAVA_BUCKET)
.add(Items.LAVA_BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.WATER_BUCKET)
.add(Items.AXOLOTL_BUCKET)
.add(Items.COD_BUCKET)
.add(Items.PUFFERFISH_BUCKET)
.add(Items.TROPICAL_FISH_BUCKET)
.add(Items.SALMON_BUCKET)
.add(Items.WATER_BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.MILK_BUCKET)
.add(Items.MILK_BUCKET);
}
private void generateOreAndRelatedTags() {
getOrCreateTagBuilder(ConventionalItemTags.ORES)
.addOptionalTag(ItemTags.IRON_ORES)
.addOptionalTag(ItemTags.COPPER_ORES)
.addOptionalTag(ItemTags.REDSTONE_ORES)
.addOptionalTag(ItemTags.GOLD_ORES)
.addOptionalTag(ItemTags.COAL_ORES)
.addOptionalTag(ItemTags.DIAMOND_ORES)
.addOptionalTag(ItemTags.LAPIS_ORES)
.addOptionalTag(ConventionalItemTags.QUARTZ_ORES)
.addOptionalTag(ItemTags.EMERALD_ORES);
getOrCreateTagBuilder(ConventionalItemTags.IRON_INGOTS)
.add(Items.IRON_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.COPPER_INGOTS)
.add(Items.COPPER_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.GOLD_INGOTS)
.add(Items.GOLD_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.NETHERITE_INGOTS)
.add(Items.NETHERITE_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.REDSTONE_DUSTS)
.add(Items.REDSTONE);
getOrCreateTagBuilder(ConventionalItemTags.QUARTZ_ORES)
.add(Items.NETHER_QUARTZ_ORE);
getOrCreateTagBuilder(ConventionalItemTags.QUARTZ)
.add(Items.QUARTZ);
getOrCreateTagBuilder(ConventionalItemTags.RAW_IRON_ORES)
.add(Items.RAW_IRON);
getOrCreateTagBuilder(ConventionalItemTags.RAW_COPPER_ORES)
.add(Items.RAW_COPPER);
getOrCreateTagBuilder(ConventionalItemTags.RAW_GOLD_ORES)
.add(Items.RAW_GOLD);
getOrCreateTagBuilder(ConventionalItemTags.RAW_IRON_BLOCKS)
.add(Items.RAW_IRON_BLOCK);
getOrCreateTagBuilder(ConventionalItemTags.RAW_COPPER_BLOCKS)
.add(Items.RAW_COPPER_BLOCK);
getOrCreateTagBuilder(ConventionalItemTags.RAW_GOLD_BLOCKS)
.add(Items.RAW_GOLD_BLOCK);
getOrCreateTagBuilder(ConventionalItemTags.COAL)
.addOptionalTag(ItemTags.COALS);
getOrCreateTagBuilder(ConventionalItemTags.EMERALDS)
.add(Items.EMERALD);
getOrCreateTagBuilder(ConventionalItemTags.LAPIS)
.add(Items.LAPIS_LAZULI);
getOrCreateTagBuilder(ConventionalItemTags.DIAMONDS)
.add(Items.DIAMOND);
}
private void generateToolTags() {
getOrCreateTagBuilder(ConventionalItemTags.AXES)
.addOptionalTag(FABRIC_AXES)
.add(Items.DIAMOND_AXE)
.add(Items.GOLDEN_AXE)
.add(Items.WOODEN_AXE)
.add(Items.STONE_AXE)
.add(Items.IRON_AXE)
.add(Items.NETHERITE_AXE);
getOrCreateTagBuilder(ConventionalItemTags.PICKAXES)
.addOptionalTag(FABRIC_PICKAXES)
.add(Items.DIAMOND_PICKAXE)
.add(Items.GOLDEN_PICKAXE)
.add(Items.WOODEN_PICKAXE)
.add(Items.STONE_PICKAXE)
.add(Items.IRON_PICKAXE)
.add(Items.NETHERITE_PICKAXE);
getOrCreateTagBuilder(ConventionalItemTags.HOES)
.addOptionalTag(FABRIC_HOES)
.add(Items.DIAMOND_HOE)
.add(Items.GOLDEN_HOE)
.add(Items.WOODEN_HOE)
.add(Items.STONE_HOE)
.add(Items.IRON_HOE)
.add(Items.NETHERITE_HOE);
getOrCreateTagBuilder(ConventionalItemTags.SWORDS)
.addOptionalTag(FABRIC_SWORDS)
.add(Items.DIAMOND_SWORD)
.add(Items.GOLDEN_SWORD)
.add(Items.WOODEN_SWORD)
.add(Items.STONE_SWORD)
.add(Items.IRON_SWORD)
.add(Items.NETHERITE_SWORD);
getOrCreateTagBuilder(ConventionalItemTags.SHOVELS)
.addOptionalTag(FABRIC_SHOVELS)
.add(Items.DIAMOND_SHOVEL)
.add(Items.GOLDEN_SHOVEL)
.add(Items.WOODEN_SHOVEL)
.add(Items.STONE_SHOVEL)
.add(Items.IRON_SHOVEL)
.add(Items.NETHERITE_SHOVEL);
getOrCreateTagBuilder(ConventionalItemTags.SHEARS)
.addOptionalTag(FABRIC_SHEARS)
.add(Items.SHEARS);
getOrCreateTagBuilder(ConventionalItemTags.SPEARS)
.add(Items.TRIDENT);
getOrCreateTagBuilder(ConventionalItemTags.BOWS)
.add(Items.CROSSBOW)
.add(Items.BOW);
}
private static Identifier createFabricId(String id) {
return new Identifier("fabric", id);
}
}

View file

@ -0,0 +1,31 @@
{
"schemaVersion": 1,
"id": "fabric-convention-tags-v1-datagen",
"name": "Fabric Convention Tags Datagen",
"version": "1.0.0",
"environment": "*",
"license": "Apache-2.0",
"icon": "assets/fabric-convention-tags-v1/icon.png",
"contact": {
"homepage": "https://fabricmc.net",
"irc": "irc://irc.esper.net:6667/fabric",
"issues": "https://github.com/FabricMC/fabric/issues",
"sources": "https://github.com/FabricMC/fabric"
},
"authors": [
"FabricMC"
],
"depends": {
"fabricloader": ">=0.4.0",
"minecraft": ">=1.18.2"
},
"description": "Contains common tags used by mods for vanilla things.",
"custom": {
"fabric-api:module-lifecycle": "stable"
},
"entrypoints": {
"fabric-datagen": [
"net.fabricmc.fabric.impl.tag.convention.datagen.DatagenEntrypoint"
]
}
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:bookshelf"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:chest",
"minecraft:ender_chest",
"minecraft:trapped_chest"
]
}

View file

@ -0,0 +1,23 @@
{
"replace": false,
"values": [
"minecraft:glass",
"minecraft:gray_stained_glass",
"minecraft:black_stained_glass",
"minecraft:orange_stained_glass",
"minecraft:blue_stained_glass",
"minecraft:brown_stained_glass",
"minecraft:cyan_stained_glass",
"minecraft:green_stained_glass",
"minecraft:light_blue_stained_glass",
"minecraft:light_gray_stained_glass",
"minecraft:lime_stained_glass",
"minecraft:magenta_stained_glass",
"minecraft:pink_stained_glass",
"minecraft:purple_stained_glass",
"minecraft:red_stained_glass",
"minecraft:tinted_glass",
"minecraft:white_stained_glass",
"minecraft:yellow_stained_glass"
]
}

View file

@ -0,0 +1,22 @@
{
"replace": false,
"values": [
"minecraft:glass_pane",
"minecraft:gray_stained_glass_pane",
"minecraft:black_stained_glass_pane",
"minecraft:orange_stained_glass_pane",
"minecraft:blue_stained_glass_pane",
"minecraft:brown_stained_glass_pane",
"minecraft:cyan_stained_glass_pane",
"minecraft:green_stained_glass_pane",
"minecraft:light_blue_stained_glass_pane",
"minecraft:light_gray_stained_glass_pane",
"minecraft:lime_stained_glass_pane",
"minecraft:magenta_stained_glass_pane",
"minecraft:pink_stained_glass_pane",
"minecraft:purple_stained_glass_pane",
"minecraft:red_stained_glass_pane",
"minecraft:white_stained_glass_pane",
"minecraft:yellow_stained_glass_pane"
]
}

View file

@ -0,0 +1,41 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:redstone_ores",
"required": false
},
{
"id": "#minecraft:copper_ores",
"required": false
},
{
"id": "#minecraft:gold_ores",
"required": false
},
{
"id": "#minecraft:iron_ores",
"required": false
},
{
"id": "#minecraft:coal_ores",
"required": false
},
{
"id": "#minecraft:emerald_ores",
"required": false
},
{
"id": "#minecraft:lapis_ores",
"required": false
},
{
"id": "#minecraft:diamond_ores",
"required": false
},
{
"id": "#c:quartz_ores",
"required": false
}
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:nether_quartz_ore"
]
}

View file

@ -0,0 +1,22 @@
{
"replace": false,
"values": [
"minecraft:shulker_box",
"minecraft:blue_shulker_box",
"minecraft:brown_shulker_box",
"minecraft:cyan_shulker_box",
"minecraft:gray_shulker_box",
"minecraft:green_shulker_box",
"minecraft:light_blue_shulker_box",
"minecraft:light_gray_shulker_box",
"minecraft:lime_shulker_box",
"minecraft:magenta_shulker_box",
"minecraft:orange_shulker_box",
"minecraft:pink_shulker_box",
"minecraft:purple_shulker_box",
"minecraft:red_shulker_box",
"minecraft:white_shulker_box",
"minecraft:yellow_shulker_box",
"minecraft:black_shulker_box"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:feather_falling",
"minecraft:protection",
"minecraft:blast_protection",
"minecraft:projectile_protection",
"minecraft:fire_protection",
"minecraft:respiration"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:depth_strider",
"minecraft:soul_speed"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:fortune"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:looting"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:bane_of_arthropods",
"minecraft:impaling",
"minecraft:smite",
"minecraft:power",
"minecraft:sharpness"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:boat"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:ender_dragon",
"minecraft:wither"
]
}

View file

@ -0,0 +1,12 @@
{
"replace": false,
"values": [
"minecraft:minecart",
"minecraft:tnt_minecart",
"minecraft:chest_minecart",
"minecraft:furnace_minecart",
"minecraft:command_block_minecart",
"minecraft:hopper_minecart",
"minecraft:spawner_minecart"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:lava",
"required": false
}
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:water",
"required": false
}
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
{
"id": "#fabric:axes",
"required": false
},
"minecraft:diamond_axe",
"minecraft:golden_axe",
"minecraft:wooden_axe",
"minecraft:stone_axe",
"minecraft:iron_axe",
"minecraft:netherite_axe"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:black_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:blue_dye"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:crossbow",
"minecraft:bow"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:purple_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:bucket"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:lava_bucket"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:milk_bucket"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:axolotl_bucket",
"minecraft:cod_bucket",
"minecraft:pufferfish_bucket",
"minecraft:tropical_fish_bucket",
"minecraft:salmon_bucket",
"minecraft:water_bucket"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:coals",
"required": false
}
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:copper_ingot"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:cyan_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:diamond"
]
}

View file

@ -0,0 +1,69 @@
{
"replace": false,
"values": [
{
"id": "#c:black_dyes",
"required": false
},
{
"id": "#c:blue_dyes",
"required": false
},
{
"id": "#c:brown_dyes",
"required": false
},
{
"id": "#c:green_dyes",
"required": false
},
{
"id": "#c:red_dyes",
"required": false
},
{
"id": "#c:white_dyes",
"required": false
},
{
"id": "#c:yellow_dyes",
"required": false
},
{
"id": "#c:light_gray_dyes",
"required": false
},
{
"id": "#c:light_blue_dyes",
"required": false
},
{
"id": "#c:lime_dyes",
"required": false
},
{
"id": "#c:magenta_dyes",
"required": false
},
{
"id": "#c:orange_dyes",
"required": false
},
{
"id": "#c:pink_dyes",
"required": false
},
{
"id": "#c:cyan_dyes",
"required": false
},
{
"id": "#c:gray_dyes",
"required": false
},
{
"id": "#c:purple_dyes",
"required": false
}
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:emerald"
]
}

View file

@ -0,0 +1,45 @@
{
"replace": false,
"values": [
"minecraft:apple",
"minecraft:mushroom_stew",
"minecraft:bread",
"minecraft:porkchop",
"minecraft:cooked_porkchop",
"minecraft:golden_apple",
"minecraft:enchanted_golden_apple",
"minecraft:cod",
"minecraft:salmon",
"minecraft:tropical_fish",
"minecraft:pufferfish",
"minecraft:cooked_cod",
"minecraft:cooked_salmon",
"minecraft:cookie",
"minecraft:melon_slice",
"minecraft:dried_kelp",
"minecraft:beef",
"minecraft:cooked_beef",
"minecraft:chicken",
"minecraft:cooked_chicken",
"minecraft:rotten_flesh",
"minecraft:spider_eye",
"minecraft:carrot",
"minecraft:potato",
"minecraft:baked_potato",
"minecraft:poisonous_potato",
"minecraft:golden_carrot",
"minecraft:pumpkin_pie",
"minecraft:rabbit",
"minecraft:cooked_rabbit",
"minecraft:rabbit_stew",
"minecraft:mutton",
"minecraft:cooked_mutton",
"minecraft:chorus_fruit",
"minecraft:beetroot",
"minecraft:beetroot_soup",
"minecraft:suspicious_stew",
"minecraft:sweet_berries",
"minecraft:glow_berries",
"minecraft:honey_bottle"
]
}

View file

@ -0,0 +1,23 @@
{
"replace": false,
"values": [
"minecraft:glass",
"minecraft:gray_stained_glass",
"minecraft:black_stained_glass",
"minecraft:orange_stained_glass",
"minecraft:blue_stained_glass",
"minecraft:brown_stained_glass",
"minecraft:cyan_stained_glass",
"minecraft:green_stained_glass",
"minecraft:light_blue_stained_glass",
"minecraft:light_gray_stained_glass",
"minecraft:lime_stained_glass",
"minecraft:magenta_stained_glass",
"minecraft:pink_stained_glass",
"minecraft:purple_stained_glass",
"minecraft:red_stained_glass",
"minecraft:tinted_glass",
"minecraft:white_stained_glass",
"minecraft:yellow_stained_glass"
]
}

View file

@ -0,0 +1,22 @@
{
"replace": false,
"values": [
"minecraft:glass_pane",
"minecraft:gray_stained_glass_pane",
"minecraft:black_stained_glass_pane",
"minecraft:orange_stained_glass_pane",
"minecraft:blue_stained_glass_pane",
"minecraft:brown_stained_glass_pane",
"minecraft:cyan_stained_glass_pane",
"minecraft:green_stained_glass_pane",
"minecraft:light_blue_stained_glass_pane",
"minecraft:light_gray_stained_glass_pane",
"minecraft:lime_stained_glass_pane",
"minecraft:magenta_stained_glass_pane",
"minecraft:pink_stained_glass_pane",
"minecraft:purple_stained_glass_pane",
"minecraft:red_stained_glass_pane",
"minecraft:white_stained_glass_pane",
"minecraft:yellow_stained_glass_pane"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:gold_ingot"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:gray_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:green_dye"
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
{
"id": "#fabric:hoes",
"required": false
},
"minecraft:diamond_hoe",
"minecraft:golden_hoe",
"minecraft:wooden_hoe",
"minecraft:stone_hoe",
"minecraft:iron_hoe",
"minecraft:netherite_hoe"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:iron_ingot"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:lapis_lazuli"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:light_blue_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:light_gray_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:lime_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:magenta_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:netherite_ingot"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:orange_dye"
]
}

View file

@ -0,0 +1,41 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:iron_ores",
"required": false
},
{
"id": "#minecraft:copper_ores",
"required": false
},
{
"id": "#minecraft:redstone_ores",
"required": false
},
{
"id": "#minecraft:gold_ores",
"required": false
},
{
"id": "#minecraft:coal_ores",
"required": false
},
{
"id": "#minecraft:diamond_ores",
"required": false
},
{
"id": "#minecraft:lapis_ores",
"required": false
},
{
"id": "#c:quartz_ores",
"required": false
},
{
"id": "#minecraft:emerald_ores",
"required": false
}
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
{
"id": "#fabric:pickaxes",
"required": false
},
"minecraft:diamond_pickaxe",
"minecraft:golden_pickaxe",
"minecraft:wooden_pickaxe",
"minecraft:stone_pickaxe",
"minecraft:iron_pickaxe",
"minecraft:netherite_pickaxe"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:pink_dye"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:lingering_potion",
"minecraft:splash_potion",
"minecraft:potion"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:purple_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:quartz"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:nether_quartz_ore"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_copper_block"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_copper"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_gold_block"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_gold"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_iron_block"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:raw_iron"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:red_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:redstone"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
{
"id": "#fabric:shears",
"required": false
},
"minecraft:shears"
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
{
"id": "#fabric:shovels",
"required": false
},
"minecraft:diamond_shovel",
"minecraft:golden_shovel",
"minecraft:wooden_shovel",
"minecraft:stone_shovel",
"minecraft:iron_shovel",
"minecraft:netherite_shovel"
]
}

View file

@ -0,0 +1,22 @@
{
"replace": false,
"values": [
"minecraft:shulker_box",
"minecraft:blue_shulker_box",
"minecraft:brown_shulker_box",
"minecraft:cyan_shulker_box",
"minecraft:gray_shulker_box",
"minecraft:green_shulker_box",
"minecraft:light_blue_shulker_box",
"minecraft:light_gray_shulker_box",
"minecraft:lime_shulker_box",
"minecraft:magenta_shulker_box",
"minecraft:orange_shulker_box",
"minecraft:pink_shulker_box",
"minecraft:purple_shulker_box",
"minecraft:red_shulker_box",
"minecraft:white_shulker_box",
"minecraft:yellow_shulker_box",
"minecraft:black_shulker_box"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:trident"
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
{
"id": "#fabric:swords",
"required": false
},
"minecraft:diamond_sword",
"minecraft:golden_sword",
"minecraft:wooden_sword",
"minecraft:stone_sword",
"minecraft:iron_sword",
"minecraft:netherite_sword"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:white_dye"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:yellow_dye"
]
}

View file

@ -0,0 +1,13 @@
{
"replace": false,
"values": [
{
"id": "#c:ocean",
"required": false
},
{
"id": "#c:river",
"required": false
}
]
}

View file

@ -0,0 +1,13 @@
{
"replace": false,
"values": [
{
"id": "#c:mesa",
"required": false
},
{
"id": "#minecraft:is_badlands",
"required": false
}
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:is_beach",
"required": false
},
"minecraft:stony_shore"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:dripstone_caves",
"minecraft:lush_caves"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:grove",
"minecraft:jagged_peaks",
{
"id": "#c:icy",
"required": false
}
]
}

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
{
"id": "#c:in_nether",
"required": false
},
{
"id": "#c:badlands",
"required": false
},
{
"id": "#c:desert",
"required": false
},
{
"id": "#c:savanna",
"required": false
}
]
}

View file

@ -0,0 +1,30 @@
{
"replace": false,
"values": [
{
"id": "#c:jungle",
"required": false
},
{
"id": "#c:savanna",
"required": false
},
{
"id": "#c:desert",
"required": false
},
{
"id": "#c:badlands",
"required": false
},
"minecraft:stony_peaks",
{
"id": "#c:mushroom",
"required": false
},
{
"id": "#c:in_nether",
"required": false
}
]
}

View file

@ -0,0 +1,15 @@
{
"replace": false,
"values": [
"minecraft:forest",
"minecraft:sunflower_plains",
"minecraft:swamp",
"minecraft:stony_shore",
"minecraft:dark_forest",
"minecraft:windswept_forest",
"minecraft:birch_forest",
"minecraft:old_growth_birch_forest",
"minecraft:meadow",
"minecraft:plains"
]
}

View file

@ -0,0 +1,18 @@
{
"replace": false,
"values": [
{
"id": "#c:aquatic",
"required": false
},
{
"id": "#c:swamp",
"required": false
},
"minecraft:lush_caves",
{
"id": "#c:jungle",
"required": false
}
]
}

View file

@ -0,0 +1,4 @@
{
"replace": false,
"values": []
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:deep_frozen_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_ocean"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:desert"
]
}

View file

@ -0,0 +1,4 @@
{
"replace": false,
"values": []
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:windswept_gravelly_hills",
"minecraft:windswept_hills"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:sunflower_plains",
"minecraft:flower_forest"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:flower_forest"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:is_forest",
"required": false
}
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:frozen_river",
"minecraft:frozen_peaks",
"minecraft:deep_frozen_ocean",
"minecraft:ice_spikes",
"minecraft:frozen_ocean"
]
}

View file

@ -0,0 +1,14 @@
{
"replace": false,
"values": [
{
"id": "#minecraft:is_nether",
"required": false
},
"minecraft:crimson_forest",
"minecraft:warped_forest",
"minecraft:nether_wastes",
"minecraft:soul_sand_valley",
"minecraft:basalt_deltas"
]
}

View file

@ -0,0 +1,55 @@
{
"replace": false,
"values": [
"minecraft:river",
"minecraft:frozen_river",
"minecraft:cold_ocean",
"minecraft:deep_cold_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:deep_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:frozen_ocean",
"minecraft:ocean",
"minecraft:beach",
"minecraft:plains",
"minecraft:sunflower_plains",
"minecraft:snowy_plains",
"minecraft:ice_spikes",
"minecraft:desert",
"minecraft:forest",
"minecraft:flower_forest",
"minecraft:birch_forest",
"minecraft:dark_forest",
"minecraft:old_growth_birch_forest",
"minecraft:old_growth_pine_taiga",
"minecraft:old_growth_spruce_taiga",
"minecraft:taiga",
"minecraft:snowy_taiga",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:windswept_hills",
"minecraft:windswept_gravelly_hills",
"minecraft:windswept_forest",
"minecraft:windswept_savanna",
"minecraft:jungle",
"minecraft:sparse_jungle",
"minecraft:bamboo_jungle",
"minecraft:badlands",
"minecraft:eroded_badlands",
"minecraft:wooded_badlands",
"minecraft:meadow",
"minecraft:grove",
"minecraft:snowy_slopes",
"minecraft:frozen_peaks",
"minecraft:jagged_peaks",
"minecraft:stony_peaks",
"minecraft:mushroom_fields",
"minecraft:dripstone_caves",
"minecraft:lush_caves",
"minecraft:snowy_beach",
"minecraft:swamp",
"minecraft:stony_shore"
]
}

Some files were not shown because too many files have changed in this diff Show more