diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java
index 960b52a0..62632247 100644
--- a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java
+++ b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java
@@ -94,14 +94,16 @@ public class ItemSacrificialDagger extends ItemEnum<ItemSacrificialDagger.Dagger
                 return super.onItemRightClick(world, player, hand);
 
             if (evt.shouldDrainHealth) {
+                DamageSourceBloodMagic damageSrc = DamageSourceBloodMagic.INSTANCE;
                 player.hurtResistantTime = 0;
-                player.attackEntityFrom(DamageSourceBloodMagic.INSTANCE, 0.001F);
-                player.setHealth(Math.max(player.getHealth() - 2, 0.0001f));
-                if (player.getHealth() <= 0.001f) {
-                    player.onDeath(DamageSourceBloodMagic.INSTANCE);
-                    player.setHealth(0);
+                float playerHealth = player.getHealth();
+                if (Math.ceil(player.getHealth() - 2) <= 0) {
+                    player.attackEntityFrom(damageSrc, Float.MAX_VALUE);
+                } else {
+                    float damageAmount = net.minecraftforge.common.ForgeHooks.onLivingDamage(player, damageSrc, 2.0F);
+                    player.getCombatTracker().trackDamage(damageSrc, playerHealth, damageAmount);
+                    player.setHealth(Math.max(player.getHealth() - 2, 0.001f));
                 }
-//                player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 2.0F);
             }
 
             if (!evt.shouldFillAltar)
diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java
index 7685e0fc..52ff0be5 100644
--- a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java
+++ b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java
@@ -204,7 +204,7 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
 
     @Override
     public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction) {
-        return !stack.isEmpty() && (stack.getItem() instanceof IDemonWillGem || stack.getItem() instanceof IDiscreteDemonWill);
+        return !stack.isEmpty() && inventory.get(0).isEmpty() && (stack.getItem() instanceof IDemonWillGem || stack.getItem() instanceof IDiscreteDemonWill);
     }
 
     @Override