您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes downloading minecraft mods on curseforge less painful.
// ==UserScript== // @name Forge QOL // @namespace http://tampermonkey.net/ // @version 1 // @description Makes downloading minecraft mods on curseforge less painful. // @author angxxl // @match https://www.curseforge.com/* // @match https://legacy.curseforge.com/* // @grant none // ==/UserScript== function updateCurseForgeLinks() { document.querySelectorAll('a[href*="https://www.curseforge.com/minecraft/mc-mods/"][href*="/files/"], a[href*="https://legacy.curseforge.com/minecraft/mc-mods/"][href*="/files/"]').forEach(link => { const urlParts = link.href.split('/'); const lastPart = urlParts[urlParts.length - 1]; if (!isNaN(lastPart)) { // Check if the last part is a number link.href = link.href.replace('/files/', '/download/'); } }); } function redirectCurseForgePage() { const urlParts = window.location.href.split('/'); const lastPart = urlParts[urlParts.length - 1]; if ((window.location.href.includes("https://www.curseforge.com/minecraft/mc-mods/") || window.location.href.includes("https://legacy.curseforge.com/minecraft/mc-mods/")) && window.location.href.includes("/files/") && !isNaN(lastPart)) { window.location.href = window.location.href.replace('/files/', '/download/'); } } function updateAndRedirectLegacyCurseForgeLinks() { document.querySelectorAll('a[href*="https://legacy.curseforge.com/"]').forEach(link => { link.href = link.href.replace('https://legacy.curseforge.com/', 'https://www.curseforge.com/'); }); if (window.location.href.includes("https://legacy.curseforge.com/")) { window.location.href = window.location.href.replace('https://legacy.curseforge.com/', 'https://www.curseforge.com/'); } } function speedUpTime(factor) { const originalSetInterval = window.setInterval; const originalSetTimeout = window.setTimeout; window.setInterval = function(callback, delay, ...args) { return originalSetInterval(callback, delay / factor, ...args); }; window.setTimeout = function(callback, delay, ...args) { return originalSetTimeout(callback, delay / factor, ...args); }; } function checkPagePattern() { const urlPattern = /^https:\/\/www\.curseforge\.com\/[^\/]+\/[^\/]+\/[^\/]+\/download\/[^\/]+$/; return urlPattern.test(window.location.href); } if (checkPagePattern()) { speedUpTime(40); } updateCurseForgeLinks(); redirectCurseForgePage(); updateAndRedirectLegacyCurseForgeLinks(); setInterval(() => { updateCurseForgeLinks(); redirectCurseForgePage(); updateAndRedirectLegacyCurseForgeLinks(); }, 700);