Convention Tags Improvements (#3051)

* First pass: refactor a bit, add missing item tags that have block tags, add resource category tags and wooden_barrels

* Fix #2831: Move entity buckets to c:entity_water_buckets

* Add villager_job_sites and sandstone tags

* Add alternative cauldrons to villager job sites.

Signed-off-by: modmuss50 <modmuss50@gmail.com>

---------

Signed-off-by: modmuss50 <modmuss50@gmail.com>
Co-authored-by: modmuss50 <modmuss50@gmail.com>
This commit is contained in:
Technici4n 2023-05-14 16:00:30 +02:00 committed by modmuss50
parent fffc558953
commit 8eca92ff9a
45 changed files with 544 additions and 103 deletions

3
.gitignore vendored
View file

@ -28,7 +28,8 @@ out/
classes/
# Generated sources
**/src/generated/
# The trailing * is important, otherwise Git wouldn't evaluate the directories at all and we wouldn't be able to un-ignore some of them.
**/src/generated/*
# Debug artifacts
run

View file

@ -1 +1,4 @@
# un-ignore generated resources
!/src/generated/resources/
# re-ignore the caches
/src/generated/resources/.cache/

View file

@ -30,10 +30,10 @@ public class DatagenEntrypoint implements DataGeneratorEntrypoint {
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
final FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
pack.addProvider(ItemTagGenerator::new);
BlockTagGenerator blockTags = pack.addProvider(BlockTagGenerator::new);
pack.addProvider((output, wrapperLookup) -> new ItemTagGenerator(output, wrapperLookup, blockTags));
pack.addProvider(FluidTagGenerator::new);
pack.addProvider(EnchantmentTagGenerator::new);
pack.addProvider(BlockTagGenerator::new);
pack.addProvider(BiomeTagGenerator::new);
pack.addProvider(EntityTypeTagGenerator::new);
}

View file

@ -16,19 +16,38 @@
package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.registry.RegistryKey;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags;
public class BlockTagGenerator extends FabricTagProvider.BlockTagProvider {
static List<Block> VILLAGER_JOB_SITE_BLOCKS = List.of(
Blocks.BARREL,
Blocks.BLAST_FURNACE,
Blocks.BREWING_STAND,
Blocks.CARTOGRAPHY_TABLE,
Blocks.CAULDRON,
Blocks.LAVA_CAULDRON,
Blocks.WATER_CAULDRON,
Blocks.POWDER_SNOW_CAULDRON,
Blocks.COMPOSTER,
Blocks.FLETCHING_TABLE,
Blocks.GRINDSTONE,
Blocks.LECTERN,
Blocks.LOOM,
Blocks.SMITHING_TABLE,
Blocks.SMOKER,
Blocks.STONECUTTER
);
public BlockTagGenerator(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}
@ -47,6 +66,7 @@ public class BlockTagGenerator extends FabricTagProvider.BlockTagProvider {
.addOptionalTag(BlockTags.LAPIS_ORES)
.addOptionalTag(BlockTags.DIAMOND_ORES)
.addOptionalTag(ConventionalBlockTags.QUARTZ_ORES);
getOrCreateTagBuilder(ConventionalBlockTags.CHESTS)
.add(Blocks.CHEST)
.add(Blocks.ENDER_CHEST)
@ -55,11 +75,63 @@ public class BlockTagGenerator extends FabricTagProvider.BlockTagProvider {
.add(Blocks.BOOKSHELF);
generateGlassTags();
generateShulkerTag();
getOrCreateTagBuilder(ConventionalBlockTags.WOODEN_BARRELS)
.add(Blocks.BARREL);
generateBuddingTags();
VILLAGER_JOB_SITE_BLOCKS.forEach(getOrCreateTagBuilder(ConventionalBlockTags.VILLAGER_JOB_SITES)::add);
generateSandstoneTags();
}
@Override
protected RegistryKey<Block> reverseLookup(Block block) {
return block.getRegistryEntry().registryKey();
private void generateSandstoneTags() {
getOrCreateTagBuilder(ConventionalBlockTags.SANDSTONE_BLOCKS)
.addOptionalTag(ConventionalBlockTags.UNCOLORED_SANDSTONE_BLOCKS)
.addOptionalTag(ConventionalBlockTags.RED_SANDSTONE_BLOCKS);
getOrCreateTagBuilder(ConventionalBlockTags.SANDSTONE_SLABS)
.addOptionalTag(ConventionalBlockTags.UNCOLORED_SANDSTONE_SLABS)
.addOptionalTag(ConventionalBlockTags.RED_SANDSTONE_SLABS);
getOrCreateTagBuilder(ConventionalBlockTags.SANDSTONE_STAIRS)
.addOptionalTag(ConventionalBlockTags.UNCOLORED_SANDSTONE_STAIRS)
.addOptionalTag(ConventionalBlockTags.RED_SANDSTONE_STAIRS);
getOrCreateTagBuilder(ConventionalBlockTags.RED_SANDSTONE_BLOCKS)
.add(Blocks.RED_SANDSTONE)
.add(Blocks.CHISELED_RED_SANDSTONE)
.add(Blocks.CUT_RED_SANDSTONE)
.add(Blocks.SMOOTH_RED_SANDSTONE);
getOrCreateTagBuilder(ConventionalBlockTags.RED_SANDSTONE_SLABS)
.add(Blocks.RED_SANDSTONE_SLAB)
.add(Blocks.CUT_RED_SANDSTONE_SLAB)
.add(Blocks.SMOOTH_RED_SANDSTONE_SLAB);
getOrCreateTagBuilder(ConventionalBlockTags.RED_SANDSTONE_STAIRS)
.add(Blocks.RED_SANDSTONE_STAIRS)
.add(Blocks.SMOOTH_RED_SANDSTONE_STAIRS);
getOrCreateTagBuilder(ConventionalBlockTags.UNCOLORED_SANDSTONE_BLOCKS)
.add(Blocks.SANDSTONE)
.add(Blocks.CHISELED_SANDSTONE)
.add(Blocks.CUT_SANDSTONE)
.add(Blocks.SMOOTH_SANDSTONE);
getOrCreateTagBuilder(ConventionalBlockTags.UNCOLORED_SANDSTONE_SLABS)
.add(Blocks.SANDSTONE_SLAB)
.add(Blocks.CUT_SANDSTONE_SLAB)
.add(Blocks.SMOOTH_SANDSTONE_SLAB);
getOrCreateTagBuilder(ConventionalBlockTags.UNCOLORED_SANDSTONE_STAIRS)
.add(Blocks.SANDSTONE_STAIRS)
.add(Blocks.SMOOTH_SANDSTONE_STAIRS);
}
private void generateBuddingTags() {
getOrCreateTagBuilder(ConventionalBlockTags.BUDDING_BLOCKS)
.add(Blocks.BUDDING_AMETHYST);
getOrCreateTagBuilder(ConventionalBlockTags.BUDS)
.add(Blocks.SMALL_AMETHYST_BUD)
.add(Blocks.MEDIUM_AMETHYST_BUD)
.add(Blocks.LARGE_AMETHYST_BUD);
getOrCreateTagBuilder(ConventionalBlockTags.CLUSTERS)
.add(Blocks.AMETHYST_CLUSTER);
}
private void generateShulkerTag() {

View file

@ -18,14 +18,16 @@ package net.fabricmc.fabric.impl.tag.convention.datagen.generators;
import java.util.concurrent.CompletableFuture;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.Items;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.util.Identifier;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.util.Identifier;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalItemTags;
public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
@ -48,8 +50,8 @@ public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
@Deprecated
private static final Identifier FABRIC_SWORDS = createFabricId("swords");
public ItemTagGenerator(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture) {
super(output, completableFuture);
public ItemTagGenerator(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture, FabricTagProvider.BlockTagProvider blockTags) {
super(output, completableFuture, blockTags);
}
@Override
@ -58,9 +60,32 @@ public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
generateBucketTags();
generateOreAndRelatedTags();
generateConsumableTags();
generateGlassTags();
generateShulkerTag();
generateDyeTags();
generateVillagerJobSites();
copyItemTags();
}
private void copyItemTags() {
copy(ConventionalBlockTags.BOOKSHELVES, ConventionalItemTags.BOOKSHELVES);
copy(ConventionalBlockTags.CHESTS, ConventionalItemTags.CHESTS);
copy(ConventionalBlockTags.GLASS_BLOCKS, ConventionalItemTags.GLASS_BLOCKS);
copy(ConventionalBlockTags.GLASS_PANES, ConventionalItemTags.GLASS_PANES);
copy(ConventionalBlockTags.SHULKER_BOXES, ConventionalItemTags.SHULKER_BOXES);
copy(ConventionalBlockTags.WOODEN_BARRELS, ConventionalItemTags.WOODEN_BARRELS);
copy(ConventionalBlockTags.BUDDING_BLOCKS, ConventionalItemTags.BUDDING_BLOCKS);
copy(ConventionalBlockTags.BUDS, ConventionalItemTags.BUDS);
copy(ConventionalBlockTags.CLUSTERS, ConventionalItemTags.CLUSTERS);
copy(ConventionalBlockTags.SANDSTONE_BLOCKS, ConventionalItemTags.SANDSTONE_BLOCKS);
copy(ConventionalBlockTags.SANDSTONE_SLABS, ConventionalItemTags.SANDSTONE_SLABS);
copy(ConventionalBlockTags.SANDSTONE_STAIRS, ConventionalItemTags.SANDSTONE_STAIRS);
copy(ConventionalBlockTags.RED_SANDSTONE_BLOCKS, ConventionalItemTags.RED_SANDSTONE_BLOCKS);
copy(ConventionalBlockTags.RED_SANDSTONE_SLABS, ConventionalItemTags.RED_SANDSTONE_SLABS);
copy(ConventionalBlockTags.RED_SANDSTONE_STAIRS, ConventionalItemTags.RED_SANDSTONE_STAIRS);
copy(ConventionalBlockTags.UNCOLORED_SANDSTONE_BLOCKS, ConventionalItemTags.UNCOLORED_SANDSTONE_BLOCKS);
copy(ConventionalBlockTags.UNCOLORED_SANDSTONE_SLABS, ConventionalItemTags.UNCOLORED_SANDSTONE_SLABS);
copy(ConventionalBlockTags.UNCOLORED_SANDSTONE_STAIRS, ConventionalItemTags.UNCOLORED_SANDSTONE_STAIRS);
}
private void generateDyeTags() {
@ -115,67 +140,6 @@ public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
.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() {
Registries.ITEM.forEach(item -> {
if (item.getFoodComponent() != null) {
@ -193,29 +157,37 @@ public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
.add(Items.BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.LAVA_BUCKETS)
.add(Items.LAVA_BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.WATER_BUCKETS)
getOrCreateTagBuilder(ConventionalItemTags.ENTITY_WATER_BUCKETS)
.add(Items.AXOLOTL_BUCKET)
.add(Items.COD_BUCKET)
.add(Items.PUFFERFISH_BUCKET)
.add(Items.TROPICAL_FISH_BUCKET)
.add(Items.SALMON_BUCKET)
.add(Items.TADPOLE_BUCKET)
.add(Items.TADPOLE_BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.WATER_BUCKETS)
.add(Items.WATER_BUCKET);
getOrCreateTagBuilder(ConventionalItemTags.MILK_BUCKETS)
.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);
// Categories
getOrCreateTagBuilder(ConventionalItemTags.DUSTS)
.add(Items.GLOWSTONE_DUST)
.add(Items.REDSTONE);
getOrCreateTagBuilder(ConventionalItemTags.GEMS)
.add(Items.DIAMOND, Items.EMERALD, Items.AMETHYST_SHARD, Items.LAPIS_LAZULI);
getOrCreateTagBuilder(ConventionalItemTags.INGOTS)
.add(Items.COPPER_INGOT, Items.GOLD_INGOT, Items.IRON_INGOT, Items.NETHERITE_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.NUGGETS)
.add(Items.GOLD_NUGGET, Items.IRON_NUGGET);
copy(ConventionalBlockTags.ORES, ConventionalItemTags.ORES);
getOrCreateTagBuilder(ConventionalItemTags.RAW_ORES)
.addOptionalTag(ConventionalItemTags.RAW_IRON_ORES)
.addOptionalTag(ConventionalItemTags.RAW_COPPER_ORES)
.addOptionalTag(ConventionalItemTags.RAW_GOLD_ORES);
// Vanilla instances
getOrCreateTagBuilder(ConventionalItemTags.IRON_INGOTS)
.add(Items.IRON_INGOT);
getOrCreateTagBuilder(ConventionalItemTags.COPPER_INGOTS)
@ -320,6 +292,13 @@ public class ItemTagGenerator extends FabricTagProvider.ItemTagProvider {
.add(Items.SHIELD);
}
private void generateVillagerJobSites() {
BlockTagGenerator.VILLAGER_JOB_SITE_BLOCKS.stream()
.map(ItemConvertible::asItem)
.distinct() // cauldron blocks have the same item
.forEach(getOrCreateTagBuilder(ConventionalItemTags.VILLAGER_JOB_SITES)::add);
}
private static Identifier createFabricId(String id) {
return new Identifier("fabric", id);
}

View file

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

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:small_amethyst_bud",
"minecraft:medium_amethyst_bud",
"minecraft:large_amethyst_bud"
]
}

View file

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

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:red_sandstone",
"minecraft:chiseled_red_sandstone",
"minecraft:cut_red_sandstone",
"minecraft:smooth_red_sandstone"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:red_sandstone_slab",
"minecraft:cut_red_sandstone_slab",
"minecraft:smooth_red_sandstone_slab"
]
}

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:sandstone",
"minecraft:chiseled_sandstone",
"minecraft:cut_sandstone",
"minecraft:smooth_sandstone"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:sandstone_slab",
"minecraft:cut_sandstone_slab",
"minecraft:smooth_sandstone_slab"
]
}

View file

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

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"minecraft:barrel",
"minecraft:blast_furnace",
"minecraft:brewing_stand",
"minecraft:cartography_table",
"minecraft:cauldron",
"minecraft:lava_cauldron",
"minecraft:water_cauldron",
"minecraft:powder_snow_cauldron",
"minecraft:composter",
"minecraft:fletching_table",
"minecraft:grindstone",
"minecraft:lectern",
"minecraft:loom",
"minecraft:smithing_table",
"minecraft:smoker",
"minecraft:stonecutter"
]
}

View file

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

View file

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

View file

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

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:small_amethyst_bud",
"minecraft:medium_amethyst_bud",
"minecraft:large_amethyst_bud"
]
}

View file

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

View file

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

View file

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

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:tadpole_bucket"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:diamond",
"minecraft:emerald",
"minecraft:amethyst_shard",
"minecraft:lapis_lazuli"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:copper_ingot",
"minecraft:gold_ingot",
"minecraft:iron_ingot",
"minecraft:netherite_ingot"
]
}

View file

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

View file

@ -2,7 +2,7 @@
"replace": false,
"values": [
{
"id": "#minecraft:iron_ores",
"id": "#minecraft:redstone_ores",
"required": false
},
{
@ -10,11 +10,11 @@
"required": false
},
{
"id": "#minecraft:redstone_ores",
"id": "#minecraft:gold_ores",
"required": false
},
{
"id": "#minecraft:gold_ores",
"id": "#minecraft:iron_ores",
"required": false
},
{
@ -22,7 +22,7 @@
"required": false
},
{
"id": "#minecraft:diamond_ores",
"id": "#minecraft:emerald_ores",
"required": false
},
{
@ -30,11 +30,11 @@
"required": false
},
{
"id": "#c:quartz_ores",
"id": "#minecraft:diamond_ores",
"required": false
},
{
"id": "#minecraft:emerald_ores",
"id": "#c:quartz_ores",
"required": false
}
]

View file

@ -0,0 +1,17 @@
{
"replace": false,
"values": [
{
"id": "#c:raw_iron_ores",
"required": false
},
{
"id": "#c:raw_copper_ores",
"required": false
},
{
"id": "#c:raw_gold_ores",
"required": false
}
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:red_sandstone",
"minecraft:chiseled_red_sandstone",
"minecraft:cut_red_sandstone",
"minecraft:smooth_red_sandstone"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:red_sandstone_slab",
"minecraft:cut_red_sandstone_slab",
"minecraft:smooth_red_sandstone_slab"
]
}

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:sandstone",
"minecraft:chiseled_sandstone",
"minecraft:cut_sandstone",
"minecraft:smooth_sandstone"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:sandstone_slab",
"minecraft:cut_sandstone_slab",
"minecraft:smooth_sandstone_slab"
]
}

View file

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

View file

@ -0,0 +1,18 @@
{
"replace": false,
"values": [
"minecraft:barrel",
"minecraft:blast_furnace",
"minecraft:brewing_stand",
"minecraft:cartography_table",
"minecraft:cauldron",
"minecraft:composter",
"minecraft:fletching_table",
"minecraft:grindstone",
"minecraft:lectern",
"minecraft:loom",
"minecraft:smithing_table",
"minecraft:smoker",
"minecraft:stonecutter"
]
}

View file

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

View file

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

View file

@ -30,13 +30,36 @@ public final class ConventionalBlockTags {
private ConventionalBlockTags() {
}
public static final TagKey<Block> QUARTZ_ORES = register("quartz_ores");
// Ores and ingots - broad categories
public static final TagKey<Block> ORES = register("ores");
public static final TagKey<Block> CHESTS = register("chests");
// Ores and ingots - vanilla instances
public static final TagKey<Block> QUARTZ_ORES = register("quartz_ores");
public static final TagKey<Block> BOOKSHELVES = register("bookshelves");
public static final TagKey<Block> CHESTS = register("chests");
public static final TagKey<Block> GLASS_BLOCKS = register("glass_blocks");
public static final TagKey<Block> GLASS_PANES = register("glass_panes");
public static final TagKey<Block> SHULKER_BOXES = register("shulker_boxes");
public static final TagKey<Block> WOODEN_BARRELS = register("wooden_barrels");
// Related to budding mechanics
public static final TagKey<Block> BUDDING_BLOCKS = register("budding_blocks");
public static final TagKey<Block> BUDS = register("buds");
public static final TagKey<Block> CLUSTERS = register("clusters");
public static final TagKey<Block> VILLAGER_JOB_SITES = register("villager_job_sites");
// Sandstone
public static final TagKey<Block> SANDSTONE_BLOCKS = register("sandstone_blocks");
public static final TagKey<Block> SANDSTONE_SLABS = register("sandstone_slabs");
public static final TagKey<Block> SANDSTONE_STAIRS = register("sandstone_stairs");
public static final TagKey<Block> RED_SANDSTONE_BLOCKS = register("red_sandstone_blocks");
public static final TagKey<Block> RED_SANDSTONE_SLABS = register("red_sandstone_slabs");
public static final TagKey<Block> RED_SANDSTONE_STAIRS = register("red_sandstone_stairs");
public static final TagKey<Block> UNCOLORED_SANDSTONE_BLOCKS = register("uncolored_sandstone_blocks");
public static final TagKey<Block> UNCOLORED_SANDSTONE_SLABS = register("uncolored_sandstone_slabs");
public static final TagKey<Block> UNCOLORED_SANDSTONE_STAIRS = register("uncolored_sandstone_stairs");
/**
* Blocks should be included in this tag if their movement can cause serious issues such as world corruption
* upon being moved, such as chunk loaders or pipes,

View file

@ -38,7 +38,14 @@ public final class ConventionalItemTags {
public static final TagKey<Item> SPEARS = register("spears");
public static final TagKey<Item> BOWS = register("bows");
public static final TagKey<Item> SHIELDS = register("shields");
// Ores and ingots
// Ores and ingots - categories
public static final TagKey<Item> DUSTS = register("dusts");
public static final TagKey<Item> GEMS = register("gems");
public static final TagKey<Item> INGOTS = register("ingots");
public static final TagKey<Item> NUGGETS = register("nuggets");
public static final TagKey<Item> ORES = register("ores");
public static final TagKey<Item> RAW_ORES = register("raw_ores");
// Ores and ingots - vanilla instances
public static final TagKey<Item> IRON_INGOTS = register("iron_ingots");
public static final TagKey<Item> RAW_IRON_ORES = register("raw_iron_ores");
public static final TagKey<Item> RAW_IRON_BLOCKS = register("raw_iron_blocks");
@ -49,7 +56,6 @@ public final class ConventionalItemTags {
public static final TagKey<Item> COPPER_INGOTS = register("copper_ingots");
public static final TagKey<Item> RAW_COPPER_ORES = register("raw_copper_ores");
public static final TagKey<Item> RAW_COPPER_BLOCKS = register("raw_copper_blocks");
public static final TagKey<Item> ORES = register("ores");
public static final TagKey<Item> NETHERITE_INGOTS = register("netherite_ingots");
public static final TagKey<Item> QUARTZ_ORES = register("quartz_ores");
public static final TagKey<Item> QUARTZ = register("quartz");
@ -61,15 +67,39 @@ public final class ConventionalItemTags {
public static final TagKey<Item> FOODS = register("foods");
public static final TagKey<Item> POTIONS = register("potions");
// Buckets
/**
* Does not include entity water buckets.
*/
public static final TagKey<Item> WATER_BUCKETS = register("water_buckets");
public static final TagKey<Item> ENTITY_WATER_BUCKETS = register("entity_water_buckets");
public static final TagKey<Item> LAVA_BUCKETS = register("lava_buckets");
public static final TagKey<Item> MILK_BUCKETS = register("milk_buckets");
public static final TagKey<Item> EMPTY_BUCKETS = register("empty_buckets");
public static final TagKey<Item> BOOKSHELVES = register("bookshelves");
public static final TagKey<Item> CHESTS = register("chests");
public static final TagKey<Item> GLASS_BLOCKS = register("glass_blocks");
public static final TagKey<Item> GLASS_PANES = register("glass_panes");
public static final TagKey<Item> SHULKER_BOXES = register("shulker_boxes");
public static final TagKey<Item> WOODEN_BARRELS = register("wooden_barrels");
// Related to budding mechanics
public static final TagKey<Item> BUDDING_BLOCKS = register("budding_blocks");
public static final TagKey<Item> BUDS = register("buds");
public static final TagKey<Item> CLUSTERS = register("clusters");
public static final TagKey<Item> VILLAGER_JOB_SITES = register("villager_job_sites");
// Sandstone
public static final TagKey<Item> SANDSTONE_BLOCKS = register("sandstone_blocks");
public static final TagKey<Item> SANDSTONE_SLABS = register("sandstone_slabs");
public static final TagKey<Item> SANDSTONE_STAIRS = register("sandstone_stairs");
public static final TagKey<Item> RED_SANDSTONE_BLOCKS = register("red_sandstone_blocks");
public static final TagKey<Item> RED_SANDSTONE_SLABS = register("red_sandstone_slabs");
public static final TagKey<Item> RED_SANDSTONE_STAIRS = register("red_sandstone_stairs");
public static final TagKey<Item> UNCOLORED_SANDSTONE_BLOCKS = register("uncolored_sandstone_blocks");
public static final TagKey<Item> UNCOLORED_SANDSTONE_SLABS = register("uncolored_sandstone_slabs");
public static final TagKey<Item> UNCOLORED_SANDSTONE_STAIRS = register("uncolored_sandstone_stairs");
// Dyes
public static final TagKey<Item> DYES = register("dyes");