The burn time of carpets needs to be adjusted. It's 67 for normal furnace. Rounding down to 33 is the problem.
Code analysis
Code analysis based on MCP-Reborn 1.17.1 by @unknown can be found in this comment.
In net.minecraft.world.level.block.entity.BlastFurnaceBlockEntity.java
and net.minecraft.world.level.block.entity.SmokerBlockEntity.java
, the duration each fuel item lasts is calculated with the following method:
protected int getBurnDuration(ItemStack $$0) {
return super.getBurnDuration($$0) / 2;
}
According to net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.java
, carpets have a burn time of 67. When the integer 67 is divided by the integer 2 in the method described above, the output value is 33. Therefore, three carpets have a burn time of 99, which is short of the time of 100 required to smelt the item.
Can confirm in 20w51a.