private static void HeartGem_OnHoldable(On.Celeste.HeartGem.orig_OnHoldable orig, HeartGem self, Holdable h)
 {
     if (self is MultiDashHeartGem gem)
     {
         if (h.Dangerous(gem.baseData.Get <HoldableCollider>("holdableCollider")))
         {
             Player player = gem.Scene.Tracker.GetEntity <Player>();
             if (!gem.baseData.Get <bool>("collected") && player != null && gem.health > 1)
             {
                 // Basically just HeartGem.OnPlayer
                 if (gem.baseData.Get <float>("bounceSfxDelay") <= 0f)
                 {
                     Audio.Play(SFX.game_gen_crystalheart_bounce, gem.Position);
                     gem.baseData["bounceSfxDelay"] = 0.1f;
                 }
                 h.PointBounce(self.Center);
                 gem.baseData.Get <Wiggler>("moveWiggler").Start();
                 gem.ScaleWiggler.Start();
                 gem.baseData["moveWiggleDir"] = (gem.Center - player.Center).SafeNormalize(Vector2.UnitY);
                 Input.Rumble(RumbleStrength.Medium, RumbleLength.Medium);
             }
             else
             {
                 // Collect normally
                 orig(self, h);
             }
             Console.WriteLine(gem.health);
             TryStartCutscene(gem.cutscenes[3 - gem.health], player);
             gem.Crack(player);
         }
     }
     else
     {
         orig(self, h);
     }
 }