public static void AddDefaults(
        this ServerBuilder builder,
        ServerBuilderDefaultPacketHandlers exceptPacketHandlers = ServerBuilderDefaultPacketHandlers.None,
        ServerBuilderDefaultBehaviours exceptBehaviours         = ServerBuilderDefaultBehaviours.None,
        ServerBuilderDefaultServices exceptServices             = ServerBuilderDefaultServices.None,
        ServerBuilderDefaultMiddleware exceptMiddleware         = ServerBuilderDefaultMiddleware.None)
    {
        builder.AddDefaultPacketHandler(exceptPacketHandlers);
        builder.AddDefaultBehaviours(exceptBehaviours);
        builder.AddDefaultServices(exceptServices, exceptMiddleware);

        builder.AddNetWrapper(
            Directory.GetCurrentDirectory(),
            "net",
            builder.Configuration.Host,
            builder.Configuration.Port,
            builder.Configuration.AntiCheat);
    }
    public static void AddDefaultBehaviours(
        this ServerBuilder builder,
        ServerBuilderDefaultBehaviours except = ServerBuilderDefaultBehaviours.None)
    {
        if ((except & ServerBuilderDefaultBehaviours.AseBehaviour) == 0)
        {
            builder.AddBehaviour <AseBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.LocalServerAnnouncementBehaviour) == 0)
        {
            builder.AddBehaviour <LocalServerAnnouncementBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.MasterServerAnnouncementBehaviour) == 0)
        {
            builder.AddBehaviour <MasterServerAnnouncementBehaviour>("http://master.mtasa.com/ase/add.php");
        }

        if ((except & ServerBuilderDefaultBehaviours.EventLoggingBehaviour) == 0)
        {
            builder.AddBehaviour <EventLoggingBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.VelocityBehaviour) == 0)
        {
            builder.AddBehaviour <VelocityBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.DefaultChatBehaviour) == 0)
        {
            builder.AddBehaviour <DefaultChatBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.NicknameChangeBehaviour) == 0)
        {
            builder.AddBehaviour <NicknameChangeBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.CollisionShapeBehaviour) == 0)
        {
            builder.AddBehaviour <CollisionShapeBehaviour>();
        }

        if ((except & ServerBuilderDefaultBehaviours.PlayerJoinElementBehaviour) == 0)
        {
            builder.AddBehaviour <PlayerJoinElementBehaviour>();
        }

        if ((except & ServerBuilderDefaultBehaviours.ElementPacketBehaviour) == 0)
        {
            builder.AddBehaviour <ElementPacketBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.PedPacketBehaviour) == 0)
        {
            builder.AddBehaviour <PedPacketBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.PlayerPacketBehaviour) == 0)
        {
            builder.AddBehaviour <PlayerPacketBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.VehicleWarpBehaviour) == 0)
        {
            builder.AddBehaviour <VehicleWarpBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.VehicleRespawnBehaviour) == 0)
        {
            builder.AddBehaviour <VehicleRespawnBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.VehicleBehaviour) == 0)
        {
            builder.AddBehaviour <VehicleBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.VoiceBehaviour) == 0)
        {
            builder.AddBehaviour <VoiceBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.LightSyncBehaviour) == 0)
        {
            builder.AddBehaviour <LightSyncBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.TeamBehaviour) == 0)
        {
            builder.AddBehaviour <TeamBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.RadarAreaBehaviour) == 0)
        {
            builder.AddBehaviour <RadarAreaBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.BlipBehaviour) == 0)
        {
            builder.AddBehaviour <BlipBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.ObjectPacketBehaviour) == 0)
        {
            builder.AddBehaviour <ObjectPacketBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.PickupBehaviour) == 0)
        {
            builder.AddBehaviour <PickupBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.MarkerBehaviour) == 0)
        {
            builder.AddBehaviour <MarkerBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.MapInfoBehaviour) == 0)
        {
            builder.AddBehaviour <MapInfoBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.PedSyncBehaviour) == 0)
        {
            builder.AddBehaviour <PedSyncBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.UnoccupiedVehicleSyncBehaviour) == 0)
        {
            builder.AddBehaviour <UnoccupiedVehicleSyncBehaviour>();
        }
        if ((except & ServerBuilderDefaultBehaviours.CustomDataBehaviour) == 0)
        {
            builder.AddBehaviour <CustomDataBehaviour>();
        }
    }