Not enough source nearby
The short answer
The message is the jars in range, added up.
Not enough source nearby.is sent when that sum is below the recipe'ssourceCost. The range is 10, Manhattan. A full source jar counts as 10,000, and further jars add on. Empty jars, potion jars, mob jars and sourcelinks are not in the sum. Go to Nearby jars are added up.This pack does not draw from one jar. The take is
takeSourceMultipleWithParticles. In this jar the only constant-pool reference totakeSourceis insideSourceUtilitself, from the deprecatedtakeSourceWithParticleswrapper, and nothing else calls the wrapper. Issue 2113 is a 1.20.1 report of that old method. Go to This pack does not draw from one jar.One full jar covers the enchantments. It does not cover the alloy block. Every enchantment the mod ships costs at most 9,000. The pack's unobtainium-allthemodium alloy block costs 90,000, so one jar cannot pay it, and nine full jars in range can. Whether nine jars fit in that range was not checked. Go to What one full jar can pay.
None of this was tested in a world. The limits are in What was not read.
Checked against: Ars Nouveau 5.13.1.
On this page
Applies to Ars Nouveau 5.13.1, jar ars_nouveau-1.21.1-5.13.1.jar, 20,107,711 bytes, sha256 99dff85e8778f7ae21dfd51cdedadf20f555a834fc757c0afe5f03c10eea96f2, built 2026-08-24 (Implementation-Timestamp: 2026-08-24T03:26:36+0000), Minecraft 1.21.1, NeoForge, as shipped in All the Mods 10 8.2. The manifest says Implementation-Version: 5.13.1, vendor baileyh. The jar's neoforge.mods.toml leaves version as the literal ${file.jarVersion} and points the issue tracker at baileyholl/Ars-Nouveau. No git hash. The class files are the authority.
The click sums every loaded source jar inside Manhattan range 10. The message is that sum coming out short of the recipe's sourceCost. It does not draw from one jar.
Nearby jars are added up
EnchantingApparatusBlock.useItemOn is the only class that loads that string. When the recipe's consumesSource() is true and SourceUtil.hasSourceNearby(pos, level, 10, sourceCost) is false, it sends the line with PortUtil.sendMessage and skips attemptCraft. The craft does not start. consumesSource is sourceCost() > 0, so a recipe that costs 0 never takes this branch.
EnchantingApparatusTile.craftingPossible calls the same check, with the same range and the same cost. attemptCraft calls takeSourceMultipleWithParticles with that range and cost, then discards the list it returns without testing it for null. The line you see is the check. The take runs only after the check has already passed.
SourceUtil.canTakeSource walks BlockPos.withinManhattan. The apparatus passes 10 three times, so a block is kept when the absolute values of dx, dy and dz add up to at most 10. A jar across the room can be outside that even when it looks close. Pedestals are a different rule: the book says pedestals within 3 blocks, and that number is not this search.
A position is kept only when the chunk is loaded, the block entity is a SourceJarTile, and getSource() is above 0. Empty jars are skipped. Potion jars, mob jars and sourcelinks are not SourceJarTile, so they are not in this list. After the jars, SourceManager.canTakeSourceNearby appends the special providers that have registered. That list is added. It does not replace the jars.
hasSourceNearby walks the list. A CreativeSourceJarTile returns true immediately. Every other provider contributes removeSource(remaining, true). The true is the simulate flag on SourceStorage.extractSource: the write is skipped, and the returned int is the smallest of what is stored, the max extract, and what was asked. The remaining cost drops by that int. Zero left returns true. The list ending first returns false. Jars are summed. One jar does not have to hold the whole cost.
SourceJarTile.createDefaultStorage passes 10000, 10000 into SourceStorage. Capacity, max receive and max extract are each 10,000. A full source jar counts as 10,000 toward the sum. Further jars add on. CreativeSourceJarTile reports getSource of 1,000,000, and its extractSource returns the amount asked without depleting.
Three nested jars in this file were opened: lambdynamiclights, infiniverse and nuggets. None of them contains SourceUtil or the apparatus classes. The jar records no META-INF/versions/ entry.
Sources: Ars Nouveau 5.13.1 EnchantingApparatusBlock.useItemOn, EnchantingApparatusTile.craftingPossible, attemptCraft, SourceUtil.canTakeSource, hasSourceNearby, SourceJarTile.createDefaultStorage, CreativeSourceJarTile, SourceManager.canTakeSourceNearby, lang key ars_nouveau.apparatus.nomana.
This pack does not draw from one jar
The take the apparatus calls is takeSourceMultiple, through takeSourceMultipleWithParticles. It takes the smaller of what is still needed and jar.getSource() from each provider, with the one-argument removeSource, which writes through setSource. setSource clamps to the range from 0 to getMaxSource(). If the total is still short it refunds every jar with addSource and returns null. If it meets a creative jar it refunds what it already took and returns that one jar. It does not stop at the first ordinary jar.
SourceUtil.takeSource is still in the class. It skips a provider unless that provider already holds the whole cost, then removes the whole cost from that one provider. In this jar the only constant-pool reference to that method is inside SourceUtil itself, from the deprecated takeSourceWithParticles wrapper, and nothing else calls the wrapper. EnchantingApparatusTile, RitualBrazierTile, ImbuementTile, and the other devices that take source call takeSourceMultiple or takeSourceMultipleWithParticles.
Issue 2113 on baileyholl/Ars-Nouveau is open. Its title is "Impossible to ever have enough source." The body says forge 1.20.1, a kubejs recipe of 50,000, and that the apparatus can only take from 1 jar at a time, so anything over 10,000 always fails with this message. That is the one-jar method. This pack's 5.13.1 apparatus does not call it. The 10,000 figure in the issue matches this jar's tank. The claim that a cost above 10,000 always fails does not match this jar's take. This jar was built 24 August 2026. The issue names 1.20.1. No tag list came back for this repo, and the manifest has no commit, so there is no hash to put the issue's build next to this one.
ars_creo-1.21.1-5.4.0.jar has SourceUtilMixin, which injects into takeSourceMultiple and hasSourceNearby. Both handlers return immediately unless the provider is a ContraptionSource whose hasInfiniteSource() is true. In that case the take handler refunds what was already removed and returns that one provider, and the check handler returns true. That is the creative-contraption short-circuit. An ordinary source jar does not take that branch, so the sum is unchanged. The injection target did not fully decode. The captured locals are the loop's provider and the running multimap, which only exist inside the loop.
ars_technica-1.21.1-2.7.6.jar has ArcaneWrenchEnchantingApparatusRecipeMixin, which injects into EnchantingApparatusRecipe and returns an ItemStack. It does not name source.
ars_additions-1.21.1-21.3.0.jar has WixieCharmMixin.useOnBlock, which names EnchantingApparatusBlock and does not name SourceUtil or the nomana key. Its EnderSourceJarTile extends SourceJarTile, so an ender jar is in the same list. getSource calls EnderSourceData.getSource, discards that result, and returns SourceJarTile.getSource(). The apparatus counts that jar's own tank, still created at 10,000 by the superclass, not the shared ender pool. AddonSourceUtil.takeSource is a different method, and it is not what the apparatus calls.
Mixin configs in all 464 top-level jars were searched for SourceUtil, EnchantingApparatus, hasSourceNearby and takeSourceMultiple. Two configs match: the Creo mixin and the Technica mixin above. The other ars_* jars in the pack (ars_elemental, ars_elemancy, ars_controle, ars_ocultas, ars_polymorphia, ars_unification) do not name SourceUtil or the apparatus source methods. Nested sauce and nuggets mixin configs name turret, relay and jar client mixins, not SourceUtil.
Sources: Ars Nouveau 5.13.1 SourceUtil.takeSourceMultiple, takeSourceMultipleWithParticles, takeSource, takeSourceWithParticles. Also read, and not stamped on this page: ars_creo-1.21.1-5.4.0.jar SourceUtilMixin; ars_technica-1.21.1-2.7.6.jar ArcaneWrenchEnchantingApparatusRecipeMixin; ars_additions-1.21.1-21.3.0.jar EnderSourceJarTile, WixieCharmMixin, AddonSourceUtil.
What one full jar can pay
A source jar holds 10,000. Inside ars_nouveau-1.21.1-5.13.1.jar:
ars_nouveau:enchantment, 96 recipes.EnchantmentRecipeextendsEnchantingApparatusRecipe. Costs run from 2000 to 9000. The highest is 9000:silk_touch,fortune_3,infinity, and eight others.ars_nouveau:enchanting_apparatus, 82 recipes. 81 cost 0. One costs 1000:warp_scroll_copy.ars_nouveau:imbuementcosts from 100 to 2000, on the imbuement chamber, which is a different block. That block does not load the apparatus string.
Every enchantment and apparatus recipe the mod ships fits in one full jar.
The book tells you to "Place a jar of Source nearby" (ars_nouveau.page1.how_to_enchant). The source-jar page says "Devices will use source from nearby jars." Neither page says one jar, and neither page says a sum. The quest chapter overrides/config/ftbquests/quests/lang/en_us/chapters/ars_nouveau.snbt, quest 3D862A3D3F83CA26, says the apparatus requires source and describes the core and the pedestals. It does not mention jars, a cap, or 10,000.
The pack adds apparatus recipes in kubejs, under kubejs/server_scripts/, and the same numbers are in the client overrides. No datapack in the server pack sets sourceCost.
mods/minecraft/recipes.js, the sculk shrieker,sourceCost1000.modpack/atm_alloys.js, the unobtainium-allthemodium alloy ingot, 10000. One full jar pays it, or any jars in range that add to 10000. A jar at 9999 fails this recipe unless another jar covers the 1.modpack/atm_alloys.js, the unobtainium-allthemodium alloy block, 90000. Nine full jars pay it, or more partial ones, all inside the range. This is the recipe a single jar cannot pay.modpack/atm_star_creative.jssetssourceCostto 0, so it never asks.
Sources: recipe types inside ars_nouveau-1.21.1-5.13.1.jar; the book lines named above; quest 3D862A3D3F83CA26; All the Mods 10 8.2 kubejs/server_scripts/ and the client overrides of the same files.