minecraft-src/net/minecraft/world/item/CreativeModeTabs.java
2025-07-04 03:45:38 +03:00

1985 lines
82 KiB
Java

package net.minecraft.world.item;
import com.mojang.datafixers.util.Pair;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
import net.minecraft.nbt.NbtOps;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.RegistryOps;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.InstrumentTags;
import net.minecraft.tags.PaintingVariantTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.entity.decoration.PaintingVariant;
import net.minecraft.world.entity.raid.Raid;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.item.CreativeModeTab.ItemDisplayParameters;
import net.minecraft.world.item.CreativeModeTab.Output;
import net.minecraft.world.item.CreativeModeTab.Row;
import net.minecraft.world.item.CreativeModeTab.TabVisibility;
import net.minecraft.world.item.CreativeModeTab.Type;
import net.minecraft.world.item.alchemy.Potion;
import net.minecraft.world.item.alchemy.PotionContents;
import net.minecraft.world.item.component.Fireworks;
import net.minecraft.world.item.component.OminousBottleAmplifier;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.item.enchantment.EnchantmentInstance;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LightBlock;
import net.minecraft.world.level.block.SuspiciousEffectHolder;
import net.minecraft.world.level.block.TestBlock;
import net.minecraft.world.level.block.state.properties.TestBlockMode;
import org.jetbrains.annotations.Nullable;
public class CreativeModeTabs {
private static final ResourceLocation INVENTORY_BACKGROUND = CreativeModeTab.createTextureLocation("inventory");
private static final ResourceLocation SEARCH_BACKGROUND = CreativeModeTab.createTextureLocation("item_search");
private static final ResourceKey<CreativeModeTab> BUILDING_BLOCKS = createKey("building_blocks");
private static final ResourceKey<CreativeModeTab> COLORED_BLOCKS = createKey("colored_blocks");
private static final ResourceKey<CreativeModeTab> NATURAL_BLOCKS = createKey("natural_blocks");
private static final ResourceKey<CreativeModeTab> FUNCTIONAL_BLOCKS = createKey("functional_blocks");
private static final ResourceKey<CreativeModeTab> REDSTONE_BLOCKS = createKey("redstone_blocks");
private static final ResourceKey<CreativeModeTab> HOTBAR = createKey("hotbar");
private static final ResourceKey<CreativeModeTab> SEARCH = createKey("search");
private static final ResourceKey<CreativeModeTab> TOOLS_AND_UTILITIES = createKey("tools_and_utilities");
private static final ResourceKey<CreativeModeTab> COMBAT = createKey("combat");
private static final ResourceKey<CreativeModeTab> FOOD_AND_DRINKS = createKey("food_and_drinks");
private static final ResourceKey<CreativeModeTab> INGREDIENTS = createKey("ingredients");
private static final ResourceKey<CreativeModeTab> SPAWN_EGGS = createKey("spawn_eggs");
private static final ResourceKey<CreativeModeTab> OP_BLOCKS = createKey("op_blocks");
private static final ResourceKey<CreativeModeTab> INVENTORY = createKey("inventory");
private static final Comparator<Holder<PaintingVariant>> PAINTING_COMPARATOR = Comparator.comparing(
Holder::value, Comparator.comparingInt(PaintingVariant::area).thenComparing(PaintingVariant::width)
);
@Nullable
private static ItemDisplayParameters CACHED_PARAMETERS;
private static ResourceKey<CreativeModeTab> createKey(String name) {
return ResourceKey.create(Registries.CREATIVE_MODE_TAB, ResourceLocation.withDefaultNamespace(name));
}
public static CreativeModeTab bootstrap(Registry<CreativeModeTab> registry) {
Registry.register(
registry,
BUILDING_BLOCKS,
CreativeModeTab.builder(Row.TOP, 0)
.title(Component.translatable("itemGroup.buildingBlocks"))
.icon(() -> new ItemStack(Blocks.BRICKS))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.OAK_LOG);
output.accept(Items.OAK_WOOD);
output.accept(Items.STRIPPED_OAK_LOG);
output.accept(Items.STRIPPED_OAK_WOOD);
output.accept(Items.OAK_PLANKS);
output.accept(Items.OAK_STAIRS);
output.accept(Items.OAK_SLAB);
output.accept(Items.OAK_FENCE);
output.accept(Items.OAK_FENCE_GATE);
output.accept(Items.OAK_DOOR);
output.accept(Items.OAK_TRAPDOOR);
output.accept(Items.OAK_PRESSURE_PLATE);
output.accept(Items.OAK_BUTTON);
output.accept(Items.SPRUCE_LOG);
output.accept(Items.SPRUCE_WOOD);
output.accept(Items.STRIPPED_SPRUCE_LOG);
output.accept(Items.STRIPPED_SPRUCE_WOOD);
output.accept(Items.SPRUCE_PLANKS);
output.accept(Items.SPRUCE_STAIRS);
output.accept(Items.SPRUCE_SLAB);
output.accept(Items.SPRUCE_FENCE);
output.accept(Items.SPRUCE_FENCE_GATE);
output.accept(Items.SPRUCE_DOOR);
output.accept(Items.SPRUCE_TRAPDOOR);
output.accept(Items.SPRUCE_PRESSURE_PLATE);
output.accept(Items.SPRUCE_BUTTON);
output.accept(Items.BIRCH_LOG);
output.accept(Items.BIRCH_WOOD);
output.accept(Items.STRIPPED_BIRCH_LOG);
output.accept(Items.STRIPPED_BIRCH_WOOD);
output.accept(Items.BIRCH_PLANKS);
output.accept(Items.BIRCH_STAIRS);
output.accept(Items.BIRCH_SLAB);
output.accept(Items.BIRCH_FENCE);
output.accept(Items.BIRCH_FENCE_GATE);
output.accept(Items.BIRCH_DOOR);
output.accept(Items.BIRCH_TRAPDOOR);
output.accept(Items.BIRCH_PRESSURE_PLATE);
output.accept(Items.BIRCH_BUTTON);
output.accept(Items.JUNGLE_LOG);
output.accept(Items.JUNGLE_WOOD);
output.accept(Items.STRIPPED_JUNGLE_LOG);
output.accept(Items.STRIPPED_JUNGLE_WOOD);
output.accept(Items.JUNGLE_PLANKS);
output.accept(Items.JUNGLE_STAIRS);
output.accept(Items.JUNGLE_SLAB);
output.accept(Items.JUNGLE_FENCE);
output.accept(Items.JUNGLE_FENCE_GATE);
output.accept(Items.JUNGLE_DOOR);
output.accept(Items.JUNGLE_TRAPDOOR);
output.accept(Items.JUNGLE_PRESSURE_PLATE);
output.accept(Items.JUNGLE_BUTTON);
output.accept(Items.ACACIA_LOG);
output.accept(Items.ACACIA_WOOD);
output.accept(Items.STRIPPED_ACACIA_LOG);
output.accept(Items.STRIPPED_ACACIA_WOOD);
output.accept(Items.ACACIA_PLANKS);
output.accept(Items.ACACIA_STAIRS);
output.accept(Items.ACACIA_SLAB);
output.accept(Items.ACACIA_FENCE);
output.accept(Items.ACACIA_FENCE_GATE);
output.accept(Items.ACACIA_DOOR);
output.accept(Items.ACACIA_TRAPDOOR);
output.accept(Items.ACACIA_PRESSURE_PLATE);
output.accept(Items.ACACIA_BUTTON);
output.accept(Items.DARK_OAK_LOG);
output.accept(Items.DARK_OAK_WOOD);
output.accept(Items.STRIPPED_DARK_OAK_LOG);
output.accept(Items.STRIPPED_DARK_OAK_WOOD);
output.accept(Items.DARK_OAK_PLANKS);
output.accept(Items.DARK_OAK_STAIRS);
output.accept(Items.DARK_OAK_SLAB);
output.accept(Items.DARK_OAK_FENCE);
output.accept(Items.DARK_OAK_FENCE_GATE);
output.accept(Items.DARK_OAK_DOOR);
output.accept(Items.DARK_OAK_TRAPDOOR);
output.accept(Items.DARK_OAK_PRESSURE_PLATE);
output.accept(Items.DARK_OAK_BUTTON);
output.accept(Items.MANGROVE_LOG);
output.accept(Items.MANGROVE_WOOD);
output.accept(Items.STRIPPED_MANGROVE_LOG);
output.accept(Items.STRIPPED_MANGROVE_WOOD);
output.accept(Items.MANGROVE_PLANKS);
output.accept(Items.MANGROVE_STAIRS);
output.accept(Items.MANGROVE_SLAB);
output.accept(Items.MANGROVE_FENCE);
output.accept(Items.MANGROVE_FENCE_GATE);
output.accept(Items.MANGROVE_DOOR);
output.accept(Items.MANGROVE_TRAPDOOR);
output.accept(Items.MANGROVE_PRESSURE_PLATE);
output.accept(Items.MANGROVE_BUTTON);
output.accept(Items.CHERRY_LOG);
output.accept(Items.CHERRY_WOOD);
output.accept(Items.STRIPPED_CHERRY_LOG);
output.accept(Items.STRIPPED_CHERRY_WOOD);
output.accept(Items.CHERRY_PLANKS);
output.accept(Items.CHERRY_STAIRS);
output.accept(Items.CHERRY_SLAB);
output.accept(Items.CHERRY_FENCE);
output.accept(Items.CHERRY_FENCE_GATE);
output.accept(Items.CHERRY_DOOR);
output.accept(Items.CHERRY_TRAPDOOR);
output.accept(Items.CHERRY_PRESSURE_PLATE);
output.accept(Items.CHERRY_BUTTON);
output.accept(Items.PALE_OAK_LOG);
output.accept(Items.PALE_OAK_WOOD);
output.accept(Items.STRIPPED_PALE_OAK_LOG);
output.accept(Items.STRIPPED_PALE_OAK_WOOD);
output.accept(Items.PALE_OAK_PLANKS);
output.accept(Items.PALE_OAK_STAIRS);
output.accept(Items.PALE_OAK_SLAB);
output.accept(Items.PALE_OAK_FENCE);
output.accept(Items.PALE_OAK_FENCE_GATE);
output.accept(Items.PALE_OAK_DOOR);
output.accept(Items.PALE_OAK_TRAPDOOR);
output.accept(Items.PALE_OAK_PRESSURE_PLATE);
output.accept(Items.PALE_OAK_BUTTON);
output.accept(Items.BAMBOO_BLOCK);
output.accept(Items.STRIPPED_BAMBOO_BLOCK);
output.accept(Items.BAMBOO_PLANKS);
output.accept(Items.BAMBOO_MOSAIC);
output.accept(Items.BAMBOO_STAIRS);
output.accept(Items.BAMBOO_MOSAIC_STAIRS);
output.accept(Items.BAMBOO_SLAB);
output.accept(Items.BAMBOO_MOSAIC_SLAB);
output.accept(Items.BAMBOO_FENCE);
output.accept(Items.BAMBOO_FENCE_GATE);
output.accept(Items.BAMBOO_DOOR);
output.accept(Items.BAMBOO_TRAPDOOR);
output.accept(Items.BAMBOO_PRESSURE_PLATE);
output.accept(Items.BAMBOO_BUTTON);
output.accept(Items.CRIMSON_STEM);
output.accept(Items.CRIMSON_HYPHAE);
output.accept(Items.STRIPPED_CRIMSON_STEM);
output.accept(Items.STRIPPED_CRIMSON_HYPHAE);
output.accept(Items.CRIMSON_PLANKS);
output.accept(Items.CRIMSON_STAIRS);
output.accept(Items.CRIMSON_SLAB);
output.accept(Items.CRIMSON_FENCE);
output.accept(Items.CRIMSON_FENCE_GATE);
output.accept(Items.CRIMSON_DOOR);
output.accept(Items.CRIMSON_TRAPDOOR);
output.accept(Items.CRIMSON_PRESSURE_PLATE);
output.accept(Items.CRIMSON_BUTTON);
output.accept(Items.WARPED_STEM);
output.accept(Items.WARPED_HYPHAE);
output.accept(Items.STRIPPED_WARPED_STEM);
output.accept(Items.STRIPPED_WARPED_HYPHAE);
output.accept(Items.WARPED_PLANKS);
output.accept(Items.WARPED_STAIRS);
output.accept(Items.WARPED_SLAB);
output.accept(Items.WARPED_FENCE);
output.accept(Items.WARPED_FENCE_GATE);
output.accept(Items.WARPED_DOOR);
output.accept(Items.WARPED_TRAPDOOR);
output.accept(Items.WARPED_PRESSURE_PLATE);
output.accept(Items.WARPED_BUTTON);
output.accept(Items.STONE);
output.accept(Items.STONE_STAIRS);
output.accept(Items.STONE_SLAB);
output.accept(Items.STONE_PRESSURE_PLATE);
output.accept(Items.STONE_BUTTON);
output.accept(Items.COBBLESTONE);
output.accept(Items.COBBLESTONE_STAIRS);
output.accept(Items.COBBLESTONE_SLAB);
output.accept(Items.COBBLESTONE_WALL);
output.accept(Items.MOSSY_COBBLESTONE);
output.accept(Items.MOSSY_COBBLESTONE_STAIRS);
output.accept(Items.MOSSY_COBBLESTONE_SLAB);
output.accept(Items.MOSSY_COBBLESTONE_WALL);
output.accept(Items.SMOOTH_STONE);
output.accept(Items.SMOOTH_STONE_SLAB);
output.accept(Items.STONE_BRICKS);
output.accept(Items.CRACKED_STONE_BRICKS);
output.accept(Items.STONE_BRICK_STAIRS);
output.accept(Items.STONE_BRICK_SLAB);
output.accept(Items.STONE_BRICK_WALL);
output.accept(Items.CHISELED_STONE_BRICKS);
output.accept(Items.MOSSY_STONE_BRICKS);
output.accept(Items.MOSSY_STONE_BRICK_STAIRS);
output.accept(Items.MOSSY_STONE_BRICK_SLAB);
output.accept(Items.MOSSY_STONE_BRICK_WALL);
output.accept(Items.GRANITE);
output.accept(Items.GRANITE_STAIRS);
output.accept(Items.GRANITE_SLAB);
output.accept(Items.GRANITE_WALL);
output.accept(Items.POLISHED_GRANITE);
output.accept(Items.POLISHED_GRANITE_STAIRS);
output.accept(Items.POLISHED_GRANITE_SLAB);
output.accept(Items.DIORITE);
output.accept(Items.DIORITE_STAIRS);
output.accept(Items.DIORITE_SLAB);
output.accept(Items.DIORITE_WALL);
output.accept(Items.POLISHED_DIORITE);
output.accept(Items.POLISHED_DIORITE_STAIRS);
output.accept(Items.POLISHED_DIORITE_SLAB);
output.accept(Items.ANDESITE);
output.accept(Items.ANDESITE_STAIRS);
output.accept(Items.ANDESITE_SLAB);
output.accept(Items.ANDESITE_WALL);
output.accept(Items.POLISHED_ANDESITE);
output.accept(Items.POLISHED_ANDESITE_STAIRS);
output.accept(Items.POLISHED_ANDESITE_SLAB);
output.accept(Items.DEEPSLATE);
output.accept(Items.COBBLED_DEEPSLATE);
output.accept(Items.COBBLED_DEEPSLATE_STAIRS);
output.accept(Items.COBBLED_DEEPSLATE_SLAB);
output.accept(Items.COBBLED_DEEPSLATE_WALL);
output.accept(Items.CHISELED_DEEPSLATE);
output.accept(Items.POLISHED_DEEPSLATE);
output.accept(Items.POLISHED_DEEPSLATE_STAIRS);
output.accept(Items.POLISHED_DEEPSLATE_SLAB);
output.accept(Items.POLISHED_DEEPSLATE_WALL);
output.accept(Items.DEEPSLATE_BRICKS);
output.accept(Items.CRACKED_DEEPSLATE_BRICKS);
output.accept(Items.DEEPSLATE_BRICK_STAIRS);
output.accept(Items.DEEPSLATE_BRICK_SLAB);
output.accept(Items.DEEPSLATE_BRICK_WALL);
output.accept(Items.DEEPSLATE_TILES);
output.accept(Items.CRACKED_DEEPSLATE_TILES);
output.accept(Items.DEEPSLATE_TILE_STAIRS);
output.accept(Items.DEEPSLATE_TILE_SLAB);
output.accept(Items.DEEPSLATE_TILE_WALL);
output.accept(Items.REINFORCED_DEEPSLATE);
output.accept(Items.TUFF);
output.accept(Items.TUFF_STAIRS);
output.accept(Items.TUFF_SLAB);
output.accept(Items.TUFF_WALL);
output.accept(Items.CHISELED_TUFF);
output.accept(Items.POLISHED_TUFF);
output.accept(Items.POLISHED_TUFF_STAIRS);
output.accept(Items.POLISHED_TUFF_SLAB);
output.accept(Items.POLISHED_TUFF_WALL);
output.accept(Items.TUFF_BRICKS);
output.accept(Items.TUFF_BRICK_STAIRS);
output.accept(Items.TUFF_BRICK_SLAB);
output.accept(Items.TUFF_BRICK_WALL);
output.accept(Items.CHISELED_TUFF_BRICKS);
output.accept(Items.BRICKS);
output.accept(Items.BRICK_STAIRS);
output.accept(Items.BRICK_SLAB);
output.accept(Items.BRICK_WALL);
output.accept(Items.PACKED_MUD);
output.accept(Items.MUD_BRICKS);
output.accept(Items.MUD_BRICK_STAIRS);
output.accept(Items.MUD_BRICK_SLAB);
output.accept(Items.MUD_BRICK_WALL);
output.accept(Items.RESIN_BRICKS);
output.accept(Items.RESIN_BRICK_STAIRS);
output.accept(Items.RESIN_BRICK_SLAB);
output.accept(Items.RESIN_BRICK_WALL);
output.accept(Items.CHISELED_RESIN_BRICKS);
output.accept(Items.SANDSTONE);
output.accept(Items.SANDSTONE_STAIRS);
output.accept(Items.SANDSTONE_SLAB);
output.accept(Items.SANDSTONE_WALL);
output.accept(Items.CHISELED_SANDSTONE);
output.accept(Items.SMOOTH_SANDSTONE);
output.accept(Items.SMOOTH_SANDSTONE_STAIRS);
output.accept(Items.SMOOTH_SANDSTONE_SLAB);
output.accept(Items.CUT_SANDSTONE);
output.accept(Items.CUT_STANDSTONE_SLAB);
output.accept(Items.RED_SANDSTONE);
output.accept(Items.RED_SANDSTONE_STAIRS);
output.accept(Items.RED_SANDSTONE_SLAB);
output.accept(Items.RED_SANDSTONE_WALL);
output.accept(Items.CHISELED_RED_SANDSTONE);
output.accept(Items.SMOOTH_RED_SANDSTONE);
output.accept(Items.SMOOTH_RED_SANDSTONE_STAIRS);
output.accept(Items.SMOOTH_RED_SANDSTONE_SLAB);
output.accept(Items.CUT_RED_SANDSTONE);
output.accept(Items.CUT_RED_SANDSTONE_SLAB);
output.accept(Items.SEA_LANTERN);
output.accept(Items.PRISMARINE);
output.accept(Items.PRISMARINE_STAIRS);
output.accept(Items.PRISMARINE_SLAB);
output.accept(Items.PRISMARINE_WALL);
output.accept(Items.PRISMARINE_BRICKS);
output.accept(Items.PRISMARINE_BRICK_STAIRS);
output.accept(Items.PRISMARINE_BRICK_SLAB);
output.accept(Items.DARK_PRISMARINE);
output.accept(Items.DARK_PRISMARINE_STAIRS);
output.accept(Items.DARK_PRISMARINE_SLAB);
output.accept(Items.NETHERRACK);
output.accept(Items.NETHER_BRICKS);
output.accept(Items.CRACKED_NETHER_BRICKS);
output.accept(Items.NETHER_BRICK_STAIRS);
output.accept(Items.NETHER_BRICK_SLAB);
output.accept(Items.NETHER_BRICK_WALL);
output.accept(Items.NETHER_BRICK_FENCE);
output.accept(Items.CHISELED_NETHER_BRICKS);
output.accept(Items.RED_NETHER_BRICKS);
output.accept(Items.RED_NETHER_BRICK_STAIRS);
output.accept(Items.RED_NETHER_BRICK_SLAB);
output.accept(Items.RED_NETHER_BRICK_WALL);
output.accept(Items.BASALT);
output.accept(Items.SMOOTH_BASALT);
output.accept(Items.POLISHED_BASALT);
output.accept(Items.BLACKSTONE);
output.accept(Items.GILDED_BLACKSTONE);
output.accept(Items.BLACKSTONE_STAIRS);
output.accept(Items.BLACKSTONE_SLAB);
output.accept(Items.BLACKSTONE_WALL);
output.accept(Items.CHISELED_POLISHED_BLACKSTONE);
output.accept(Items.POLISHED_BLACKSTONE);
output.accept(Items.POLISHED_BLACKSTONE_STAIRS);
output.accept(Items.POLISHED_BLACKSTONE_SLAB);
output.accept(Items.POLISHED_BLACKSTONE_WALL);
output.accept(Items.POLISHED_BLACKSTONE_PRESSURE_PLATE);
output.accept(Items.POLISHED_BLACKSTONE_BUTTON);
output.accept(Items.POLISHED_BLACKSTONE_BRICKS);
output.accept(Items.CRACKED_POLISHED_BLACKSTONE_BRICKS);
output.accept(Items.POLISHED_BLACKSTONE_BRICK_STAIRS);
output.accept(Items.POLISHED_BLACKSTONE_BRICK_SLAB);
output.accept(Items.POLISHED_BLACKSTONE_BRICK_WALL);
output.accept(Items.END_STONE);
output.accept(Items.END_STONE_BRICKS);
output.accept(Items.END_STONE_BRICK_STAIRS);
output.accept(Items.END_STONE_BRICK_SLAB);
output.accept(Items.END_STONE_BRICK_WALL);
output.accept(Items.PURPUR_BLOCK);
output.accept(Items.PURPUR_PILLAR);
output.accept(Items.PURPUR_STAIRS);
output.accept(Items.PURPUR_SLAB);
output.accept(Items.COAL_BLOCK);
output.accept(Items.IRON_BLOCK);
output.accept(Items.IRON_BARS);
output.accept(Items.IRON_DOOR);
output.accept(Items.IRON_TRAPDOOR);
output.accept(Items.HEAVY_WEIGHTED_PRESSURE_PLATE);
output.accept(Items.CHAIN);
output.accept(Items.GOLD_BLOCK);
output.accept(Items.LIGHT_WEIGHTED_PRESSURE_PLATE);
output.accept(Items.REDSTONE_BLOCK);
output.accept(Items.EMERALD_BLOCK);
output.accept(Items.LAPIS_BLOCK);
output.accept(Items.DIAMOND_BLOCK);
output.accept(Items.NETHERITE_BLOCK);
output.accept(Items.QUARTZ_BLOCK);
output.accept(Items.QUARTZ_STAIRS);
output.accept(Items.QUARTZ_SLAB);
output.accept(Items.CHISELED_QUARTZ_BLOCK);
output.accept(Items.QUARTZ_BRICKS);
output.accept(Items.QUARTZ_PILLAR);
output.accept(Items.SMOOTH_QUARTZ);
output.accept(Items.SMOOTH_QUARTZ_STAIRS);
output.accept(Items.SMOOTH_QUARTZ_SLAB);
output.accept(Items.AMETHYST_BLOCK);
output.accept(Items.COPPER_BLOCK);
output.accept(Items.CHISELED_COPPER);
output.accept(Items.COPPER_GRATE);
output.accept(Items.CUT_COPPER);
output.accept(Items.CUT_COPPER_STAIRS);
output.accept(Items.CUT_COPPER_SLAB);
output.accept(Items.COPPER_DOOR);
output.accept(Items.COPPER_TRAPDOOR);
output.accept(Items.COPPER_BULB);
output.accept(Items.EXPOSED_COPPER);
output.accept(Items.EXPOSED_CHISELED_COPPER);
output.accept(Items.EXPOSED_COPPER_GRATE);
output.accept(Items.EXPOSED_CUT_COPPER);
output.accept(Items.EXPOSED_CUT_COPPER_STAIRS);
output.accept(Items.EXPOSED_CUT_COPPER_SLAB);
output.accept(Items.EXPOSED_COPPER_DOOR);
output.accept(Items.EXPOSED_COPPER_TRAPDOOR);
output.accept(Items.EXPOSED_COPPER_BULB);
output.accept(Items.WEATHERED_COPPER);
output.accept(Items.WEATHERED_CHISELED_COPPER);
output.accept(Items.WEATHERED_COPPER_GRATE);
output.accept(Items.WEATHERED_CUT_COPPER);
output.accept(Items.WEATHERED_CUT_COPPER_STAIRS);
output.accept(Items.WEATHERED_CUT_COPPER_SLAB);
output.accept(Items.WEATHERED_COPPER_DOOR);
output.accept(Items.WEATHERED_COPPER_TRAPDOOR);
output.accept(Items.WEATHERED_COPPER_BULB);
output.accept(Items.OXIDIZED_COPPER);
output.accept(Items.OXIDIZED_CHISELED_COPPER);
output.accept(Items.OXIDIZED_COPPER_GRATE);
output.accept(Items.OXIDIZED_CUT_COPPER);
output.accept(Items.OXIDIZED_CUT_COPPER_STAIRS);
output.accept(Items.OXIDIZED_CUT_COPPER_SLAB);
output.accept(Items.OXIDIZED_COPPER_DOOR);
output.accept(Items.OXIDIZED_COPPER_TRAPDOOR);
output.accept(Items.OXIDIZED_COPPER_BULB);
output.accept(Items.WAXED_COPPER_BLOCK);
output.accept(Items.WAXED_CHISELED_COPPER);
output.accept(Items.WAXED_COPPER_GRATE);
output.accept(Items.WAXED_CUT_COPPER);
output.accept(Items.WAXED_CUT_COPPER_STAIRS);
output.accept(Items.WAXED_CUT_COPPER_SLAB);
output.accept(Items.WAXED_COPPER_DOOR);
output.accept(Items.WAXED_COPPER_TRAPDOOR);
output.accept(Items.WAXED_COPPER_BULB);
output.accept(Items.WAXED_EXPOSED_COPPER);
output.accept(Items.WAXED_EXPOSED_CHISELED_COPPER);
output.accept(Items.WAXED_EXPOSED_COPPER_GRATE);
output.accept(Items.WAXED_EXPOSED_CUT_COPPER);
output.accept(Items.WAXED_EXPOSED_CUT_COPPER_STAIRS);
output.accept(Items.WAXED_EXPOSED_CUT_COPPER_SLAB);
output.accept(Items.WAXED_EXPOSED_COPPER_DOOR);
output.accept(Items.WAXED_EXPOSED_COPPER_TRAPDOOR);
output.accept(Items.WAXED_EXPOSED_COPPER_BULB);
output.accept(Items.WAXED_WEATHERED_COPPER);
output.accept(Items.WAXED_WEATHERED_CHISELED_COPPER);
output.accept(Items.WAXED_WEATHERED_COPPER_GRATE);
output.accept(Items.WAXED_WEATHERED_CUT_COPPER);
output.accept(Items.WAXED_WEATHERED_CUT_COPPER_STAIRS);
output.accept(Items.WAXED_WEATHERED_CUT_COPPER_SLAB);
output.accept(Items.WAXED_WEATHERED_COPPER_DOOR);
output.accept(Items.WAXED_WEATHERED_COPPER_TRAPDOOR);
output.accept(Items.WAXED_WEATHERED_COPPER_BULB);
output.accept(Items.WAXED_OXIDIZED_COPPER);
output.accept(Items.WAXED_OXIDIZED_CHISELED_COPPER);
output.accept(Items.WAXED_OXIDIZED_COPPER_GRATE);
output.accept(Items.WAXED_OXIDIZED_CUT_COPPER);
output.accept(Items.WAXED_OXIDIZED_CUT_COPPER_STAIRS);
output.accept(Items.WAXED_OXIDIZED_CUT_COPPER_SLAB);
output.accept(Items.WAXED_OXIDIZED_COPPER_DOOR);
output.accept(Items.WAXED_OXIDIZED_COPPER_TRAPDOOR);
output.accept(Items.WAXED_OXIDIZED_COPPER_BULB);
})
.build()
);
Registry.register(
registry,
COLORED_BLOCKS,
CreativeModeTab.builder(Row.TOP, 1)
.title(Component.translatable("itemGroup.coloredBlocks"))
.icon(() -> new ItemStack(Blocks.CYAN_WOOL))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.WHITE_WOOL);
output.accept(Items.LIGHT_GRAY_WOOL);
output.accept(Items.GRAY_WOOL);
output.accept(Items.BLACK_WOOL);
output.accept(Items.BROWN_WOOL);
output.accept(Items.RED_WOOL);
output.accept(Items.ORANGE_WOOL);
output.accept(Items.YELLOW_WOOL);
output.accept(Items.LIME_WOOL);
output.accept(Items.GREEN_WOOL);
output.accept(Items.CYAN_WOOL);
output.accept(Items.LIGHT_BLUE_WOOL);
output.accept(Items.BLUE_WOOL);
output.accept(Items.PURPLE_WOOL);
output.accept(Items.MAGENTA_WOOL);
output.accept(Items.PINK_WOOL);
output.accept(Items.WHITE_CARPET);
output.accept(Items.LIGHT_GRAY_CARPET);
output.accept(Items.GRAY_CARPET);
output.accept(Items.BLACK_CARPET);
output.accept(Items.BROWN_CARPET);
output.accept(Items.RED_CARPET);
output.accept(Items.ORANGE_CARPET);
output.accept(Items.YELLOW_CARPET);
output.accept(Items.LIME_CARPET);
output.accept(Items.GREEN_CARPET);
output.accept(Items.CYAN_CARPET);
output.accept(Items.LIGHT_BLUE_CARPET);
output.accept(Items.BLUE_CARPET);
output.accept(Items.PURPLE_CARPET);
output.accept(Items.MAGENTA_CARPET);
output.accept(Items.PINK_CARPET);
output.accept(Items.TERRACOTTA);
output.accept(Items.WHITE_TERRACOTTA);
output.accept(Items.LIGHT_GRAY_TERRACOTTA);
output.accept(Items.GRAY_TERRACOTTA);
output.accept(Items.BLACK_TERRACOTTA);
output.accept(Items.BROWN_TERRACOTTA);
output.accept(Items.RED_TERRACOTTA);
output.accept(Items.ORANGE_TERRACOTTA);
output.accept(Items.YELLOW_TERRACOTTA);
output.accept(Items.LIME_TERRACOTTA);
output.accept(Items.GREEN_TERRACOTTA);
output.accept(Items.CYAN_TERRACOTTA);
output.accept(Items.LIGHT_BLUE_TERRACOTTA);
output.accept(Items.BLUE_TERRACOTTA);
output.accept(Items.PURPLE_TERRACOTTA);
output.accept(Items.MAGENTA_TERRACOTTA);
output.accept(Items.PINK_TERRACOTTA);
output.accept(Items.WHITE_CONCRETE);
output.accept(Items.LIGHT_GRAY_CONCRETE);
output.accept(Items.GRAY_CONCRETE);
output.accept(Items.BLACK_CONCRETE);
output.accept(Items.BROWN_CONCRETE);
output.accept(Items.RED_CONCRETE);
output.accept(Items.ORANGE_CONCRETE);
output.accept(Items.YELLOW_CONCRETE);
output.accept(Items.LIME_CONCRETE);
output.accept(Items.GREEN_CONCRETE);
output.accept(Items.CYAN_CONCRETE);
output.accept(Items.LIGHT_BLUE_CONCRETE);
output.accept(Items.BLUE_CONCRETE);
output.accept(Items.PURPLE_CONCRETE);
output.accept(Items.MAGENTA_CONCRETE);
output.accept(Items.PINK_CONCRETE);
output.accept(Items.WHITE_CONCRETE_POWDER);
output.accept(Items.LIGHT_GRAY_CONCRETE_POWDER);
output.accept(Items.GRAY_CONCRETE_POWDER);
output.accept(Items.BLACK_CONCRETE_POWDER);
output.accept(Items.BROWN_CONCRETE_POWDER);
output.accept(Items.RED_CONCRETE_POWDER);
output.accept(Items.ORANGE_CONCRETE_POWDER);
output.accept(Items.YELLOW_CONCRETE_POWDER);
output.accept(Items.LIME_CONCRETE_POWDER);
output.accept(Items.GREEN_CONCRETE_POWDER);
output.accept(Items.CYAN_CONCRETE_POWDER);
output.accept(Items.LIGHT_BLUE_CONCRETE_POWDER);
output.accept(Items.BLUE_CONCRETE_POWDER);
output.accept(Items.PURPLE_CONCRETE_POWDER);
output.accept(Items.MAGENTA_CONCRETE_POWDER);
output.accept(Items.PINK_CONCRETE_POWDER);
output.accept(Items.WHITE_GLAZED_TERRACOTTA);
output.accept(Items.LIGHT_GRAY_GLAZED_TERRACOTTA);
output.accept(Items.GRAY_GLAZED_TERRACOTTA);
output.accept(Items.BLACK_GLAZED_TERRACOTTA);
output.accept(Items.BROWN_GLAZED_TERRACOTTA);
output.accept(Items.RED_GLAZED_TERRACOTTA);
output.accept(Items.ORANGE_GLAZED_TERRACOTTA);
output.accept(Items.YELLOW_GLAZED_TERRACOTTA);
output.accept(Items.LIME_GLAZED_TERRACOTTA);
output.accept(Items.GREEN_GLAZED_TERRACOTTA);
output.accept(Items.CYAN_GLAZED_TERRACOTTA);
output.accept(Items.LIGHT_BLUE_GLAZED_TERRACOTTA);
output.accept(Items.BLUE_GLAZED_TERRACOTTA);
output.accept(Items.PURPLE_GLAZED_TERRACOTTA);
output.accept(Items.MAGENTA_GLAZED_TERRACOTTA);
output.accept(Items.PINK_GLAZED_TERRACOTTA);
output.accept(Items.GLASS);
output.accept(Items.TINTED_GLASS);
output.accept(Items.WHITE_STAINED_GLASS);
output.accept(Items.LIGHT_GRAY_STAINED_GLASS);
output.accept(Items.GRAY_STAINED_GLASS);
output.accept(Items.BLACK_STAINED_GLASS);
output.accept(Items.BROWN_STAINED_GLASS);
output.accept(Items.RED_STAINED_GLASS);
output.accept(Items.ORANGE_STAINED_GLASS);
output.accept(Items.YELLOW_STAINED_GLASS);
output.accept(Items.LIME_STAINED_GLASS);
output.accept(Items.GREEN_STAINED_GLASS);
output.accept(Items.CYAN_STAINED_GLASS);
output.accept(Items.LIGHT_BLUE_STAINED_GLASS);
output.accept(Items.BLUE_STAINED_GLASS);
output.accept(Items.PURPLE_STAINED_GLASS);
output.accept(Items.MAGENTA_STAINED_GLASS);
output.accept(Items.PINK_STAINED_GLASS);
output.accept(Items.GLASS_PANE);
output.accept(Items.WHITE_STAINED_GLASS_PANE);
output.accept(Items.LIGHT_GRAY_STAINED_GLASS_PANE);
output.accept(Items.GRAY_STAINED_GLASS_PANE);
output.accept(Items.BLACK_STAINED_GLASS_PANE);
output.accept(Items.BROWN_STAINED_GLASS_PANE);
output.accept(Items.RED_STAINED_GLASS_PANE);
output.accept(Items.ORANGE_STAINED_GLASS_PANE);
output.accept(Items.YELLOW_STAINED_GLASS_PANE);
output.accept(Items.LIME_STAINED_GLASS_PANE);
output.accept(Items.GREEN_STAINED_GLASS_PANE);
output.accept(Items.CYAN_STAINED_GLASS_PANE);
output.accept(Items.LIGHT_BLUE_STAINED_GLASS_PANE);
output.accept(Items.BLUE_STAINED_GLASS_PANE);
output.accept(Items.PURPLE_STAINED_GLASS_PANE);
output.accept(Items.MAGENTA_STAINED_GLASS_PANE);
output.accept(Items.PINK_STAINED_GLASS_PANE);
output.accept(Items.SHULKER_BOX);
output.accept(Items.WHITE_SHULKER_BOX);
output.accept(Items.LIGHT_GRAY_SHULKER_BOX);
output.accept(Items.GRAY_SHULKER_BOX);
output.accept(Items.BLACK_SHULKER_BOX);
output.accept(Items.BROWN_SHULKER_BOX);
output.accept(Items.RED_SHULKER_BOX);
output.accept(Items.ORANGE_SHULKER_BOX);
output.accept(Items.YELLOW_SHULKER_BOX);
output.accept(Items.LIME_SHULKER_BOX);
output.accept(Items.GREEN_SHULKER_BOX);
output.accept(Items.CYAN_SHULKER_BOX);
output.accept(Items.LIGHT_BLUE_SHULKER_BOX);
output.accept(Items.BLUE_SHULKER_BOX);
output.accept(Items.PURPLE_SHULKER_BOX);
output.accept(Items.MAGENTA_SHULKER_BOX);
output.accept(Items.PINK_SHULKER_BOX);
output.accept(Items.WHITE_BED);
output.accept(Items.LIGHT_GRAY_BED);
output.accept(Items.GRAY_BED);
output.accept(Items.BLACK_BED);
output.accept(Items.BROWN_BED);
output.accept(Items.RED_BED);
output.accept(Items.ORANGE_BED);
output.accept(Items.YELLOW_BED);
output.accept(Items.LIME_BED);
output.accept(Items.GREEN_BED);
output.accept(Items.CYAN_BED);
output.accept(Items.LIGHT_BLUE_BED);
output.accept(Items.BLUE_BED);
output.accept(Items.PURPLE_BED);
output.accept(Items.MAGENTA_BED);
output.accept(Items.PINK_BED);
output.accept(Items.CANDLE);
output.accept(Items.WHITE_CANDLE);
output.accept(Items.LIGHT_GRAY_CANDLE);
output.accept(Items.GRAY_CANDLE);
output.accept(Items.BLACK_CANDLE);
output.accept(Items.BROWN_CANDLE);
output.accept(Items.RED_CANDLE);
output.accept(Items.ORANGE_CANDLE);
output.accept(Items.YELLOW_CANDLE);
output.accept(Items.LIME_CANDLE);
output.accept(Items.GREEN_CANDLE);
output.accept(Items.CYAN_CANDLE);
output.accept(Items.LIGHT_BLUE_CANDLE);
output.accept(Items.BLUE_CANDLE);
output.accept(Items.PURPLE_CANDLE);
output.accept(Items.MAGENTA_CANDLE);
output.accept(Items.PINK_CANDLE);
output.accept(Items.WHITE_BANNER);
output.accept(Items.LIGHT_GRAY_BANNER);
output.accept(Items.GRAY_BANNER);
output.accept(Items.BLACK_BANNER);
output.accept(Items.BROWN_BANNER);
output.accept(Items.RED_BANNER);
output.accept(Items.ORANGE_BANNER);
output.accept(Items.YELLOW_BANNER);
output.accept(Items.LIME_BANNER);
output.accept(Items.GREEN_BANNER);
output.accept(Items.CYAN_BANNER);
output.accept(Items.LIGHT_BLUE_BANNER);
output.accept(Items.BLUE_BANNER);
output.accept(Items.PURPLE_BANNER);
output.accept(Items.MAGENTA_BANNER);
output.accept(Items.PINK_BANNER);
})
.build()
);
Registry.register(
registry,
NATURAL_BLOCKS,
CreativeModeTab.builder(Row.TOP, 2)
.title(Component.translatable("itemGroup.natural"))
.icon(() -> new ItemStack(Blocks.GRASS_BLOCK))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.GRASS_BLOCK);
output.accept(Items.PODZOL);
output.accept(Items.MYCELIUM);
output.accept(Items.DIRT_PATH);
output.accept(Items.DIRT);
output.accept(Items.COARSE_DIRT);
output.accept(Items.ROOTED_DIRT);
output.accept(Items.FARMLAND);
output.accept(Items.MUD);
output.accept(Items.CLAY);
output.accept(Items.GRAVEL);
output.accept(Items.SAND);
output.accept(Items.SANDSTONE);
output.accept(Items.RED_SAND);
output.accept(Items.RED_SANDSTONE);
output.accept(Items.ICE);
output.accept(Items.PACKED_ICE);
output.accept(Items.BLUE_ICE);
output.accept(Items.SNOW_BLOCK);
output.accept(Items.SNOW);
output.accept(Items.MOSS_BLOCK);
output.accept(Items.MOSS_CARPET);
output.accept(Items.PALE_MOSS_BLOCK);
output.accept(Items.PALE_MOSS_CARPET);
output.accept(Items.PALE_HANGING_MOSS);
output.accept(Items.STONE);
output.accept(Items.DEEPSLATE);
output.accept(Items.GRANITE);
output.accept(Items.DIORITE);
output.accept(Items.ANDESITE);
output.accept(Items.CALCITE);
output.accept(Items.TUFF);
output.accept(Items.DRIPSTONE_BLOCK);
output.accept(Items.POINTED_DRIPSTONE);
output.accept(Items.PRISMARINE);
output.accept(Items.MAGMA_BLOCK);
output.accept(Items.OBSIDIAN);
output.accept(Items.CRYING_OBSIDIAN);
output.accept(Items.NETHERRACK);
output.accept(Items.CRIMSON_NYLIUM);
output.accept(Items.WARPED_NYLIUM);
output.accept(Items.SOUL_SAND);
output.accept(Items.SOUL_SOIL);
output.accept(Items.BONE_BLOCK);
output.accept(Items.BLACKSTONE);
output.accept(Items.BASALT);
output.accept(Items.SMOOTH_BASALT);
output.accept(Items.END_STONE);
output.accept(Items.COAL_ORE);
output.accept(Items.DEEPSLATE_COAL_ORE);
output.accept(Items.IRON_ORE);
output.accept(Items.DEEPSLATE_IRON_ORE);
output.accept(Items.COPPER_ORE);
output.accept(Items.DEEPSLATE_COPPER_ORE);
output.accept(Items.GOLD_ORE);
output.accept(Items.DEEPSLATE_GOLD_ORE);
output.accept(Items.REDSTONE_ORE);
output.accept(Items.DEEPSLATE_REDSTONE_ORE);
output.accept(Items.EMERALD_ORE);
output.accept(Items.DEEPSLATE_EMERALD_ORE);
output.accept(Items.LAPIS_ORE);
output.accept(Items.DEEPSLATE_LAPIS_ORE);
output.accept(Items.DIAMOND_ORE);
output.accept(Items.DEEPSLATE_DIAMOND_ORE);
output.accept(Items.NETHER_GOLD_ORE);
output.accept(Items.NETHER_QUARTZ_ORE);
output.accept(Items.ANCIENT_DEBRIS);
output.accept(Items.RAW_IRON_BLOCK);
output.accept(Items.RAW_COPPER_BLOCK);
output.accept(Items.RAW_GOLD_BLOCK);
output.accept(Items.GLOWSTONE);
output.accept(Items.AMETHYST_BLOCK);
output.accept(Items.BUDDING_AMETHYST);
output.accept(Items.SMALL_AMETHYST_BUD);
output.accept(Items.MEDIUM_AMETHYST_BUD);
output.accept(Items.LARGE_AMETHYST_BUD);
output.accept(Items.AMETHYST_CLUSTER);
output.accept(Items.OAK_LOG);
output.accept(Items.SPRUCE_LOG);
output.accept(Items.BIRCH_LOG);
output.accept(Items.JUNGLE_LOG);
output.accept(Items.ACACIA_LOG);
output.accept(Items.DARK_OAK_LOG);
output.accept(Items.MANGROVE_LOG);
output.accept(Items.MANGROVE_ROOTS);
output.accept(Items.MUDDY_MANGROVE_ROOTS);
output.accept(Items.CHERRY_LOG);
output.accept(Items.PALE_OAK_LOG);
output.accept(Items.MUSHROOM_STEM);
output.accept(Items.CRIMSON_STEM);
output.accept(Items.WARPED_STEM);
output.accept(Items.OAK_LEAVES);
output.accept(Items.SPRUCE_LEAVES);
output.accept(Items.BIRCH_LEAVES);
output.accept(Items.JUNGLE_LEAVES);
output.accept(Items.ACACIA_LEAVES);
output.accept(Items.DARK_OAK_LEAVES);
output.accept(Items.MANGROVE_LEAVES);
output.accept(Items.CHERRY_LEAVES);
output.accept(Items.PALE_OAK_LEAVES);
output.accept(Items.AZALEA_LEAVES);
output.accept(Items.FLOWERING_AZALEA_LEAVES);
output.accept(Items.BROWN_MUSHROOM_BLOCK);
output.accept(Items.RED_MUSHROOM_BLOCK);
output.accept(Items.NETHER_WART_BLOCK);
output.accept(Items.WARPED_WART_BLOCK);
output.accept(Items.SHROOMLIGHT);
output.accept(Items.OAK_SAPLING);
output.accept(Items.SPRUCE_SAPLING);
output.accept(Items.BIRCH_SAPLING);
output.accept(Items.JUNGLE_SAPLING);
output.accept(Items.ACACIA_SAPLING);
output.accept(Items.DARK_OAK_SAPLING);
output.accept(Items.MANGROVE_PROPAGULE);
output.accept(Items.CHERRY_SAPLING);
output.accept(Items.PALE_OAK_SAPLING);
output.accept(Items.AZALEA);
output.accept(Items.FLOWERING_AZALEA);
output.accept(Items.BROWN_MUSHROOM);
output.accept(Items.RED_MUSHROOM);
output.accept(Items.CRIMSON_FUNGUS);
output.accept(Items.WARPED_FUNGUS);
output.accept(Items.SHORT_GRASS);
output.accept(Items.FERN);
output.accept(Items.DRY_SHORT_GRASS);
output.accept(Items.BUSH);
output.accept(Items.DEAD_BUSH);
output.accept(Items.DANDELION);
output.accept(Items.POPPY);
output.accept(Items.BLUE_ORCHID);
output.accept(Items.ALLIUM);
output.accept(Items.AZURE_BLUET);
output.accept(Items.RED_TULIP);
output.accept(Items.ORANGE_TULIP);
output.accept(Items.WHITE_TULIP);
output.accept(Items.PINK_TULIP);
output.accept(Items.OXEYE_DAISY);
output.accept(Items.CORNFLOWER);
output.accept(Items.LILY_OF_THE_VALLEY);
output.accept(Items.TORCHFLOWER);
output.accept(Items.CACTUS_FLOWER);
output.accept(Items.CLOSED_EYEBLOSSOM);
output.accept(Items.OPEN_EYEBLOSSOM);
output.accept(Items.WITHER_ROSE);
output.accept(Items.PINK_PETALS);
output.accept(Items.WILDFLOWERS);
output.accept(Items.LEAF_LITTER);
output.accept(Items.SPORE_BLOSSOM);
output.accept(Items.FIREFLY_BUSH);
output.accept(Items.BAMBOO);
output.accept(Items.SUGAR_CANE);
output.accept(Items.CACTUS);
output.accept(Items.CRIMSON_ROOTS);
output.accept(Items.WARPED_ROOTS);
output.accept(Items.NETHER_SPROUTS);
output.accept(Items.WEEPING_VINES);
output.accept(Items.TWISTING_VINES);
output.accept(Items.VINE);
output.accept(Items.TALL_GRASS);
output.accept(Items.LARGE_FERN);
output.accept(Items.DRY_TALL_GRASS);
output.accept(Items.SUNFLOWER);
output.accept(Items.LILAC);
output.accept(Items.ROSE_BUSH);
output.accept(Items.PEONY);
output.accept(Items.PITCHER_PLANT);
output.accept(Items.BIG_DRIPLEAF);
output.accept(Items.SMALL_DRIPLEAF);
output.accept(Items.CHORUS_PLANT);
output.accept(Items.CHORUS_FLOWER);
output.accept(Items.GLOW_LICHEN);
output.accept(Items.HANGING_ROOTS);
output.accept(Items.FROGSPAWN);
output.accept(Items.TURTLE_EGG);
output.accept(Items.SNIFFER_EGG);
output.accept(Items.WHEAT_SEEDS);
output.accept(Items.COCOA_BEANS);
output.accept(Items.PUMPKIN_SEEDS);
output.accept(Items.MELON_SEEDS);
output.accept(Items.BEETROOT_SEEDS);
output.accept(Items.TORCHFLOWER_SEEDS);
output.accept(Items.PITCHER_POD);
output.accept(Items.GLOW_BERRIES);
output.accept(Items.SWEET_BERRIES);
output.accept(Items.NETHER_WART);
output.accept(Items.LILY_PAD);
output.accept(Items.SEAGRASS);
output.accept(Items.SEA_PICKLE);
output.accept(Items.KELP);
output.accept(Items.DRIED_KELP_BLOCK);
output.accept(Items.TUBE_CORAL_BLOCK);
output.accept(Items.BRAIN_CORAL_BLOCK);
output.accept(Items.BUBBLE_CORAL_BLOCK);
output.accept(Items.FIRE_CORAL_BLOCK);
output.accept(Items.HORN_CORAL_BLOCK);
output.accept(Items.DEAD_TUBE_CORAL_BLOCK);
output.accept(Items.DEAD_BRAIN_CORAL_BLOCK);
output.accept(Items.DEAD_BUBBLE_CORAL_BLOCK);
output.accept(Items.DEAD_FIRE_CORAL_BLOCK);
output.accept(Items.DEAD_HORN_CORAL_BLOCK);
output.accept(Items.TUBE_CORAL);
output.accept(Items.BRAIN_CORAL);
output.accept(Items.BUBBLE_CORAL);
output.accept(Items.FIRE_CORAL);
output.accept(Items.HORN_CORAL);
output.accept(Items.DEAD_TUBE_CORAL);
output.accept(Items.DEAD_BRAIN_CORAL);
output.accept(Items.DEAD_BUBBLE_CORAL);
output.accept(Items.DEAD_FIRE_CORAL);
output.accept(Items.DEAD_HORN_CORAL);
output.accept(Items.TUBE_CORAL_FAN);
output.accept(Items.BRAIN_CORAL_FAN);
output.accept(Items.BUBBLE_CORAL_FAN);
output.accept(Items.FIRE_CORAL_FAN);
output.accept(Items.HORN_CORAL_FAN);
output.accept(Items.DEAD_TUBE_CORAL_FAN);
output.accept(Items.DEAD_BRAIN_CORAL_FAN);
output.accept(Items.DEAD_BUBBLE_CORAL_FAN);
output.accept(Items.DEAD_FIRE_CORAL_FAN);
output.accept(Items.DEAD_HORN_CORAL_FAN);
output.accept(Items.SPONGE);
output.accept(Items.WET_SPONGE);
output.accept(Items.MELON);
output.accept(Items.PUMPKIN);
output.accept(Items.CARVED_PUMPKIN);
output.accept(Items.JACK_O_LANTERN);
output.accept(Items.HAY_BLOCK);
output.accept(Items.BEE_NEST);
output.accept(Items.HONEYCOMB_BLOCK);
output.accept(Items.SLIME_BLOCK);
output.accept(Items.HONEY_BLOCK);
output.accept(Items.RESIN_BLOCK);
output.accept(Items.OCHRE_FROGLIGHT);
output.accept(Items.VERDANT_FROGLIGHT);
output.accept(Items.PEARLESCENT_FROGLIGHT);
output.accept(Items.SCULK);
output.accept(Items.SCULK_VEIN);
output.accept(Items.SCULK_CATALYST);
output.accept(Items.SCULK_SHRIEKER);
output.accept(Items.SCULK_SENSOR);
output.accept(Items.COBWEB);
output.accept(Items.BEDROCK);
})
.build()
);
Registry.register(
registry,
FUNCTIONAL_BLOCKS,
CreativeModeTab.builder(Row.TOP, 3)
.title(Component.translatable("itemGroup.functional"))
.icon(() -> new ItemStack(Items.OAK_SIGN))
.displayItems(
(itemDisplayParameters, output) -> {
output.accept(Items.TORCH);
output.accept(Items.SOUL_TORCH);
output.accept(Items.REDSTONE_TORCH);
output.accept(Items.LANTERN);
output.accept(Items.SOUL_LANTERN);
output.accept(Items.CHAIN);
output.accept(Items.END_ROD);
output.accept(Items.SEA_LANTERN);
output.accept(Items.REDSTONE_LAMP);
output.accept(Items.COPPER_BULB);
output.accept(Items.EXPOSED_COPPER_BULB);
output.accept(Items.WEATHERED_COPPER_BULB);
output.accept(Items.OXIDIZED_COPPER_BULB);
output.accept(Items.WAXED_COPPER_BULB);
output.accept(Items.WAXED_EXPOSED_COPPER_BULB);
output.accept(Items.WAXED_WEATHERED_COPPER_BULB);
output.accept(Items.WAXED_OXIDIZED_COPPER_BULB);
output.accept(Items.GLOWSTONE);
output.accept(Items.SHROOMLIGHT);
output.accept(Items.OCHRE_FROGLIGHT);
output.accept(Items.VERDANT_FROGLIGHT);
output.accept(Items.PEARLESCENT_FROGLIGHT);
output.accept(Items.CRYING_OBSIDIAN);
output.accept(Items.GLOW_LICHEN);
output.accept(Items.MAGMA_BLOCK);
output.accept(Items.CRAFTING_TABLE);
output.accept(Items.STONECUTTER);
output.accept(Items.CARTOGRAPHY_TABLE);
output.accept(Items.FLETCHING_TABLE);
output.accept(Items.SMITHING_TABLE);
output.accept(Items.GRINDSTONE);
output.accept(Items.LOOM);
output.accept(Items.FURNACE);
output.accept(Items.SMOKER);
output.accept(Items.BLAST_FURNACE);
output.accept(Items.CAMPFIRE);
output.accept(Items.SOUL_CAMPFIRE);
output.accept(Items.ANVIL);
output.accept(Items.CHIPPED_ANVIL);
output.accept(Items.DAMAGED_ANVIL);
output.accept(Items.COMPOSTER);
output.accept(Items.NOTE_BLOCK);
output.accept(Items.JUKEBOX);
output.accept(Items.ENCHANTING_TABLE);
output.accept(Items.END_CRYSTAL);
output.accept(Items.BREWING_STAND);
output.accept(Items.CAULDRON);
output.accept(Items.BELL);
output.accept(Items.BEACON);
output.accept(Items.CONDUIT);
output.accept(Items.LODESTONE);
output.accept(Items.LADDER);
output.accept(Items.SCAFFOLDING);
output.accept(Items.BEE_NEST);
output.accept(Items.BEEHIVE);
output.accept(Items.SUSPICIOUS_SAND);
output.accept(Items.SUSPICIOUS_GRAVEL);
output.accept(Items.LIGHTNING_ROD);
output.accept(Items.FLOWER_POT);
output.accept(Items.DECORATED_POT);
output.accept(Items.ARMOR_STAND);
output.accept(Items.ITEM_FRAME);
output.accept(Items.GLOW_ITEM_FRAME);
output.accept(Items.PAINTING);
itemDisplayParameters.holders()
.lookup(Registries.PAINTING_VARIANT)
.ifPresent(
registryLookup -> generatePresetPaintings(
output, itemDisplayParameters.holders(), registryLookup, holder -> holder.is(PaintingVariantTags.PLACEABLE), TabVisibility.PARENT_AND_SEARCH_TABS
)
);
output.accept(Items.BOOKSHELF);
output.accept(Items.CHISELED_BOOKSHELF);
output.accept(Items.LECTERN);
output.accept(Items.TINTED_GLASS);
output.accept(Items.OAK_SIGN);
output.accept(Items.OAK_HANGING_SIGN);
output.accept(Items.SPRUCE_SIGN);
output.accept(Items.SPRUCE_HANGING_SIGN);
output.accept(Items.BIRCH_SIGN);
output.accept(Items.BIRCH_HANGING_SIGN);
output.accept(Items.JUNGLE_SIGN);
output.accept(Items.JUNGLE_HANGING_SIGN);
output.accept(Items.ACACIA_SIGN);
output.accept(Items.ACACIA_HANGING_SIGN);
output.accept(Items.DARK_OAK_SIGN);
output.accept(Items.DARK_OAK_HANGING_SIGN);
output.accept(Items.MANGROVE_SIGN);
output.accept(Items.MANGROVE_HANGING_SIGN);
output.accept(Items.CHERRY_SIGN);
output.accept(Items.CHERRY_HANGING_SIGN);
output.accept(Items.PALE_OAK_SIGN);
output.accept(Items.PALE_OAK_HANGING_SIGN);
output.accept(Items.BAMBOO_SIGN);
output.accept(Items.BAMBOO_HANGING_SIGN);
output.accept(Items.CRIMSON_SIGN);
output.accept(Items.CRIMSON_HANGING_SIGN);
output.accept(Items.WARPED_SIGN);
output.accept(Items.WARPED_HANGING_SIGN);
output.accept(Items.CHEST);
output.accept(Items.BARREL);
output.accept(Items.ENDER_CHEST);
output.accept(Items.SHULKER_BOX);
output.accept(Items.WHITE_SHULKER_BOX);
output.accept(Items.LIGHT_GRAY_SHULKER_BOX);
output.accept(Items.GRAY_SHULKER_BOX);
output.accept(Items.BLACK_SHULKER_BOX);
output.accept(Items.BROWN_SHULKER_BOX);
output.accept(Items.RED_SHULKER_BOX);
output.accept(Items.ORANGE_SHULKER_BOX);
output.accept(Items.YELLOW_SHULKER_BOX);
output.accept(Items.LIME_SHULKER_BOX);
output.accept(Items.GREEN_SHULKER_BOX);
output.accept(Items.CYAN_SHULKER_BOX);
output.accept(Items.LIGHT_BLUE_SHULKER_BOX);
output.accept(Items.BLUE_SHULKER_BOX);
output.accept(Items.PURPLE_SHULKER_BOX);
output.accept(Items.MAGENTA_SHULKER_BOX);
output.accept(Items.PINK_SHULKER_BOX);
output.accept(Items.RESPAWN_ANCHOR);
output.accept(Items.WHITE_BED);
output.accept(Items.LIGHT_GRAY_BED);
output.accept(Items.GRAY_BED);
output.accept(Items.BLACK_BED);
output.accept(Items.BROWN_BED);
output.accept(Items.RED_BED);
output.accept(Items.ORANGE_BED);
output.accept(Items.YELLOW_BED);
output.accept(Items.LIME_BED);
output.accept(Items.GREEN_BED);
output.accept(Items.CYAN_BED);
output.accept(Items.LIGHT_BLUE_BED);
output.accept(Items.BLUE_BED);
output.accept(Items.PURPLE_BED);
output.accept(Items.MAGENTA_BED);
output.accept(Items.PINK_BED);
output.accept(Items.CANDLE);
output.accept(Items.WHITE_CANDLE);
output.accept(Items.LIGHT_GRAY_CANDLE);
output.accept(Items.GRAY_CANDLE);
output.accept(Items.BLACK_CANDLE);
output.accept(Items.BROWN_CANDLE);
output.accept(Items.RED_CANDLE);
output.accept(Items.ORANGE_CANDLE);
output.accept(Items.YELLOW_CANDLE);
output.accept(Items.LIME_CANDLE);
output.accept(Items.GREEN_CANDLE);
output.accept(Items.CYAN_CANDLE);
output.accept(Items.LIGHT_BLUE_CANDLE);
output.accept(Items.BLUE_CANDLE);
output.accept(Items.PURPLE_CANDLE);
output.accept(Items.MAGENTA_CANDLE);
output.accept(Items.PINK_CANDLE);
output.accept(Items.WHITE_BANNER);
output.accept(Items.LIGHT_GRAY_BANNER);
output.accept(Items.GRAY_BANNER);
output.accept(Items.BLACK_BANNER);
output.accept(Items.BROWN_BANNER);
output.accept(Items.RED_BANNER);
output.accept(Items.ORANGE_BANNER);
output.accept(Items.YELLOW_BANNER);
output.accept(Items.LIME_BANNER);
output.accept(Items.GREEN_BANNER);
output.accept(Items.CYAN_BANNER);
output.accept(Items.LIGHT_BLUE_BANNER);
output.accept(Items.BLUE_BANNER);
output.accept(Items.PURPLE_BANNER);
output.accept(Items.MAGENTA_BANNER);
output.accept(Items.PINK_BANNER);
output.accept(Raid.getOminousBannerInstance(itemDisplayParameters.holders().lookupOrThrow(Registries.BANNER_PATTERN)));
output.accept(Items.SKELETON_SKULL);
output.accept(Items.WITHER_SKELETON_SKULL);
output.accept(Items.PLAYER_HEAD);
output.accept(Items.ZOMBIE_HEAD);
output.accept(Items.CREEPER_HEAD);
output.accept(Items.PIGLIN_HEAD);
output.accept(Items.DRAGON_HEAD);
output.accept(Items.DRAGON_EGG);
output.accept(Items.END_PORTAL_FRAME);
output.accept(Items.ENDER_EYE);
output.accept(Items.VAULT);
output.accept(Items.INFESTED_STONE);
output.accept(Items.INFESTED_COBBLESTONE);
output.accept(Items.INFESTED_STONE_BRICKS);
output.accept(Items.INFESTED_MOSSY_STONE_BRICKS);
output.accept(Items.INFESTED_CRACKED_STONE_BRICKS);
output.accept(Items.INFESTED_CHISELED_STONE_BRICKS);
output.accept(Items.INFESTED_DEEPSLATE);
}
)
.build()
);
Registry.register(
registry,
REDSTONE_BLOCKS,
CreativeModeTab.builder(Row.TOP, 4)
.title(Component.translatable("itemGroup.redstone"))
.icon(() -> new ItemStack(Items.REDSTONE))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.REDSTONE);
output.accept(Items.REDSTONE_TORCH);
output.accept(Items.REDSTONE_BLOCK);
output.accept(Items.REPEATER);
output.accept(Items.COMPARATOR);
output.accept(Items.TARGET);
output.accept(Items.WAXED_COPPER_BULB);
output.accept(Items.WAXED_EXPOSED_COPPER_BULB);
output.accept(Items.WAXED_WEATHERED_COPPER_BULB);
output.accept(Items.WAXED_OXIDIZED_COPPER_BULB);
output.accept(Items.LEVER);
output.accept(Items.OAK_BUTTON);
output.accept(Items.STONE_BUTTON);
output.accept(Items.OAK_PRESSURE_PLATE);
output.accept(Items.STONE_PRESSURE_PLATE);
output.accept(Items.LIGHT_WEIGHTED_PRESSURE_PLATE);
output.accept(Items.HEAVY_WEIGHTED_PRESSURE_PLATE);
output.accept(Items.SCULK_SENSOR);
output.accept(Items.CALIBRATED_SCULK_SENSOR);
output.accept(Items.SCULK_SHRIEKER);
output.accept(Items.AMETHYST_BLOCK);
output.accept(Items.WHITE_WOOL);
output.accept(Items.TRIPWIRE_HOOK);
output.accept(Items.STRING);
output.accept(Items.LECTERN);
output.accept(Items.DAYLIGHT_DETECTOR);
output.accept(Items.LIGHTNING_ROD);
output.accept(Items.PISTON);
output.accept(Items.STICKY_PISTON);
output.accept(Items.SLIME_BLOCK);
output.accept(Items.HONEY_BLOCK);
output.accept(Items.DISPENSER);
output.accept(Items.DROPPER);
output.accept(Items.CRAFTER);
output.accept(Items.HOPPER);
output.accept(Items.CHEST);
output.accept(Items.BARREL);
output.accept(Items.CHISELED_BOOKSHELF);
output.accept(Items.FURNACE);
output.accept(Items.TRAPPED_CHEST);
output.accept(Items.JUKEBOX);
output.accept(Items.DECORATED_POT);
output.accept(Items.OBSERVER);
output.accept(Items.NOTE_BLOCK);
output.accept(Items.COMPOSTER);
output.accept(Items.CAULDRON);
output.accept(Items.RAIL);
output.accept(Items.POWERED_RAIL);
output.accept(Items.DETECTOR_RAIL);
output.accept(Items.ACTIVATOR_RAIL);
output.accept(Items.MINECART);
output.accept(Items.HOPPER_MINECART);
output.accept(Items.CHEST_MINECART);
output.accept(Items.FURNACE_MINECART);
output.accept(Items.TNT_MINECART);
output.accept(Items.OAK_CHEST_BOAT);
output.accept(Items.BAMBOO_CHEST_RAFT);
output.accept(Items.OAK_DOOR);
output.accept(Items.IRON_DOOR);
output.accept(Items.OAK_FENCE_GATE);
output.accept(Items.OAK_TRAPDOOR);
output.accept(Items.IRON_TRAPDOOR);
output.accept(Items.TNT);
output.accept(Items.REDSTONE_LAMP);
output.accept(Items.BELL);
output.accept(Items.BIG_DRIPLEAF);
output.accept(Items.ARMOR_STAND);
output.accept(Items.REDSTONE_ORE);
})
.build()
);
Registry.register(
registry,
HOTBAR,
CreativeModeTab.builder(Row.TOP, 5)
.title(Component.translatable("itemGroup.hotbar"))
.icon(() -> new ItemStack(Blocks.BOOKSHELF))
.alignedRight()
.type(Type.HOTBAR)
.build()
);
Registry.register(
registry,
SEARCH,
CreativeModeTab.builder(Row.TOP, 6)
.title(Component.translatable("itemGroup.search"))
.icon(() -> new ItemStack(Items.COMPASS))
.displayItems((itemDisplayParameters, output) -> {
Set<ItemStack> set = ItemStackLinkedSet.createTypeAndComponentsSet();
for (CreativeModeTab creativeModeTab : registry) {
if (creativeModeTab.getType() != Type.SEARCH) {
set.addAll(creativeModeTab.getSearchTabDisplayItems());
}
}
output.acceptAll(set);
})
.backgroundTexture(SEARCH_BACKGROUND)
.alignedRight()
.type(Type.SEARCH)
.build()
);
Registry.register(
registry,
TOOLS_AND_UTILITIES,
CreativeModeTab.builder(Row.BOTTOM, 0)
.title(Component.translatable("itemGroup.tools"))
.icon(() -> new ItemStack(Items.DIAMOND_PICKAXE))
.displayItems(
(itemDisplayParameters, output) -> {
output.accept(Items.WOODEN_SHOVEL);
output.accept(Items.WOODEN_PICKAXE);
output.accept(Items.WOODEN_AXE);
output.accept(Items.WOODEN_HOE);
output.accept(Items.STONE_SHOVEL);
output.accept(Items.STONE_PICKAXE);
output.accept(Items.STONE_AXE);
output.accept(Items.STONE_HOE);
output.accept(Items.IRON_SHOVEL);
output.accept(Items.IRON_PICKAXE);
output.accept(Items.IRON_AXE);
output.accept(Items.IRON_HOE);
output.accept(Items.GOLDEN_SHOVEL);
output.accept(Items.GOLDEN_PICKAXE);
output.accept(Items.GOLDEN_AXE);
output.accept(Items.GOLDEN_HOE);
output.accept(Items.DIAMOND_SHOVEL);
output.accept(Items.DIAMOND_PICKAXE);
output.accept(Items.DIAMOND_AXE);
output.accept(Items.DIAMOND_HOE);
output.accept(Items.NETHERITE_SHOVEL);
output.accept(Items.NETHERITE_PICKAXE);
output.accept(Items.NETHERITE_AXE);
output.accept(Items.NETHERITE_HOE);
output.accept(Items.BUCKET);
output.accept(Items.WATER_BUCKET);
output.accept(Items.COD_BUCKET);
output.accept(Items.SALMON_BUCKET);
output.accept(Items.TROPICAL_FISH_BUCKET);
output.accept(Items.PUFFERFISH_BUCKET);
output.accept(Items.AXOLOTL_BUCKET);
output.accept(Items.TADPOLE_BUCKET);
output.accept(Items.LAVA_BUCKET);
output.accept(Items.POWDER_SNOW_BUCKET);
output.accept(Items.MILK_BUCKET);
output.accept(Items.FISHING_ROD);
output.accept(Items.FLINT_AND_STEEL);
output.accept(Items.FIRE_CHARGE);
output.accept(Items.BONE_MEAL);
output.accept(Items.SHEARS);
output.accept(Items.BRUSH);
output.accept(Items.NAME_TAG);
output.accept(Items.LEAD);
output.accept(Items.BUNDLE);
output.accept(Items.WHITE_BUNDLE);
output.accept(Items.LIGHT_GRAY_BUNDLE);
output.accept(Items.GRAY_BUNDLE);
output.accept(Items.BLACK_BUNDLE);
output.accept(Items.BROWN_BUNDLE);
output.accept(Items.RED_BUNDLE);
output.accept(Items.ORANGE_BUNDLE);
output.accept(Items.YELLOW_BUNDLE);
output.accept(Items.LIME_BUNDLE);
output.accept(Items.GREEN_BUNDLE);
output.accept(Items.CYAN_BUNDLE);
output.accept(Items.LIGHT_BLUE_BUNDLE);
output.accept(Items.BLUE_BUNDLE);
output.accept(Items.PURPLE_BUNDLE);
output.accept(Items.MAGENTA_BUNDLE);
output.accept(Items.PINK_BUNDLE);
output.accept(Items.COMPASS);
output.accept(Items.RECOVERY_COMPASS);
output.accept(Items.CLOCK);
output.accept(Items.SPYGLASS);
output.accept(Items.MAP);
output.accept(Items.WRITABLE_BOOK);
output.accept(Items.WIND_CHARGE);
output.accept(Items.ENDER_PEARL);
output.accept(Items.ENDER_EYE);
output.accept(Items.ELYTRA);
generateFireworksAllDurations(output, TabVisibility.PARENT_AND_SEARCH_TABS);
output.accept(Items.SADDLE);
output.accept(Items.CARROT_ON_A_STICK);
output.accept(Items.WARPED_FUNGUS_ON_A_STICK);
output.accept(Items.OAK_BOAT);
output.accept(Items.OAK_CHEST_BOAT);
output.accept(Items.SPRUCE_BOAT);
output.accept(Items.SPRUCE_CHEST_BOAT);
output.accept(Items.BIRCH_BOAT);
output.accept(Items.BIRCH_CHEST_BOAT);
output.accept(Items.JUNGLE_BOAT);
output.accept(Items.JUNGLE_CHEST_BOAT);
output.accept(Items.ACACIA_BOAT);
output.accept(Items.ACACIA_CHEST_BOAT);
output.accept(Items.DARK_OAK_BOAT);
output.accept(Items.DARK_OAK_CHEST_BOAT);
output.accept(Items.MANGROVE_BOAT);
output.accept(Items.MANGROVE_CHEST_BOAT);
output.accept(Items.CHERRY_BOAT);
output.accept(Items.CHERRY_CHEST_BOAT);
output.accept(Items.PALE_OAK_BOAT);
output.accept(Items.PALE_OAK_CHEST_BOAT);
output.accept(Items.BAMBOO_RAFT);
output.accept(Items.BAMBOO_CHEST_RAFT);
output.accept(Items.RAIL);
output.accept(Items.POWERED_RAIL);
output.accept(Items.DETECTOR_RAIL);
output.accept(Items.ACTIVATOR_RAIL);
output.accept(Items.MINECART);
output.accept(Items.HOPPER_MINECART);
output.accept(Items.CHEST_MINECART);
output.accept(Items.FURNACE_MINECART);
output.accept(Items.TNT_MINECART);
itemDisplayParameters.holders()
.lookup(Registries.INSTRUMENT)
.ifPresent(
registryLookup -> generateInstrumentTypes(output, registryLookup, Items.GOAT_HORN, InstrumentTags.GOAT_HORNS, TabVisibility.PARENT_AND_SEARCH_TABS)
);
output.accept(Items.MUSIC_DISC_13);
output.accept(Items.MUSIC_DISC_CAT);
output.accept(Items.MUSIC_DISC_BLOCKS);
output.accept(Items.MUSIC_DISC_CHIRP);
output.accept(Items.MUSIC_DISC_FAR);
output.accept(Items.MUSIC_DISC_MALL);
output.accept(Items.MUSIC_DISC_MELLOHI);
output.accept(Items.MUSIC_DISC_STAL);
output.accept(Items.MUSIC_DISC_STRAD);
output.accept(Items.MUSIC_DISC_WARD);
output.accept(Items.MUSIC_DISC_11);
output.accept(Items.MUSIC_DISC_CREATOR_MUSIC_BOX);
output.accept(Items.MUSIC_DISC_WAIT);
output.accept(Items.MUSIC_DISC_CREATOR);
output.accept(Items.MUSIC_DISC_PRECIPICE);
output.accept(Items.MUSIC_DISC_OTHERSIDE);
output.accept(Items.MUSIC_DISC_RELIC);
output.accept(Items.MUSIC_DISC_5);
output.accept(Items.MUSIC_DISC_PIGSTEP);
}
)
.build()
);
Registry.register(
registry,
COMBAT,
CreativeModeTab.builder(Row.BOTTOM, 1)
.title(Component.translatable("itemGroup.combat"))
.icon(() -> new ItemStack(Items.NETHERITE_SWORD))
.displayItems(
(itemDisplayParameters, output) -> {
output.accept(Items.WOODEN_SWORD);
output.accept(Items.STONE_SWORD);
output.accept(Items.IRON_SWORD);
output.accept(Items.GOLDEN_SWORD);
output.accept(Items.DIAMOND_SWORD);
output.accept(Items.NETHERITE_SWORD);
output.accept(Items.WOODEN_AXE);
output.accept(Items.STONE_AXE);
output.accept(Items.IRON_AXE);
output.accept(Items.GOLDEN_AXE);
output.accept(Items.DIAMOND_AXE);
output.accept(Items.NETHERITE_AXE);
output.accept(Items.TRIDENT);
output.accept(Items.MACE);
output.accept(Items.SHIELD);
output.accept(Items.LEATHER_HELMET);
output.accept(Items.LEATHER_CHESTPLATE);
output.accept(Items.LEATHER_LEGGINGS);
output.accept(Items.LEATHER_BOOTS);
output.accept(Items.CHAINMAIL_HELMET);
output.accept(Items.CHAINMAIL_CHESTPLATE);
output.accept(Items.CHAINMAIL_LEGGINGS);
output.accept(Items.CHAINMAIL_BOOTS);
output.accept(Items.IRON_HELMET);
output.accept(Items.IRON_CHESTPLATE);
output.accept(Items.IRON_LEGGINGS);
output.accept(Items.IRON_BOOTS);
output.accept(Items.GOLDEN_HELMET);
output.accept(Items.GOLDEN_CHESTPLATE);
output.accept(Items.GOLDEN_LEGGINGS);
output.accept(Items.GOLDEN_BOOTS);
output.accept(Items.DIAMOND_HELMET);
output.accept(Items.DIAMOND_CHESTPLATE);
output.accept(Items.DIAMOND_LEGGINGS);
output.accept(Items.DIAMOND_BOOTS);
output.accept(Items.NETHERITE_HELMET);
output.accept(Items.NETHERITE_CHESTPLATE);
output.accept(Items.NETHERITE_LEGGINGS);
output.accept(Items.NETHERITE_BOOTS);
output.accept(Items.TURTLE_HELMET);
output.accept(Items.LEATHER_HORSE_ARMOR);
output.accept(Items.IRON_HORSE_ARMOR);
output.accept(Items.GOLDEN_HORSE_ARMOR);
output.accept(Items.DIAMOND_HORSE_ARMOR);
output.accept(Items.WOLF_ARMOR);
output.accept(Items.TOTEM_OF_UNDYING);
output.accept(Items.TNT);
output.accept(Items.END_CRYSTAL);
output.accept(Items.SNOWBALL);
output.accept(Items.EGG);
output.accept(Items.BROWN_EGG);
output.accept(Items.BLUE_EGG);
output.accept(Items.WIND_CHARGE);
output.accept(Items.BOW);
output.accept(Items.CROSSBOW);
generateFireworksAllDurations(output, TabVisibility.PARENT_AND_SEARCH_TABS);
output.accept(Items.ARROW);
output.accept(Items.SPECTRAL_ARROW);
itemDisplayParameters.holders()
.lookup(Registries.POTION)
.ifPresent(
registryLookup -> generatePotionEffectTypes(
output, registryLookup, Items.TIPPED_ARROW, TabVisibility.PARENT_AND_SEARCH_TABS, itemDisplayParameters.enabledFeatures()
)
);
}
)
.build()
);
Registry.register(
registry,
FOOD_AND_DRINKS,
CreativeModeTab.builder(Row.BOTTOM, 2)
.title(Component.translatable("itemGroup.foodAndDrink"))
.icon(() -> new ItemStack(Items.GOLDEN_APPLE))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.APPLE);
output.accept(Items.GOLDEN_APPLE);
output.accept(Items.ENCHANTED_GOLDEN_APPLE);
output.accept(Items.MELON_SLICE);
output.accept(Items.SWEET_BERRIES);
output.accept(Items.GLOW_BERRIES);
output.accept(Items.CHORUS_FRUIT);
output.accept(Items.CARROT);
output.accept(Items.GOLDEN_CARROT);
output.accept(Items.POTATO);
output.accept(Items.BAKED_POTATO);
output.accept(Items.POISONOUS_POTATO);
output.accept(Items.BEETROOT);
output.accept(Items.DRIED_KELP);
output.accept(Items.BEEF);
output.accept(Items.COOKED_BEEF);
output.accept(Items.PORKCHOP);
output.accept(Items.COOKED_PORKCHOP);
output.accept(Items.MUTTON);
output.accept(Items.COOKED_MUTTON);
output.accept(Items.CHICKEN);
output.accept(Items.COOKED_CHICKEN);
output.accept(Items.RABBIT);
output.accept(Items.COOKED_RABBIT);
output.accept(Items.COD);
output.accept(Items.COOKED_COD);
output.accept(Items.SALMON);
output.accept(Items.COOKED_SALMON);
output.accept(Items.TROPICAL_FISH);
output.accept(Items.PUFFERFISH);
output.accept(Items.BREAD);
output.accept(Items.COOKIE);
output.accept(Items.CAKE);
output.accept(Items.PUMPKIN_PIE);
output.accept(Items.ROTTEN_FLESH);
output.accept(Items.SPIDER_EYE);
output.accept(Items.MUSHROOM_STEW);
output.accept(Items.BEETROOT_SOUP);
output.accept(Items.RABBIT_STEW);
generateSuspiciousStews(output, TabVisibility.PARENT_AND_SEARCH_TABS);
output.accept(Items.MILK_BUCKET);
output.accept(Items.HONEY_BOTTLE);
generateOminousBottles(output, TabVisibility.PARENT_AND_SEARCH_TABS);
itemDisplayParameters.holders().lookup(Registries.POTION).ifPresent(registryLookup -> {
generatePotionEffectTypes(output, registryLookup, Items.POTION, TabVisibility.PARENT_AND_SEARCH_TABS, itemDisplayParameters.enabledFeatures());
generatePotionEffectTypes(output, registryLookup, Items.SPLASH_POTION, TabVisibility.PARENT_AND_SEARCH_TABS, itemDisplayParameters.enabledFeatures());
generatePotionEffectTypes(output, registryLookup, Items.LINGERING_POTION, TabVisibility.PARENT_AND_SEARCH_TABS, itemDisplayParameters.enabledFeatures());
});
})
.build()
);
Registry.register(
registry,
INGREDIENTS,
CreativeModeTab.builder(Row.BOTTOM, 3)
.title(Component.translatable("itemGroup.ingredients"))
.icon(() -> new ItemStack(Items.IRON_INGOT))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.COAL);
output.accept(Items.CHARCOAL);
output.accept(Items.RAW_IRON);
output.accept(Items.RAW_COPPER);
output.accept(Items.RAW_GOLD);
output.accept(Items.EMERALD);
output.accept(Items.LAPIS_LAZULI);
output.accept(Items.DIAMOND);
output.accept(Items.ANCIENT_DEBRIS);
output.accept(Items.QUARTZ);
output.accept(Items.AMETHYST_SHARD);
output.accept(Items.IRON_NUGGET);
output.accept(Items.GOLD_NUGGET);
output.accept(Items.IRON_INGOT);
output.accept(Items.COPPER_INGOT);
output.accept(Items.GOLD_INGOT);
output.accept(Items.NETHERITE_SCRAP);
output.accept(Items.NETHERITE_INGOT);
output.accept(Items.STICK);
output.accept(Items.FLINT);
output.accept(Items.WHEAT);
output.accept(Items.BONE);
output.accept(Items.BONE_MEAL);
output.accept(Items.STRING);
output.accept(Items.FEATHER);
output.accept(Items.SNOWBALL);
output.accept(Items.EGG);
output.accept(Items.BROWN_EGG);
output.accept(Items.BLUE_EGG);
output.accept(Items.LEATHER);
output.accept(Items.RABBIT_HIDE);
output.accept(Items.HONEYCOMB);
output.accept(Items.RESIN_CLUMP);
output.accept(Items.INK_SAC);
output.accept(Items.GLOW_INK_SAC);
output.accept(Items.TURTLE_SCUTE);
output.accept(Items.ARMADILLO_SCUTE);
output.accept(Items.SLIME_BALL);
output.accept(Items.CLAY_BALL);
output.accept(Items.PRISMARINE_SHARD);
output.accept(Items.PRISMARINE_CRYSTALS);
output.accept(Items.NAUTILUS_SHELL);
output.accept(Items.HEART_OF_THE_SEA);
output.accept(Items.FIRE_CHARGE);
output.accept(Items.BLAZE_ROD);
output.accept(Items.BREEZE_ROD);
output.accept(Items.HEAVY_CORE);
output.accept(Items.NETHER_STAR);
output.accept(Items.ENDER_PEARL);
output.accept(Items.ENDER_EYE);
output.accept(Items.SHULKER_SHELL);
output.accept(Items.POPPED_CHORUS_FRUIT);
output.accept(Items.ECHO_SHARD);
output.accept(Items.DISC_FRAGMENT_5);
output.accept(Items.WHITE_DYE);
output.accept(Items.LIGHT_GRAY_DYE);
output.accept(Items.GRAY_DYE);
output.accept(Items.BLACK_DYE);
output.accept(Items.BROWN_DYE);
output.accept(Items.RED_DYE);
output.accept(Items.ORANGE_DYE);
output.accept(Items.YELLOW_DYE);
output.accept(Items.LIME_DYE);
output.accept(Items.GREEN_DYE);
output.accept(Items.CYAN_DYE);
output.accept(Items.LIGHT_BLUE_DYE);
output.accept(Items.BLUE_DYE);
output.accept(Items.PURPLE_DYE);
output.accept(Items.MAGENTA_DYE);
output.accept(Items.PINK_DYE);
output.accept(Items.BOWL);
output.accept(Items.BRICK);
output.accept(Items.NETHER_BRICK);
output.accept(Items.RESIN_BRICK);
output.accept(Items.PAPER);
output.accept(Items.BOOK);
output.accept(Items.FIREWORK_STAR);
output.accept(Items.GLASS_BOTTLE);
output.accept(Items.NETHER_WART);
output.accept(Items.REDSTONE);
output.accept(Items.GLOWSTONE_DUST);
output.accept(Items.GUNPOWDER);
output.accept(Items.DRAGON_BREATH);
output.accept(Items.FERMENTED_SPIDER_EYE);
output.accept(Items.BLAZE_POWDER);
output.accept(Items.SUGAR);
output.accept(Items.RABBIT_FOOT);
output.accept(Items.GLISTERING_MELON_SLICE);
output.accept(Items.SPIDER_EYE);
output.accept(Items.PUFFERFISH);
output.accept(Items.MAGMA_CREAM);
output.accept(Items.GOLDEN_CARROT);
output.accept(Items.GHAST_TEAR);
output.accept(Items.TURTLE_HELMET);
output.accept(Items.PHANTOM_MEMBRANE);
output.accept(Items.FIELD_MASONED_BANNER_PATTERN);
output.accept(Items.BORDURE_INDENTED_BANNER_PATTERN);
output.accept(Items.FLOWER_BANNER_PATTERN);
output.accept(Items.CREEPER_BANNER_PATTERN);
output.accept(Items.SKULL_BANNER_PATTERN);
output.accept(Items.MOJANG_BANNER_PATTERN);
output.accept(Items.GLOBE_BANNER_PATTERN);
output.accept(Items.PIGLIN_BANNER_PATTERN);
output.accept(Items.FLOW_BANNER_PATTERN);
output.accept(Items.GUSTER_BANNER_PATTERN);
output.accept(Items.ANGLER_POTTERY_SHERD);
output.accept(Items.ARCHER_POTTERY_SHERD);
output.accept(Items.ARMS_UP_POTTERY_SHERD);
output.accept(Items.BLADE_POTTERY_SHERD);
output.accept(Items.BREWER_POTTERY_SHERD);
output.accept(Items.BURN_POTTERY_SHERD);
output.accept(Items.DANGER_POTTERY_SHERD);
output.accept(Items.EXPLORER_POTTERY_SHERD);
output.accept(Items.FLOW_POTTERY_SHERD);
output.accept(Items.FRIEND_POTTERY_SHERD);
output.accept(Items.GUSTER_POTTERY_SHERD);
output.accept(Items.HEART_POTTERY_SHERD);
output.accept(Items.HEARTBREAK_POTTERY_SHERD);
output.accept(Items.HOWL_POTTERY_SHERD);
output.accept(Items.MINER_POTTERY_SHERD);
output.accept(Items.MOURNER_POTTERY_SHERD);
output.accept(Items.PLENTY_POTTERY_SHERD);
output.accept(Items.PRIZE_POTTERY_SHERD);
output.accept(Items.SCRAPE_POTTERY_SHERD);
output.accept(Items.SHEAF_POTTERY_SHERD);
output.accept(Items.SHELTER_POTTERY_SHERD);
output.accept(Items.SKULL_POTTERY_SHERD);
output.accept(Items.SNORT_POTTERY_SHERD);
output.accept(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE);
output.accept(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE);
output.accept(Items.EXPERIENCE_BOTTLE);
output.accept(Items.TRIAL_KEY);
output.accept(Items.OMINOUS_TRIAL_KEY);
itemDisplayParameters.holders().lookup(Registries.ENCHANTMENT).ifPresent(registryLookup -> {
generateEnchantmentBookTypesOnlyMaxLevel(output, registryLookup, TabVisibility.PARENT_TAB_ONLY);
generateEnchantmentBookTypesAllLevels(output, registryLookup, TabVisibility.SEARCH_TAB_ONLY);
});
})
.build()
);
Registry.register(
registry,
SPAWN_EGGS,
CreativeModeTab.builder(Row.BOTTOM, 4)
.title(Component.translatable("itemGroup.spawnEggs"))
.icon(() -> new ItemStack(Items.CREEPER_SPAWN_EGG))
.displayItems((itemDisplayParameters, output) -> {
output.accept(Items.SPAWNER);
output.accept(Items.TRIAL_SPAWNER);
output.accept(Items.CREAKING_HEART);
output.accept(Items.ALLAY_SPAWN_EGG);
output.accept(Items.ARMADILLO_SPAWN_EGG);
output.accept(Items.AXOLOTL_SPAWN_EGG);
output.accept(Items.BAT_SPAWN_EGG);
output.accept(Items.BEE_SPAWN_EGG);
output.accept(Items.BLAZE_SPAWN_EGG);
output.accept(Items.BOGGED_SPAWN_EGG);
output.accept(Items.BREEZE_SPAWN_EGG);
output.accept(Items.CAMEL_SPAWN_EGG);
output.accept(Items.CAT_SPAWN_EGG);
output.accept(Items.CAVE_SPIDER_SPAWN_EGG);
output.accept(Items.CHICKEN_SPAWN_EGG);
output.accept(Items.COD_SPAWN_EGG);
output.accept(Items.COW_SPAWN_EGG);
output.accept(Items.CREAKING_SPAWN_EGG);
output.accept(Items.CREEPER_SPAWN_EGG);
output.accept(Items.DOLPHIN_SPAWN_EGG);
output.accept(Items.DONKEY_SPAWN_EGG);
output.accept(Items.DROWNED_SPAWN_EGG);
output.accept(Items.ELDER_GUARDIAN_SPAWN_EGG);
output.accept(Items.ENDERMAN_SPAWN_EGG);
output.accept(Items.ENDERMITE_SPAWN_EGG);
output.accept(Items.EVOKER_SPAWN_EGG);
output.accept(Items.FOX_SPAWN_EGG);
output.accept(Items.FROG_SPAWN_EGG);
output.accept(Items.GHAST_SPAWN_EGG);
output.accept(Items.GLOW_SQUID_SPAWN_EGG);
output.accept(Items.GOAT_SPAWN_EGG);
output.accept(Items.GUARDIAN_SPAWN_EGG);
output.accept(Items.HOGLIN_SPAWN_EGG);
output.accept(Items.HORSE_SPAWN_EGG);
output.accept(Items.HUSK_SPAWN_EGG);
output.accept(Items.IRON_GOLEM_SPAWN_EGG);
output.accept(Items.LLAMA_SPAWN_EGG);
output.accept(Items.MAGMA_CUBE_SPAWN_EGG);
output.accept(Items.MOOSHROOM_SPAWN_EGG);
output.accept(Items.MULE_SPAWN_EGG);
output.accept(Items.OCELOT_SPAWN_EGG);
output.accept(Items.PANDA_SPAWN_EGG);
output.accept(Items.PARROT_SPAWN_EGG);
output.accept(Items.PHANTOM_SPAWN_EGG);
output.accept(Items.PIG_SPAWN_EGG);
output.accept(Items.PIGLIN_SPAWN_EGG);
output.accept(Items.PIGLIN_BRUTE_SPAWN_EGG);
output.accept(Items.PILLAGER_SPAWN_EGG);
output.accept(Items.POLAR_BEAR_SPAWN_EGG);
output.accept(Items.PUFFERFISH_SPAWN_EGG);
output.accept(Items.RABBIT_SPAWN_EGG);
output.accept(Items.RAVAGER_SPAWN_EGG);
output.accept(Items.SALMON_SPAWN_EGG);
output.accept(Items.SHEEP_SPAWN_EGG);
output.accept(Items.SHULKER_SPAWN_EGG);
output.accept(Items.SILVERFISH_SPAWN_EGG);
output.accept(Items.SKELETON_SPAWN_EGG);
output.accept(Items.SKELETON_HORSE_SPAWN_EGG);
output.accept(Items.SLIME_SPAWN_EGG);
output.accept(Items.SNIFFER_SPAWN_EGG);
output.accept(Items.SNOW_GOLEM_SPAWN_EGG);
output.accept(Items.SPIDER_SPAWN_EGG);
output.accept(Items.SQUID_SPAWN_EGG);
output.accept(Items.STRAY_SPAWN_EGG);
output.accept(Items.STRIDER_SPAWN_EGG);
output.accept(Items.TADPOLE_SPAWN_EGG);
output.accept(Items.TRADER_LLAMA_SPAWN_EGG);
output.accept(Items.TROPICAL_FISH_SPAWN_EGG);
output.accept(Items.TURTLE_SPAWN_EGG);
output.accept(Items.VEX_SPAWN_EGG);
output.accept(Items.VILLAGER_SPAWN_EGG);
output.accept(Items.VINDICATOR_SPAWN_EGG);
output.accept(Items.WANDERING_TRADER_SPAWN_EGG);
output.accept(Items.WARDEN_SPAWN_EGG);
output.accept(Items.WITCH_SPAWN_EGG);
output.accept(Items.WITHER_SKELETON_SPAWN_EGG);
output.accept(Items.WOLF_SPAWN_EGG);
output.accept(Items.ZOGLIN_SPAWN_EGG);
output.accept(Items.ZOMBIE_SPAWN_EGG);
output.accept(Items.ZOMBIE_HORSE_SPAWN_EGG);
output.accept(Items.ZOMBIE_VILLAGER_SPAWN_EGG);
output.accept(Items.ZOMBIFIED_PIGLIN_SPAWN_EGG);
})
.build()
);
Registry.register(
registry,
OP_BLOCKS,
CreativeModeTab.builder(Row.BOTTOM, 5)
.title(Component.translatable("itemGroup.op"))
.icon(() -> new ItemStack(Items.COMMAND_BLOCK))
.alignedRight()
.displayItems(
(itemDisplayParameters, output) -> {
if (itemDisplayParameters.hasPermissions()) {
output.accept(Items.COMMAND_BLOCK);
output.accept(Items.CHAIN_COMMAND_BLOCK);
output.accept(Items.REPEATING_COMMAND_BLOCK);
output.accept(Items.COMMAND_BLOCK_MINECART);
output.accept(Items.JIGSAW);
output.accept(Items.STRUCTURE_BLOCK);
output.accept(Items.STRUCTURE_VOID);
output.accept(Items.BARRIER);
output.accept(Items.DEBUG_STICK);
output.accept(Items.TEST_INSTANCE_BLOCK);
for (TestBlockMode testBlockMode : TestBlockMode.values()) {
output.accept(TestBlock.setModeOnStack(new ItemStack(Items.TEST_BLOCK), testBlockMode));
}
for (int i = 15; i >= 0; i--) {
output.accept(LightBlock.setLightOnStack(new ItemStack(Items.LIGHT), i));
}
itemDisplayParameters.holders()
.lookup(Registries.PAINTING_VARIANT)
.ifPresent(
registryLookup -> generatePresetPaintings(
output, itemDisplayParameters.holders(), registryLookup, holder -> !holder.is(PaintingVariantTags.PLACEABLE), TabVisibility.PARENT_AND_SEARCH_TABS
)
);
}
}
)
.build()
);
return Registry.register(
registry,
INVENTORY,
CreativeModeTab.builder(Row.BOTTOM, 6)
.title(Component.translatable("itemGroup.inventory"))
.icon(() -> new ItemStack(Blocks.CHEST))
.backgroundTexture(INVENTORY_BACKGROUND)
.hideTitle()
.alignedRight()
.type(Type.INVENTORY)
.noScrollBar()
.build()
);
}
public static void validate() {
Map<Pair<Row, Integer>, String> map = new HashMap();
for (ResourceKey<CreativeModeTab> resourceKey : BuiltInRegistries.CREATIVE_MODE_TAB.registryKeySet()) {
CreativeModeTab creativeModeTab = BuiltInRegistries.CREATIVE_MODE_TAB.getValueOrThrow(resourceKey);
String string = creativeModeTab.getDisplayName().getString();
String string2 = (String)map.put(Pair.of(creativeModeTab.row(), creativeModeTab.column()), string);
if (string2 != null) {
throw new IllegalArgumentException("Duplicate position: " + string + " vs. " + string2);
}
}
}
public static CreativeModeTab getDefaultTab() {
return BuiltInRegistries.CREATIVE_MODE_TAB.getValueOrThrow(BUILDING_BLOCKS);
}
private static void generatePotionEffectTypes(
Output output, HolderLookup<Potion> potions, Item item, TabVisibility tabVisibility, FeatureFlagSet requiredFeatures
) {
potions.listElements()
.filter(reference -> ((Potion)reference.value()).isEnabled(requiredFeatures))
.map(reference -> PotionContents.createItemStack(item, reference))
.forEach(itemStack -> output.accept(itemStack, tabVisibility));
}
private static void generateEnchantmentBookTypesOnlyMaxLevel(Output output, HolderLookup<Enchantment> enchantments, TabVisibility tabVisibility) {
enchantments.listElements()
.map(reference -> EnchantmentHelper.createBook(new EnchantmentInstance(reference, ((Enchantment)reference.value()).getMaxLevel())))
.forEach(itemStack -> output.accept(itemStack, tabVisibility));
}
private static void generateEnchantmentBookTypesAllLevels(Output output, HolderLookup<Enchantment> enchantments, TabVisibility tabVisibility) {
enchantments.listElements()
.flatMap(
reference -> IntStream.rangeClosed(((Enchantment)reference.value()).getMinLevel(), ((Enchantment)reference.value()).getMaxLevel())
.mapToObj(i -> EnchantmentHelper.createBook(new EnchantmentInstance(reference, i)))
)
.forEach(itemStack -> output.accept(itemStack, tabVisibility));
}
private static void generateInstrumentTypes(
Output output, HolderLookup<Instrument> instruments, Item item, TagKey<Instrument> instrument, TabVisibility tabVisibility
) {
instruments.get(instrument)
.ifPresent(named -> named.stream().map(holder -> InstrumentItem.create(item, holder)).forEach(itemStack -> output.accept(itemStack, tabVisibility)));
}
private static void generateSuspiciousStews(Output output, TabVisibility tabVisibility) {
List<SuspiciousEffectHolder> list = SuspiciousEffectHolder.getAllEffectHolders();
Set<ItemStack> set = ItemStackLinkedSet.createTypeAndComponentsSet();
for (SuspiciousEffectHolder suspiciousEffectHolder : list) {
ItemStack itemStack = new ItemStack(Items.SUSPICIOUS_STEW);
itemStack.set(DataComponents.SUSPICIOUS_STEW_EFFECTS, suspiciousEffectHolder.getSuspiciousEffects());
set.add(itemStack);
}
output.acceptAll(set, tabVisibility);
}
private static void generateOminousBottles(Output output, TabVisibility tabVisibility) {
for (int i = 0; i <= 4; i++) {
ItemStack itemStack = new ItemStack(Items.OMINOUS_BOTTLE);
itemStack.set(DataComponents.OMINOUS_BOTTLE_AMPLIFIER, new OminousBottleAmplifier(i));
output.accept(itemStack, tabVisibility);
}
}
private static void generateFireworksAllDurations(Output output, TabVisibility tabVisibility) {
for (byte b : FireworkRocketItem.CRAFTABLE_DURATIONS) {
ItemStack itemStack = new ItemStack(Items.FIREWORK_ROCKET);
itemStack.set(DataComponents.FIREWORKS, new Fireworks(b, List.of()));
output.accept(itemStack, tabVisibility);
}
}
private static void generatePresetPaintings(
Output output,
HolderLookup.Provider registries,
HolderLookup.RegistryLookup<PaintingVariant> paintingVariants,
Predicate<Holder<PaintingVariant>> predicate,
TabVisibility tabVisibility
) {
RegistryOps<Tag> registryOps = registries.createSerializationContext(NbtOps.INSTANCE);
paintingVariants.listElements().filter(predicate).sorted(PAINTING_COMPARATOR).forEach(reference -> {
ItemStack itemStack = new ItemStack(Items.PAINTING);
itemStack.set(DataComponents.PAINTING_VARIANT, reference);
output.accept(itemStack, tabVisibility);
});
}
public static List<CreativeModeTab> tabs() {
return streamAllTabs().filter(CreativeModeTab::shouldDisplay).toList();
}
public static List<CreativeModeTab> allTabs() {
return streamAllTabs().toList();
}
private static Stream<CreativeModeTab> streamAllTabs() {
return BuiltInRegistries.CREATIVE_MODE_TAB.stream();
}
public static CreativeModeTab searchTab() {
return BuiltInRegistries.CREATIVE_MODE_TAB.getValueOrThrow(SEARCH);
}
private static void buildAllTabContents(ItemDisplayParameters parameters) {
streamAllTabs().filter(creativeModeTab -> creativeModeTab.getType() == Type.CATEGORY).forEach(creativeModeTab -> creativeModeTab.buildContents(parameters));
streamAllTabs().filter(creativeModeTab -> creativeModeTab.getType() != Type.CATEGORY).forEach(creativeModeTab -> creativeModeTab.buildContents(parameters));
}
public static boolean tryRebuildTabContents(FeatureFlagSet enabledFeatures, boolean hasPermissions, HolderLookup.Provider registries) {
if (CACHED_PARAMETERS != null && !CACHED_PARAMETERS.needsUpdate(enabledFeatures, hasPermissions, registries)) {
return false;
} else {
CACHED_PARAMETERS = new ItemDisplayParameters(enabledFeatures, hasPermissions, registries);
buildAllTabContents(CACHED_PARAMETERS);
return true;
}
}
}