package net.minecraft.resources;

import net.minecraft.resources.MinecraftKey;
import net.minecraft.resources.ResourceKey;

import com.bergerkiller.generated.net.minecraft.resources.ResourceKeyHandle;
import com.bergerkiller.generated.net.minecraft.resources.MinecraftKeyHandle;

class ResourceKey {
    #bootstrap com.bergerkiller.bukkit.common.internal.CommonBootstrap.initServer();

#if version >= 1.16
    public (MinecraftKeyHandle) MinecraftKey getCategory() {
  #if version >= 1.17
        #require net.minecraft.resources.ResourceKey private final MinecraftKey category:location;
  #else
        #require net.minecraft.resources.ResourceKey private final MinecraftKey category:b;
  #endif
        return instance#category;
    }

  #if version >= 1.18
    public (MinecraftKeyHandle) MinecraftKey getName:location();
    public static (ResourceKeyHandle) ResourceKey create((ResourceKeyHandle) ResourceKey category, (MinecraftKeyHandle) MinecraftKey name);
    public static (ResourceKeyHandle) ResourceKey createCategory:createRegistryKey((MinecraftKeyHandle) MinecraftKey categoryName);
  #else
    public (MinecraftKeyHandle) MinecraftKey getName:a();
    public static (ResourceKeyHandle) ResourceKey create:a((ResourceKeyHandle) ResourceKey category, (MinecraftKeyHandle) MinecraftKey name);
    public static (ResourceKeyHandle) ResourceKey createCategory:a((MinecraftKeyHandle) MinecraftKey categoryName);
  #endif
#else
    public (MinecraftKeyHandle) MinecraftKey getCategory() {
        return (net.minecraft.resources.MinecraftKey) instance.category;
    }

    public (MinecraftKeyHandle) MinecraftKey getName() {
        return (net.minecraft.resources.MinecraftKey) instance.name;
    }

    public static (ResourceKeyHandle) ResourceKey create((ResourceKeyHandle) ResourceKey category, (MinecraftKeyHandle) MinecraftKey name) {
        return net.minecraft.resources.ResourceKey.create(category, (Object) name);
    }

    public static (ResourceKeyHandle) ResourceKey createCategory((MinecraftKeyHandle) MinecraftKey categoryName) {
        return net.minecraft.resources.ResourceKey.createCategory((Object) categoryName);
    }
#endif
}