Если вешаешь эффект самостоятельно, то что бы не спавнились частицы достаточно в полной версии конструктора PotionEffect последним аргументом поставить false
.
А так спаун частиц происходит в методе EntityLivingBase#updatePotionEffects()
в самом конце - можно хуком прервать это для всех эффектов.