package net.minecraft.world.item;

import net.minecraft.core.RegistryMaterials;
import net.minecraft.resources.MinecraftKey;

class Item {
    public static Iterable<?> getRegistry() {
        // Must initialize the server to initialize the item-storing registries
        com.bergerkiller.bukkit.common.internal.CommonBootstrap.initServer();

#if version >= 1.14
        #require net.minecraft.core.registries.BuiltInRegistries public static final net.minecraft.core.RegistryBlocks<net.minecraft.world.item.Item> REGISTRY:ITEM;
#elseif version >= 1.13.1
        #require net.minecraft.core.IRegistry public static final net.minecraft.core.IRegistry<net.minecraft.world.item.Item> REGISTRY:ITEM;
#else
        #require net.minecraft.world.item.Item public static final net.minecraft.core.RegistryMaterials<MinecraftKey, net.minecraft.world.item.Item> REGISTRY;
#endif
        return #REGISTRY;
    }

    public void setMaxStackSize(int maxStackSize) {
        #require net.minecraft.world.item.Item private final int maxStackSize;
        instance#maxStackSize = maxStackSize;
    }

    public int getMaxStackSize();

#if version >= 1.18
    public int getMaxDurability:getMaxDamage();
    public boolean usesDurability:canBeDepleted();
#else
    public int getMaxDurability();
    public boolean usesDurability();
#endif

#select version >=
#case 1.18:   public String getInternalName:getDescriptionId((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.17:   public String getInternalName:j((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.14:   public String getInternalName:f((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.13:   public String getInternalName:h((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.11:   public String getInternalName:a((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.9:    public String getInternalName:f_((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.8.6:  public String getInternalName:e_((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case 1.8.5:  public String getInternalName:f_((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#case else:   public String getInternalName:e_((org.bukkit.inventory.ItemStack) ItemStack itemstack);
#endselect
}
