public override void OnGameTick(float deltaTime)
        {
            breatheCounter += deltaTime;
            if (breatheCounter < 1 || !entity.Alive)
            {
                return;
            }


            if (entity is EntityPlayer)
            {
                EntityPlayer plr  = (EntityPlayer)entity;
                EnumGameMode mode = entity.World.PlayerByUid(plr.PlayerUID).WorldData.CurrentGameMode;
                if (mode == EnumGameMode.Creative || mode == EnumGameMode.Spectator)
                {
                    return;
                }
            }

            EnumSuffocationType danger = checkSuffocation();

            if (danger == EnumSuffocationType.None)
            {
                this.Oxygen = Math.Min(this.MaxOxygen, Oxygen + breatheCounter);
            }
            else
            {
                float prevOxy = Oxygen;
                Oxygen -= depletionRate(breatheCounter);
                triggerSoundEffect(prevOxy, Oxygen, danger);

                if (Oxygen < 0)
                {
                    DamageSource damage = new DamageSource();
                    damage.source = EnumDamageSource.Drown;
                    damage.type   = EnumDamageType.Asphyxiation;
                    entity.Die(EnumDespawnReason.Death, damage);
                }
            }
            breatheCounter = 0;
        }
 private void triggerSoundEffect(float prev, float cur, EnumSuffocationType effect)
 {
     if (prev >= (MaxOxygen * 0.75))
     {
         if (cur <= (MaxOxygen * 0.75))
         {
             if (effect == EnumSuffocationType.Drowning)
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/bubble1.ogg"), entity);
             }
             else
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/doublecough.ogg"), entity);
             }
         }
     }
     else if (prev >= (MaxOxygen * 0.5))
     {
         if (cur <= (MaxOxygen * 0.5))
         {
             if (effect == EnumSuffocationType.Drowning)
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/bubble2.ogg"), entity);
             }
             else
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/cough.ogg"), entity);
             }
         }
     }
     else if (prev >= (MaxOxygen * 0.3))
     {
         if (cur <= (MaxOxygen * 0.3))
         {
             if (effect == EnumSuffocationType.Drowning)
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/bubble3.ogg"), entity);
             }
             else
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/quickgasp1.ogg"), entity);
             }
         }
     }
     else if (prev >= (MaxOxygen * 0.1))
     {
         if (cur <= (MaxOxygen * 0.1))
         {
             if (effect == EnumSuffocationType.Drowning)
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/bubble4.ogg"), entity);
             }
             else
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/quickgasp2.ogg"), entity);
             }
         }
     }
     else if (prev >= 1.5)
     {
         if (cur <= 1.5)
         {
             if (effect == EnumSuffocationType.Drowning)
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/drowned.ogg"), entity);
             }
             else
             {
                 entity.World.PlaySoundAt(new AssetLocation("stressfullife:sounds/player/lastgasp.ogg"), entity);
             }
         }
     }
 }