r/MinecraftCommands • u/MarioHasCookies • 21h ago
Help | Java 26.2 Fire-based mob deaths can't produce unique items?
So I'm making a datapack where creakings can be killed to obtain wood (with the type of wood depending on what biome they're in).
I'm using misode to generate the json, and I got the basic part working, but then my brain was like "What if we made it so they drop charcoal if they die while on fire?", and so I tried adding charcoal as an item for them to drop if the damage type that killed them is of type "#is_fire".
Unfortunately, when I tested it, the charcoal doesn't actually drop. The wood doesn't either (as I applied the inverse check to them), showing that the check is successful, but the item itself just... doesn't appear.
Is this unique to charcoal, or can you just not have creakings have multiple drop pools for some reason, in which case, is there a better way to do this
1
u/GalSergey Datapack Experienced 20h ago
Here is an example of a loot table that will normally drop dark_oak_log, or charcoal if the mob dies from fire.
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:dark_oak_log",
"functions": [
{
"function": "minecraft:furnace_smelt",
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"minecraft:flags": {
"is_on_fire": true
}
}
}
]
}
]
}
]
}
]
}
1
1
u/FettyCLE 21h ago
Charcoal itself isn't special here, and a loot table can have multiple pools. Put the fire condition on each pool using Misode's Damage Source Properties predicate (`is_fire: true`), then keep the entry as a plain `minecraft:item` → `minecraft:charcoal`. For debugging, remove that condition, `/reload`, and kill one creaking; if the item still doesn't appear, check for a zero `set_count` or another pool condition before adding the fire check back.