minecraft-source/src/net/minecraft/data/tags/ItemTagsProvider.java

121 lines
5.7 KiB
Java

package net.minecraft.data.tags;
import org.apache.logging.log4j.LogManager;
import net.minecraft.tags.TagCollection;
import java.nio.file.Path;
import net.minecraft.resources.ResourceLocation;
import java.util.List;
import java.util.Collection;
import com.google.common.collect.Lists;
import java.util.Iterator;
import net.minecraft.world.level.block.Block;
import net.minecraft.tags.Tag;
import net.minecraft.world.item.Items;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.BlockTags;
import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import org.apache.logging.log4j.Logger;
import net.minecraft.world.item.Item;
public class ItemTagsProvider extends TagsProvider<Item> {
private static final Logger LOGGER;
public ItemTagsProvider(final DataGenerator gy) {
super(gy, Registry.ITEM);
}
@Override
protected void addTags() {
this.copy(BlockTags.WOOL, ItemTags.WOOL);
this.copy(BlockTags.PLANKS, ItemTags.PLANKS);
this.copy(BlockTags.STONE_BRICKS, ItemTags.STONE_BRICKS);
this.copy(BlockTags.WOODEN_BUTTONS, ItemTags.WOODEN_BUTTONS);
this.copy(BlockTags.BUTTONS, ItemTags.BUTTONS);
this.copy(BlockTags.CARPETS, ItemTags.CARPETS);
this.copy(BlockTags.WOODEN_DOORS, ItemTags.WOODEN_DOORS);
this.copy(BlockTags.WOODEN_STAIRS, ItemTags.WOODEN_STAIRS);
this.copy(BlockTags.WOODEN_SLABS, ItemTags.WOODEN_SLABS);
this.copy(BlockTags.WOODEN_FENCES, ItemTags.WOODEN_FENCES);
this.copy(BlockTags.WOODEN_PRESSURE_PLATES, ItemTags.WOODEN_PRESSURE_PLATES);
this.copy(BlockTags.DOORS, ItemTags.DOORS);
this.copy(BlockTags.SAPLINGS, ItemTags.SAPLINGS);
this.copy(BlockTags.OAK_LOGS, ItemTags.OAK_LOGS);
this.copy(BlockTags.DARK_OAK_LOGS, ItemTags.DARK_OAK_LOGS);
this.copy(BlockTags.BIRCH_LOGS, ItemTags.BIRCH_LOGS);
this.copy(BlockTags.ACACIA_LOGS, ItemTags.ACACIA_LOGS);
this.copy(BlockTags.SPRUCE_LOGS, ItemTags.SPRUCE_LOGS);
this.copy(BlockTags.JUNGLE_LOGS, ItemTags.JUNGLE_LOGS);
this.copy(BlockTags.LOGS, ItemTags.LOGS);
this.copy(BlockTags.SAND, ItemTags.SAND);
this.copy(BlockTags.SLABS, ItemTags.SLABS);
this.copy(BlockTags.WALLS, ItemTags.WALLS);
this.copy(BlockTags.STAIRS, ItemTags.STAIRS);
this.copy(BlockTags.ANVIL, ItemTags.ANVIL);
this.copy(BlockTags.RAILS, ItemTags.RAILS);
this.copy(BlockTags.LEAVES, ItemTags.LEAVES);
this.copy(BlockTags.WOODEN_TRAPDOORS, ItemTags.WOODEN_TRAPDOORS);
this.copy(BlockTags.TRAPDOORS, ItemTags.TRAPDOORS);
this.copy(BlockTags.SMALL_FLOWERS, ItemTags.SMALL_FLOWERS);
this.copy(BlockTags.BEDS, ItemTags.BEDS);
this.copy(BlockTags.FENCES, ItemTags.FENCES);
this.copy(BlockTags.TALL_FLOWERS, ItemTags.TALL_FLOWERS);
this.copy(BlockTags.FLOWERS, ItemTags.FLOWERS);
this.tag(ItemTags.BANNERS).add(Items.WHITE_BANNER, Items.ORANGE_BANNER, Items.MAGENTA_BANNER, Items.LIGHT_BLUE_BANNER, Items.YELLOW_BANNER, Items.LIME_BANNER, Items.PINK_BANNER, Items.GRAY_BANNER, Items.LIGHT_GRAY_BANNER, Items.CYAN_BANNER, Items.PURPLE_BANNER, Items.BLUE_BANNER, Items.BROWN_BANNER, Items.GREEN_BANNER, Items.RED_BANNER, Items.BLACK_BANNER);
this.tag(ItemTags.BOATS).add(Items.OAK_BOAT, Items.SPRUCE_BOAT, Items.BIRCH_BOAT, Items.JUNGLE_BOAT, Items.ACACIA_BOAT, Items.DARK_OAK_BOAT);
this.tag(ItemTags.FISHES).add(Items.COD, Items.COOKED_COD, Items.SALMON, Items.COOKED_SALMON, Items.PUFFERFISH, Items.TROPICAL_FISH);
this.copy(BlockTags.STANDING_SIGNS, ItemTags.SIGNS);
this.tag(ItemTags.MUSIC_DISCS).add(Items.MUSIC_DISC_13, Items.MUSIC_DISC_CAT, Items.MUSIC_DISC_BLOCKS, Items.MUSIC_DISC_CHIRP, Items.MUSIC_DISC_FAR, Items.MUSIC_DISC_MALL, Items.MUSIC_DISC_MELLOHI, Items.MUSIC_DISC_STAL, Items.MUSIC_DISC_STRAD, Items.MUSIC_DISC_WARD, Items.MUSIC_DISC_11, Items.MUSIC_DISC_WAIT);
this.tag(ItemTags.COALS).add(Items.COAL, Items.CHARCOAL);
this.tag(ItemTags.ARROWS).add(Items.ARROW, Items.TIPPED_ARROW, Items.SPECTRAL_ARROW);
this.tag(ItemTags.LECTERN_BOOKS).add(Items.WRITTEN_BOOK, Items.WRITABLE_BOOK);
}
protected void copy(final Tag<Block> aaz1, final Tag<Item> aaz2) {
final Tag.Builder<Item> a4 = this.tag(aaz2);
for (final Tag.Entry<Block> b6 : aaz1.getSource()) {
final Tag.Entry<Item> b7 = this.copy(b6);
a4.add(b7);
}
}
private Tag.Entry<Item> copy(final Tag.Entry<Block> b) {
if (b instanceof Tag.TagEntry) {
return new Tag.TagEntry<Item>(((Tag.TagEntry)b).getId());
}
if (b instanceof Tag.ValuesEntry) {
final List<Item> list3 = Lists.newArrayList();
for (final Block bpe5 : ((Tag.ValuesEntry)b).getValues()) {
final Item bef6 = bpe5.asItem();
if (bef6 == Items.AIR) {
ItemTagsProvider.LOGGER.warn("Itemless block copied to item tag: {}", Registry.BLOCK.getKey(bpe5));
}
else {
list3.add(bef6);
}
}
return new Tag.ValuesEntry<Item>(list3);
}
throw new UnsupportedOperationException("Unknown tag entry " + b);
}
@Override
protected Path getPath(final ResourceLocation sm) {
return this.generator.getOutputFolder().resolve("data/" + sm.getNamespace() + "/tags/items/" + sm.getPath() + ".json");
}
@Override
public String getName() {
return "Item Tags";
}
@Override
protected void useTags(final TagCollection<Item> aba) {
ItemTags.reset(aba);
}
static {
LOGGER = LogManager.getLogger();
}
}