The wither boss' loot table is not changed when its DeathLootTable NBT data is modified, resulting in it always dropping a nether star.
Steps to Reproduce:
Summon a wither with no AI
/summon minecraft:wither ~ ~ ~ {NoAI:1b}
Modify its data to be empty
/data modify entity @e[type=wither,limit=1,sort=nearest] DeathLootTable set value ""
Kill it
/kill @e[type=wither]
Expected & Observed Results:
❌ - The wither will drop a nether star, despite having no DeathLootTable NBT data
✔ - It would not drop anything, as that is what the player intentionally set the DeathLootTable to.
Screenshots/Videos:
[media]
Code Analysis
The happens because the wither boss has its death loot table "hard-coded", meaning it ignores any loot table entirely.
Class: net.minecraft.world.entity.boss.wither.WitherBoss // Method: dropCustomDeathLoot // MCP 1.20.2 Mojang Mappings
protected void dropCustomDeathLoot(DamageSource source, int lootingMultiplier, boolean allowDrops) {
super.dropCustomDeathLoot(source, lootingMultiplier, allowDrops);
ItemEntity itementity = this.spawnAtLocation(Items.NETHER_STAR);
if (itementity != null) {
itementity.setExtendedLifetime();
}
}
Original Description:
The bug
Setting the wither's
DeathLootTable
NBT tag to any given loot table does not stop the wither from dropping a nether star.
Loot from the loot table set in theDeathLootTable
tag drops in addition to the nether star. This was not the case in 1.13.*, where theDeathLootTable
tag being set prevented the nether star from dropping.
Linked issues
is duplicated by
relates to
Attachments
Comments


Affects 21w18a
Can confirm in 1.19.2. Here's a code analysis of this issue.
Code Analysis:
The following is based on a decompiled version of Minecraft 1.19.2 using Mojang mappings.
net.minecraft.world.entity.boss.wither.WitherBoss.java
public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob {
...
@Override
protected void dropCustomDeathLoot(DamageSource damageSource, int n, boolean bl) {
super.dropCustomDeathLoot(damageSource, n, bl);
ItemEntity itemEntity = this.spawnAtLocation(Items.NETHER_STAR);
if (itemEntity != null) {
itemEntity.setExtendedLifetime();
}
}
...
If we look at the above class, we can see the drop of a nether star from a wither is controlled by the dropCustomDeathLoot()
method. Because the drop is controlled this way, it doesn't have a loot table entry, therefore resulting in this issue.

Can confirm in 1.19.3 and 1.19.4-rc2

This is in 1.20.4 too
I'd like to request ownership of this issue, as @unknown has not updated it since it's creation.

Can confirm in 24w34a
Confirmed in 1.16 Release Candidate 1.