package net.minecraft;
import com.bergerkiller.generated.net.minecraft.ChatFormattingHandle;

class ChatFormatting {
    enum (ChatFormattingHandle) ChatFormatting RESET;

#if version >= 26.2
    public int getId() {
        // I don't think this is in practical use at all on 26.2 and later
        // But implement something just so it doesn't error at runtime
        int ord = instance.ordinal();
        return ord < 16 ? ord : -1;
    }
#elseif version >= 1.18
    public int getId();
#else
    public int getId:b();
#endif

    <code>
    public static final Object[] RAW_VALUES = T.getType().getEnumConstants();
    public static final ChatFormattingHandle[] VALUES;
    static {
        VALUES = new ChatFormattingHandle[RAW_VALUES.length];
        for (int i = 0; i < VALUES.length; i++) {
            VALUES[i] = createHandle(RAW_VALUES[i]);
        }
    }

    public static ChatFormattingHandle byChar(char c) {
        for (ChatFormattingHandle format : VALUES) {
            String s = format.toString();
            if (s.length() >= 2 && s.charAt(1) == c) {
                return format;
            }
        }
        return RESET;
    }

    public static ChatFormattingHandle byId(int id) {
        if (id >= 0) {
            for (ChatFormattingHandle format : VALUES) {
                if (format.getId() == id) {
                    return format;
                }
            }
        }
        return RESET;
    }
    </code>
}

package net.minecraft.world;
import com.bergerkiller.generated.net.minecraft.world.DifficultyHandle;
import com.bergerkiller.generated.net.minecraft.world.InteractionHandHandle;

class Difficulty {
#if version >= 1.18
    public int getId();
    public static (DifficultyHandle) Difficulty getById:byId(int id);
#else
    public int getId:a();
    public static (DifficultyHandle) Difficulty getById(int id);
#endif
}

package net.minecraft.world.level;
import com.bergerkiller.generated.net.minecraft.world.level.GameTypeHandle;
import com.bergerkiller.generated.net.minecraft.world.level.LightLayerHandle;

class GameType {
    public int getId();

#if version >= 1.18
    public static (GameTypeHandle) GameType getById:byId(int id);
#else
    public static (GameTypeHandle) GameType getById(int id);
#endif
}

class LightLayer {
    enum (LightLayerHandle) LightLayer SKY;
    enum (LightLayerHandle) LightLayer BLOCK;

    <code>
    public int ordinal() {
        return ((Enum<?>) getRaw()).ordinal();
    }
    </code>
}

package net.minecraft.core;
import com.bergerkiller.generated.net.minecraft.core.DirectionHandle;
import com.bergerkiller.generated.net.minecraft.core.DirectionHandle.AxisHandle;

class Direction {
    enum (DirectionHandle) Direction DOWN;
    enum (DirectionHandle) Direction UP;
    enum (DirectionHandle) Direction NORTH;
    enum (DirectionHandle) Direction SOUTH;
    enum (DirectionHandle) Direction WEST;
    enum (DirectionHandle) Direction EAST;

    class Direction.Axis {
        enum (AxisHandle) Direction.Axis X;
        enum (AxisHandle) Direction.Axis Y;
        enum (AxisHandle) Direction.Axis Z;

        <code>
        public int ordinal() {
            return ((Enum<?>) getRaw()).ordinal();
        }
        </code>
    }
}