The advancement that unlocks the soul campfire recipe can be achieved by obtaining either soul sand, or a stick.
Since sticks are one of the very first items a player obtains, this is one of the very first recipes to be unlocked. It's a bit unusual, since soul campfires are an otherwordly-looking item that aren't truly obtainable until entering the nether.
The other two soul items are only unlocked when obtaining a nether ingredient: torches when obtaining soul sand/soil, and soul lanterns when obtaining soul torches. So when you gather soul sand for the first time, the game will inform you that you can now craft soul torches, but won't inform you that you can now craft soul campfires, since you already unlocked that recipe ages ago.
I think the intention was to unlock this recipe after both sticks and soul sand have been obtained, and likewise for stick and coal for the regular campfire.
I can confirm this behavior in 1.18.
Here's a code analysis of this issue. The following is based on a decompiled version of Minecraft 1.18 using MCP-Reborn. Please note that I'm quite tentative about this analysis, although I'm persuaded to believe that this is likely the cause of the problem. 🙂
Code Analysis (tentative):
net.minecraft.data.recipes.RecipeProvider.java
If we look at the above class, we can see that upon obtaining a stick, you are awarded the soul campfire recipe. This is evident through the following line of code:
Potential Fix:
Simply removing
.unlockedBy("has_stick", has(Items.STICK))within this particular piece of code should prevent the soul campfire recipe from being unlocked upon obtaining a stick and would resolve this problem. The correct line of code within its class should look something like the following:net.minecraft.data.recipes.RecipeProvider.java