ENGLISH
⚙️ What it does
By default, Refined Storage 2.x aborts any autocrafting calculation that takes longer than 5 seconds and displays the following error:
“This request took too long to calculate”
Despite the wording, this cap is a pure time limit, not a subcomponent limit. There is no subcomponent-count check anywhere in the calculator. Applied Energistics 2 (AE2) has no such cap, which is why deep recipe trees plan smoothly in AE2 but fail in Refined Storage.
This mod replaces that hardcoded constant with two configurable values.
❓ Why two separate values?
The two code paths calling the calculator affect game performance differently:
-
Recipe Previews: These run on Refined Storage’s dedicated thread pool. The server thread never waits for them, so a generous timeout is completely harmless to server performance.
👉 Default: 30 seconds.
-
Starting a Craft & Automation (Interfaces / Exporters): These call the calculator synchronously on the main server thread. For the entire duration of the calculation, the server is frozen for every player. An excessively long timeout can trigger the 180-second server watchdog and crash the server.
👉 Default: 10 seconds (hard-capped at 30 seconds).
The mod dynamically detects the calling thread and applies the appropriate limit.
🛠️ Configuration
The configuration file is automatically generated upon first startup:
config/rsautocrafttimeout-common.toml
(On a dedicated server, it is located in the server's root folder. In singleplayer, look in .minecraft/config/. This is a common config, meaning the server's file overrides client settings. Restart the server/game to apply changes.)
# Recipe preview and max-amount calculation (RS thread pool).
# The server thread never waits for these: no risk of tripping the watchdog.
# Default: 30000 | Allowed range: 1000 - 600000
previewCalculationTimeoutMs = 30000
# The "Start" click, plus Interfaces and Exporters in autocraft mode (server thread).
# THE SERVER IS FROZEN for this entire duration. Raise with care.
# Default: 10000 | Allowed range: 1000 - 30000
serverThreadCalculationTimeoutMs = 10000
-
The preview itself fails to appear: Increase
previewCalculationTimeoutMs. This is the safe option.⚠️ Note: RS's thread pool only has 4 threads with a queue size of 2. The longer a heavy calculation holds a thread, the more previews from other players will be rejected. 60,000 ms (1 min) is reasonable; 600,000 ms (10 min) will impede other players.
-
The preview appears, but clicking "Start" fails: Increase
serverThreadCalculationTimeoutMs. Keep in mind that every extra second equals an extra second of a frozen server. An Exporter set to autocraft will restart the calculation on every tick if resources are missing, causing repeating lag spikes.
💡 Tip: If a recipe still fails after tweaking these values, it is likely too deep rather than too slow. Flattening the recipe structure is a better solution: pre-craft intermediate components or convert deep crafting steps into Processing Patterns.
📌 Requirements
-
Minecraft: 1.21.1
-
Mod Loader: NeoForge
-
Dependency: Refined Storage 2.0 or newer (Required — the mixin targets an RS core class)
-
Environment: Server-side only. Clients do not need to install it, and the server will not show up as incompatible to players without the mod.
FRANÇAIS
⚙️ Ce que fait ce mod
Par défaut, Refined Storage 2.x annule tout calcul d'autocraft qui dépasse 5 secondes et affiche le message :
« This request took too long to calculate »
Malgré cette formulation, ce plafond est une limite de temps pure, et non une limite du nombre de sous-composants (aucune vérification sur le nombre d'éléments n'existe dans le calculateur). Applied Energistics 2 (AE2) n'a pas ce plafond, ce qui explique pourquoi les arbres de recettes très profonds fonctionnent sur AE2 mais échouent sur Refined Storage.
Ce mod remplace cette constante fixe par deux valeurs configurables.
❓ Pourquoi deux valeurs distinctes ?
Les deux chemins de code qui appellent le calculateur n'impactent pas le jeu de la même manière :
-
Prévisualisations de recettes : Elles tournent sur le pool de threads dédié de Refined Storage. Le thread du serveur ne les attend jamais, donc un délai généreux est totalement sans danger pour les performances globales.
👉 Par défaut : 30 secondes.
-
Lancement d'un craft & Automatisation (Interfaces / Exporters) : Ces actions appellent le calculateur de manière synchrone sur le thread serveur. Pendant toute la durée du calcul, le serveur est totalement gelé pour tous les joueurs. Un délai trop long risque d'activer le watchdog d'inactivité (180 secondes) et de faire crasher le serveur.
👉 Par défaut : 10 secondes (plafonné à 30 secondes).
Le mod détecte le thread appelant et applique automatiquement la limite adaptée.
🛠️ Configuration
Le fichier est généré au premier lancement du jeu : config/rsautocrafttimeout-common.toml
(Sur un serveur, il se trouve dans le dossier root du serveur. En solo, dans .minecraft/config/. Il s'agit d'une configuration globale : sur un serveur, seul le fichier du serveur fait foi. Redémarrez le jeu/serveur pour appliquer les changements.)
# Prévisualisation de recette et calcul du montant maximum (pool de threads RS).
# Le thread serveur ne les attend jamais : aucun risque d'accrocher le watchdog.
# Valeur par défaut : 30000 | Plage autorisée : 1000 - 600000
previewCalculationTimeoutMs = 30000
# Le clic sur « Start », ainsi que les Interfaces et Exporters en autocraft (thread serveur).
# LE SERVEUR EST GELÉ pendant toute cette durée. À augmenter avec précaution.
# Valeur par défaut : 10000 | Plage autorisée : 1000 - 30000
serverThreadCalculationTimeoutMs = 10000
🔍 Lequel devez-vous augmenter ?
-
L'aperçu du craft ne s'affiche pas : Augmentez
previewCalculationTimeoutMs. C'est le réglage sûr.⚠️ Note : Le pool de RS ne compte que 4 threads avec une file d'attente de 2. Plus un calcul lourd monopolise un thread, plus les requêtes des autres joueurs seront rejetées. 60 000 ms (1 min) est une valeur raisonnable ; 600 000 ms (10 min) risque de bloquer les autres joueurs.
-
L'aperçu s'affiche, mais le bouton « Start » échoue : Augmentez
serverThreadCalculationTimeoutMs. Attention : chaque seconde ajoutée est une seconde de gel complet du serveur. Si un Exporter en autocraft relance le calcul à chaque tick alors qu'il manque des ressources, le gel se répètera en boucle.
💡 Conseil : Si une recette échoue encore après ces ajustements, c'est qu'elle est probablement trop profonde plutôt que trop lente. Il vaut mieux la simplifier : craftifiez les intermédiaires à l'avance ou déportez les étapes complexes dans des Processing Patterns.
📌 Prérequis & Compatibilité
-
Minecraft : 1.21.1
-
Modloader : NeoForge
-
Dépendance : Refined Storage 2.0+ (Obligatoire — le mixin cible une classe spécifique de RS)
-
Côté installation : Côté Serveur uniquement. Les clients n'en ont pas besoin et le serveur n'apparaîtra pas comme incompatible pour les joueurs ne possédant pas le mod.

