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