Once means one crafting session
The unit of once is a session, not a click. From your first successful craft of a recipe until you close the crafting inventory or log out, you can keep crafting it: load the grid, shift-click, top it up. When the inventory closes, the recipe is spent forever, for everyone on the server. This single rule is what keeps the game finishable.
Tip: Your one Eye of Ender session had better be a big one. Bring every pearl and every scrap of blaze powder you own.
Only invention is spent
Only crafting-grid recipes are gated: the crafting table and the inventory 2x2. Smelting, smoking, blasting, campfires, stonecutting, smithing and brewing are never touched, and neither are loot, villager trades, fishing or mob drops. Furnaces work metal, the stonecutter cuts. The world keeps producing; only your hands are limited.
Tip: Stick recipe spent? Bamboo sticks are a separate recipe, and so is every per-wood-type plank recipe.
Dynamic recipes stay repeatable
Fireworks, armour dyeing, banner and map and book copying, shulker colouring, tipped arrows, suspicious stew, shield decoration and grid repair are exempt on purpose: one firework ever would end elytra travel, and the second banner you dye is technically a different recipe, which is not a rule anyone can play against. Two mechanisms keep them safe: anything the server reports as a complex recipe is exempt structurally, plus a regex list in the config for datapack and plugin recipes.
Tip: 1.21 has a second, plain firework recipe (gunpowder plus paper). It is exempted by name in the config. Leave it there.
The loopholes are closed
A crafter block would craft a recipe forever without ever closing an inventory, so crafters may only craft exempt recipes; anything else silently produces nothing. Re-unlocking a spent recipe in the recipe book, say by picking up its ingredient, is cancelled, and spent recipes are re-hidden on every join. And the result of a craft is re-checked against the ledger at the moment you take it, so two players cannot both spend the last copy of the same recipe.
Total silence
No chat messages, no titles, no sounds, no particles. The plugin never announces anything to anybody. The only feedback is the world itself: an empty result slot and a recipe book that has quietly shrunk. The /firstandlast command talks, but only to whoever typed it, and it exists for the operator, not the player.
The ledger
Spent recipes live in plugins/FirstAndLast/spent.txt, one key per line, written atomically on every spend. The scope is the server installation, not the world folder: one challenge, shared by everyone, and swapping the world does not reset it. Admins get /fal status, /fal list, /fal restore, /fal reset confirm and /fal reload.
Tip: For a genuinely fresh run, delete spent.txt or run /fal reset confirm. Changing level-name is not enough.