namespace GamecraftModdingAPI.Blocks
{
    /// <summary>
    /// Possible block types
    /// </summary>
    public enum BlockIDs : ushort
    {
        /// <summary>
        /// Called "nothing" in Gamecraft. (DBID.NOTHING)
        /// </summary>
        Invalid = ushort.MaxValue,
        AluminiumCube = 0,
        AxleS,
        HingeS = 3,
        MotorS,
        HingeM,
        MotorM,
        TyreM,
        AxleM,
        IronCube,
        RubberCube,
        OiledCube,
        AluminiumConeSegment, //12
        AluminiumCorner,
        AluminiumRoundedCorner,
        AluminiumSlicedCube,
        AluminiumRoundedSlicedCube,
        AluminiumCylinder,
        AluminiumPyramidSegment,
        AluminiumSlope,
        AluminiumRoundedSlope,
        AluminiumSphere,
        RubberConeSegment, //22
        RubberCorner,
        RubberRoundedCorner,
        RubberSlicedCube,
        RubberRoundedSlicedCube,
        RubberCylinder,
        RubberPyramidSegment,
        RubberSlope,
        RubberRoundedSlope,
        RubberSphere,
        OiledConeSegment, //32
        OiledCorner,
        OiledRoundedCorner,
        OiledSlicedCube,
        OiledRoundedSlicedCube,
        OiledCylinder,
        OiledPyramidSegment,
        OiledSlope,
        OiledRoundedSlope,
        OiledSphere,
        IronConeSegment, //42
        IronCorner,
        IronRoundedCorner,
        IronSlicedCube,
        IronRoundedSlicedCube,
        IronCylinder,
        IronPyramidSegment,
        IronSlope,
        IronRoundedSlope,
        IronSphere,
        GlassCube, //52
        GlassSlicedCube,
        GlassSlope,
        GlassCorner,
        GlassPyramidSegment,
        GlassRoundedSlicedCube,
        GlassRoundedSlope,
        GlassRoundedCorner,
        GlassConeSegment,
        GlassCylinder,
        GlassSphere,
        Lever, //63 - two IDs skipped
        PlayerSpawn = 66, //Crashes without special handling
        SmallSpawn,
        MediumSpawn,
        LargeSpawn,
        BallJoint,
        UniversalJoint,
        ServoAxle,
        ServoHinge,
        StepperAxle,
        StepperHinge,
        TelescopicJoint,
        DampedSpring,
        ServoPiston,
        StepperPiston,
        PneumaticPiston,
        PneumaticHinge,
        PneumaticAxle, //82
        PilotSeat = 90, //Might crash
        PassengerSeat,
        PilotControls,
        GrassCube,
        DirtCube,
        GrassConeSegment,
        GrassCorner,
        GrassRoundedCorner,
        GrassSlicedCube,
        GrassRoundedSlicedCube,
        GrassPyramidSegment,
        GrassSlope,
        GrassRoundedSlope,
        DirtConeSegment,
        DirtCorner,
        DirtRoundedCorner,
        DirtSlicedCube,
        DirtRoundedSlicedCube,
        DirtPyramidSegment,
        DirtSlope,
        DirtRoundedSlope,
        RubberHemisphere,
        AluminiumHemisphere,
        GrassInnerCornerBulged,
        DirtInnerCornerBulged,
        IronHemisphere,
        OiledHemisphere,
        GlassHemisphere,
        TyreS,
        ThreeWaySwitch,
        Dial, //120
        CharacterOnEnterTrigger, //Probably crashes
        CharacterOnLeaveTrigger,
        CharacterOnStayTrigger,
        ObjectOnEnterTrigger,
        ObjectOnLeaveTrigger,
        ObjectOnStayTrigger,
        Button,
        Switch,
        TextBlock, //Brings up a screen
        ConsoleBlock, //Brings up a screen
        Door,
        GlassDoor,
        PoweredDoor,
        PoweredGlassDoor,
        AluminiumTubeCorner,
        IronTubeCorner,
        WoodCube,
        WoodSlicedCube,
        WoodSlope,
        WoodCorner,
        WoodPyramidSegment,
        WoodConeSegment,
        WoodRoundedSlicedCube,
        WoodRoundedSlope,
        WoodRoundedCorner,
        WoodCylinder,
        WoodHemisphere,
        WoodSphere,
        BrickCube, //149
        BrickSlicedCube = 151,
        BrickSlope,
        BrickCorner,
        ConcreteCube,
        ConcreteSlicedCube,
        ConcreteSlope,
        ConcreteCorner,
        RoadCarTyre,
        OffRoadCarTyre,
        RacingCarTyre,
        BicycleTyre,
        FrontBikeTyre,
        RearBikeTyre,
        ChopperBikeTyre,
        TractorTyre,
        MonsterTruckTyre,
        MotocrossBikeTyre,
        CartTyre, //168
        ObjectIdentifier,
        ANDLogicBlock,
        NANDLogicBlock,
        NORLogicBlock,
        NOTLogicBlock,
        ORLogicBlock,
        XNORLogicBlock,
        XORLogicBlock,
        AbsoluteMathsBlock,
        AdderMathsBlock,
        DividerMathsBlock,
        SignMathsBlock, //180
        MaxMathsBlock,
        MinMathsBlock,
        MultiplierMathsBlock,
        SubtractorMathsBlock,
        SimpleConnector,
        MeanMathsBlock,
        Bit,
        Counter,
        Timer,
        ObjectFilter,
        PlayerFilter,
        TeamFilter,
        Number2Text, //193
        DestructionManager = 260,
        ChunkHealthModifier,
        ClusterHealthModifier, //262
        BeachTree1 = 200,
        BeachTree2,
        BeachTree3,
        Rock1,
        Rock2,
        Rock3,
        Rock4,
        BirchTree1,
        BirchTree2,
        BirchTree3,
        PineTree1,
        PineTree2,
        PineTree3,
        Flower1,
        Flower2,
        Flower3,
        Shrub1,
        Shrub2,
        Shrub3,
        CliffCube,
        CliffSlicedCorner,
        CliffCornerA,
        CliffCornerB,
        CliffSlopeA,
        CliffSlopeB,
        GrassEdge,
        GrassEdgeInnerCorner,
        GrassEdgeCorner,
        GrassEdgeSlope,
        CentreHUD,
        ObjectiveHUD,
        GameStatsHUD, //231
        GameOverBlock,
        SFXBlockGameplay=240,
        SFXBlock8Bit,
        SFXBlockInstrument,
        SFXBlockSciFi,
        SFXBlockLoops,
        SFXBlockVocal,
        MovementConstrainer, //246
        RotationConstrainer,
        AdvancedMovementDampener,
        AdvancedRotationDampener,
        Mover = 250,
        Rotator,
        MovementDampener,
        RotationDampener,
        AdvancedMover,
        AdvancedRotator,
        MusicBlock, //256
        PlasmaCannonBlock,
        QuantumRiflePickup = 300,
        QuantumRifleAmmoPickup,
        MagmaRockCube=777,
        MagmaRockCubeSliced,
        MagmaRockSlope,
        MagmaRockCorner,
        MagmaRockPyramidSegment,
        MagmaRockConeSegment,
        MagmaRockSlicedRounded,
        MagmaRockSlopeRounded,
        MagmaRockCornerRounded,
        HexNetCube,
        HexNetCubeSliced,
        HexNetSlope,
        HexNetCorner,
        HexNetPyramidSegment,
        HexNetConeSegment,
        HexNetSlicedRounded,
        HexNetSlopeRounded,
        HexNetCornerRounded, //794
        MagmaRockBulgedInner,
        HexNetCylinder=797,
        HexNetHemisphere,
        HexNetSphere,
        HexNetTubeCorner //800
    }
}