🏠 Home 

我的世界去除跳转网易提示

去掉网易跳转提示提示


Install this script?
// ==UserScript==
// @name       我的世界去除跳转网易提示
// @namespace  https://github.com/marioplus/minecraft-net-easy-tips-remover
// @version    1.1.0
// @author     marioplus
// @license    GPL-3.0
// @icon       https://www.google.com/s2/favicons?sz=64&domain=minecraft.net
// @match      https://www.minecraft.net/*
// @run-at     document-start
// @description 去掉网易跳转提示提示
// ==/UserScript==
(function () {
'use strict';
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
class ElementCreateListener {
/**
* 初始化元素监听器
* @param mode 监听模式:
*   - 'auto' : 添加首个处理器时自动激活监听
*   - 'manual' : 需手动调用 activate() 启动
*/
constructor(mode = "auto") {
// 观测器实例,用于监听 DOM 树变化
__publicField(this, "_observer");
// 存储选择器与回调的映射关系(Key: CSS 选择器,Value: 处理函数)
__publicField(this, "_handlerMap", /* @__PURE__ */ new Map());
// 当前监听器状态,用于防止重复激活
__publicField(this, "_operationStatus", "idle");
// 运行模式标志(构造时确定,不可变)
__publicField(this, "_listeningMode");
this._listeningMode = mode;
this._observer = new MutationObserver(
(mutationRecords) => this._handleMutations(mutationRecords)
);
}
/**
* 处理 DOM 变动记录的核心逻辑
* @param mutationRecords - MutationObserver 返回的变动记录数组
*/
_handleMutations(mutationRecords) {
for (const record of mutationRecords) {
if (record.type !== "childList" || record.target.nodeType !== Node.ELEMENT_NODE || record.addedNodes.length === 0)
continue;
record.addedNodes.forEach((node) => {
if (node.nodeType !== Node.ELEMENT_NODE || !(node instanceof HTMLElement))
return;
const newElement = node;
this._handlerMap.forEach((handler, selector) => {
if (newElement.matches(selector)) {
this._invokeHandler(handler, newElement, selector);
}
newElement.querySelectorAll(selector).forEach((nestedElement) => {
this._invokeHandler(handler, nestedElement, selector);
});
});
});
}
}
/**
* 安全执行处理器函数
* @param handler - 注册的回调函数
* @param targetElement - 待处理的 HTML 元素(已做类型断言)
* @param selector - 对应的选择器标识
*/
_invokeHandler(handler, targetElement, selector) {
try {
handler(targetElement, selector);
} catch (error) {
console.error(`[ElementCreateListener]  Handler error for "${selector}":`, error);
}
}
//======== 公开接口 ========//
/**
* 注册元素处理器
* @param selector - CSS 选择器
* @param callback - 匹配到元素时执行的回调
* @returns 当前实例(支持链式调用)
*/
addHandler(selector, callback) {
this._handlerMap.set(selector, callback);
if (this._listeningMode === "auto")
this.activate();
return this;
}
/**
* 移除指定选择器的处理器
* @param selectors - 要移除的 CSS 选择器列表
* @returns 当前实例(支持链式调用)
*/
removeHandler(...selectors) {
selectors.forEach((selector) => this._handlerMap.delete(selector));
if (this._handlerMap.size === 0)
this.deactivate();
return this;
}
/**
* 清空所有处理器并停止监听
* @returns 当前实例(支持链式调用)
*/
clearHandlers() {
this._handlerMap.clear();
this.deactivate();
return this;
}
/**
* 启动 DOM 监听(幂等操作)
* @remarks 重复调用不会产生副作用
* @returns 当前实例(支持链式调用)
*/
activate() {
if (this._operationStatus === "idle") {
this._operationStatus = "active";
this._observer.observe(document.documentElement, {
childList: true,
// 监控子节点变化
subtree: true
// 监控所有后代节点
});
}
return this;
}
/**
* 停止 DOM 监听(幂等操作)
* @returns 当前实例(支持链式调用)
*/
deactivate() {
this._operationStatus = "idle";
this._observer.disconnect();
return this;
}
/**
* 延时自动停止监听
* @param timeout - 延迟时间(毫秒)
* @returns 当前实例(支持链式调用)
*/
delayedDeactivate(timeout) {
setTimeout(() => this.deactivate(), timeout);
return this;
}
}
new ElementCreateListener("auto").addHandler(".MC_AEM_Wrapper", (el) => el.style.display = "none").delayedDeactivate(10 * 1e3);
})();