Every effect in the game supports the feature of “hiddenEffects” where if you receive an effect of a lower level but a longer duration of what you already have, the lower effect will be stored in an “hiddenEffect” field to be restored once the bigger effect runs out.
RaidOmen and BadOmen are broken in this regard, since they will discard their pile of hiddenEffect when triggering their effect which seems to be an unforseen side effect of the following chain of events :
BadOmenStatusEffect/RaidOmenStatusEffect’s
applyEffectTickfunction returnsfalseto signify that its one-time-effect has been activatedMobEffectInstance’s
tickServerfunction forwards this resultLivingEntity’s
tickEffectsfunction react to this return value by simply callingiterator.remove()to remove the effect from the player. <--- this disregards the presence of anyhiddenEffecton the effect being removed !
We can see here that the hidden effect, despite having 42 ticks more than the main one, got removed from my Player at the same time that the main one triggered :
I would expect the logic of MobEffectInstance.downgradeToHiddenEffect (or similar) to be applied when the main effect is removed.
Thank you for your report!
After consideration, the issue is being closed as Working as Intended.
Please note, that mechanics of the game may change between updates.
Things such as graphics, sounds, world creation, biomes, redstone, villagers, and animals may not work the same in current versions.
Full Version History – Snapshot Version History – The official Minecraft feedback site
Quick Links:
📓 Bug Tracker Guidelines – 💬 Community Support – 📧 Mojang Support (Technical Issues) – 📧 Microsoft Support (Account Issues)
📓 Project Summary – ✍️ Feedback and Suggestions – 📖 Game Wiki