Infinite Craft Userscript May 2026

autoLearnBtn.disabled = false; autoLearnBtn.textContent = '⚡ Auto-learn new';

// Hook into the game's internal events if possible (monkeypatch) let originalAddElement = null; if (window.addElement) originalAddElement = window.addElement; window.addElement = function(element, ...args) if (element && element.name) return originalAddElement.apply(this, [element, ...args]); ; infinite craft userscript

// Alternative: observe DOM changes for new elements const observer = new MutationObserver(() => const elements = document.querySelectorAll('.element'); elements.forEach(el => const name = el.textContent?.trim(); if (name && !discovered.has(name)) discovered.add(name); ); updateRecipeBook(); ); observer.observe(document.body, childList: true, subtree: true ); autoLearnBtn

let html = '<table style="width:100%; border-collapse: collapse;">'; for (let [result, [left, right]] of recipes.entries()) html += ` <tr class="ic-recipe-row" data-left="$escapeHtml(left)" data-right="$escapeHtml(right)" style="border-bottom:1px solid #333; cursor:pointer;"> <td style="padding:6px 4px;">$escapeHtml(left)</td> <td style="padding:6px 4px;">+</td> <td style="padding:6px 4px;">$escapeHtml(right)</td> <td style="padding:6px 4px; color:#4caf50;">→ $escapeHtml(result)</td> </tr> `; html += '</table>'; recipeListDiv.innerHTML = html; autoLearnBtn.disabled = false

// Manual recipe addition from user combining function addRecipeFromCombine(left, right, result) if (left && right && result) recipes.set(result, [left, right]); updateRecipeBook();

×
×

Cart