// ==UserScript== // @name MCJS 111s 卡死急救器 (极简版) // @namespace https://scriptcat.org/ // @version 3.2 // @description 移除所有底层干扰,专治高版本加载极慢、卡黑屏、Connecting 超时,提供一键清空缓存功能 // @author You // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @run-at document-start // ==/UserScript== (function () { 'use strict'; // 提醒:高版本卡加载,90% 是浏览器本地数据库(IndexedDB)因为旧存档膨胀导致崩溃。 // 请点击面板上的“清理本地存档缓存”按钮,很多时候能瞬间解决 111s 的卡死! function createUI() { if (document.getElementById('mc-rescue')) return; const panel = document.createElement('div'); panel.id = 'mc-rescue'; panel.style.cssText = ` position: fixed; bottom: 20px; left: 20px; width: 280px; background: rgba(10, 15, 25, 0.95); backdrop-filter: blur(10px); border: 2px solid #ff3366; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.8); z-index: 2147483647; color: #e0e6ed; font-family: "Segoe UI", sans-serif; font-size: 13px; display: flex; flex-direction: column; overflow: hidden; transition: opacity 0.3s; `; panel.innerHTML = `
🚑 MCJS 加载急救器
如果卡在 Connecting... 很久:
1. 请果断按下 Esc 键,或点击游戏内的 Cancel Task,退回主菜单。
2. 点击下方红色按钮清理缓存。
3. 再次尝试进入。
注意:清理会删除单机存档,但不会影响你连服务器。
`; document.body.appendChild(panel); // 拖动 const header = panel.querySelector('.header'); let isDragging = false, startX, startY, initialX, initialY; header.addEventListener('mousedown', (e) => { isDragging = true; startX = e.clientX; startY = e.clientY; const rect = panel.getBoundingClientRect(); initialX = rect.left; initialY = rect.top; panel.style.bottom = 'auto'; panel.style.left = initialX + 'px'; panel.style.top = initialY + 'px'; }); document.addEventListener('mousemove', (e) => { if (!isDragging) return; panel.style.left = `${initialX + e.clientX - startX}px`; panel.style.top = `${initialY + e.clientY - startY}px`; }); document.addEventListener('mouseup', () => isDragging = false); // 隐藏面板 panel.querySelector('#hide-ui-btn').onclick = () => { panel.style.opacity = '0'; panel.style.pointerEvents = 'none'; // 10秒后变半透明显示,免得彻底找不到了 setTimeout(() => { panel.style.opacity = '0.2'; panel.style.pointerEvents = 'auto'; }, 10000); }; // 清理 IndexedDB(极其重要) panel.querySelector('#clear-db-btn').onclick = async () => { if (!confirm("确定要清理本地游戏缓存吗?这会清除所有本地单机存档,并重置加载状态!")) return; try { // 清理 IndexedDB if (window.indexedDB && window.indexedDB.databases) { const dbs = await window.indexedDB.databases(); for (let db of dbs) { if (db.name) window.indexedDB.deleteDatabase(db.name); } } // 清理 localStorage 和 sessionStorage 中的非设置项 const clearStorage = (storage) => { for (let i = storage.length - 1; i >= 0; i--) { const key = storage.key(i); // 避开脚本自身的存储 if (key && !key.startsWith('mc_')) { storage.removeItem(key); } } }; clearStorage(localStorage); clearStorage(sessionStorage); // 强制刷新并清除 Service Worker 缓存 (如果有的话) if ('serviceWorker' in navigator) { const registrations = await navigator.serviceWorker.getRegistrations(); for (let registration of registrations) { await registration.unregister(); } } if (window.caches) { const cacheNames = await caches.keys(); for (let name of cacheNames) { await caches.delete(name); } } alert("✅ 所有本地缓存已清空!页面将重新加载。请重新选择版本进入,加载速度应该会大幅提升。"); window.location.reload(); } catch (e) { alert("清理失败,请尝试在浏览器设置中手动清理此网站的缓存。\n" + e.message); } }; } // 启动逻辑 function init() { const checkTimer = setInterval(() => { if (document.querySelector('canvas')) { createUI(); clearInterval(checkTimer); } }, 1000); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();