HomeJavaModsQED
QED
ModsJava

QED

by huaijiujing · on Modrinth

a mod that fixes entity attributes contaminated with NaN after taking extreme damage.

⬇ Download on Modrinth

📌 Dependencies

This mod does not depend on any other mod.

📑 Introduction

This is a mod that fixes entity data being contaminated with NaN due to extreme damage — or, more broadly speaking, "fake death".

When an entity takes infinite or NaN damage, some of its attributes, such as absorption and health, become NaN after calculation.

Normally, an entity hit by infinite damage is supposed to die outright, and the NaN-contaminated data would be cleaned up or reset.

However, some entities with special mechanics survive infinite damage or keep performing other operations — for example, the dummy entity from Target Dummy. The rest of this description is based on the characteristics of that entity.

The dummy shows the player's dealt damage as NaN

🫣 What is NaN

NaN stands for "Not a Number" — a value that has no meaning and cannot participate in calculations. In programming, any comparison between NaN and any number is False, and any operation involving NaN results in NaN, which makes NaN contagious.

👌 How it occurs and how it's fixed

When calculating damage effects, if the damage value is infinite, the program computes damage before absorption - damage after absorption to derive the absorption reduction while applying damage absorption. However, infinity operated on with any finite value always yields infinity, so both the minuend and the subtrahend are infinity, and infinity - infinity results in NaN — the absorption attribute thus becomes NaN.

As mentioned above, NaN is contagious: any subsequent damage calculated with NaN also becomes NaN, which is why you'll see the dummy displaying dealt damage as NaN.

This mod does not try to clean up entities; instead, it fixes the mathematical root cause — mathematically, damage before absorption - damage after absorption is equivalent to min(damage before absorption, current absorption). The latter removes the unnecessary subtraction, so infinity - infinity no longer occurs, eliminating the possibility of NaN.

The dummy after installing this mod

💭 FAQ

Q: Does this mod need to be installed on the client? A: Yes if you're playing singleplayer; otherwise, installing it on the server only is enough.

Q: Does this mod only apply to Target Dummy? A: No. Any entity that can take damage and has health is covered by the fix.

Q: Other Minecraft versions? A: Other mainstream versions will be updated over time, with Minecraft 1.20.1 as the main focus. Third-party ports are welcome.

Q: NeoForge / Quilt versions? A: NeoForge will be supported separately; Quilt will not be supported separately, but third-party ports are welcome.

ℹ️ Misc

The mod also includes compatibility handling for infinite armor values and infinite armor toughness, whose behavior can be configured via the config file named qed.json5.

The mod abbreviation "QED" stands for "Quite Enough Damage", but can also stand for "Quod Erat Demonstrandum", meaning "that which was to be demonstrated".

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more