您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Process multiline paste on specific input by sending one line + Enter event per line
// ==UserScript== // @name WeirdHost minecraft 명령어 여러줄 실행하기 // @namespace http://tampermonkey.net/ // @version 1.2 // @description Process multiline paste on specific input by sending one line + Enter event per line // @author explainpark // @match https://*.weirdhost.xyz/* // @icon https://www.google.com/s2/favicons?sz=64&domain=weirdhost.xyz // @license mit // @grant none // ==/UserScript== (function() { 'use strict'; const inputSelector = 'input[aria-label="Console command input."]'; // 랜덤 8자리 16진수 문자열 생성 함수 function tokenHex(size) { let result = ""; const hexChars = "0123456789abcdef"; for (let i = 0; i < size * 2; i++) { const rand = Math.floor(Math.random() * 16); result += hexChars[rand]; } return result; } // /setname 명령어를 여러 줄 커맨드로 변환 function createCommands(username, humanname) { const command = ` /team add {teamname} /team join {teamname} {username} /team modify {teamname} prefix "{humanname}(" /team modify {teamname} suffix ")" `.trim(); const teamname = tokenHex(4); // 8자리 16진수 const output = command .replace(/{teamname}/g, teamname) .replace(/{username}/g, username) .replace(/{humanname}/g, humanname); return output; } // Enter 키 이벤트를 강제로 발생시키는 함수 function triggerEnter(el) { const event = new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: 'Enter', code: 'Enter', which: 13, keyCode: 13 }); el.dispatchEvent(event); } // multiline paste 처리 부분 (기존) window.addEventListener('paste', async (e) => { const target = e.target; if (!target.matches(inputSelector)) return; let pasteText = (e.clipboardData || window.clipboardData).getData('text'); if (!pasteText) return; const lines = pasteText.split(/\r?\n/); if (lines.length <= 1) return; // 한 줄이면 그냥 둠 e.preventDefault(); for (const line of lines) { target.value = line; target.dispatchEvent(new Event('input', { bubbles: true })); triggerEnter(target); await new Promise(resolve => setTimeout(resolve, 100)); } }, true); // keydown 이벤트 감지하여 /setname 처리 window.addEventListener('keydown', async (e) => { const target = e.target; if (!target.matches(inputSelector)) return; // Enter 키만 처리 if (e.key !== 'Enter') return; const val = target.value.trim(); // /setname username humanname 형식 검사 // 예: /setname user123 JohnDoe const match = val.match(/^\/setname\s+(\S+)\s+(.+)$/); if (!match) return; e.preventDefault(); // 기본 엔터 동작 막기 const username = match[1]; const humanname = match[2]; // 명령어 여러 줄 생성 const commandsStr = createCommands(username, humanname); // 줄 단위로 나누기 const commands = commandsStr.split('\n').map(cmd => cmd.trim()).filter(cmd => cmd.length > 0); // 순차적으로 입력 + Enter 실행 for (const cmd of commands) { target.value = cmd; target.dispatchEvent(new Event('input', { bubbles: true })); triggerEnter(target); await new Promise(resolve => setTimeout(resolve, 100)); } // 입력란 초기화 (필요하면) target.value = ''; target.dispatchEvent(new Event('input', { bubbles: true })); }, true); })();