在通过 Node.js 代理 Minecraft 服务器终端时使用除标准输入“继承”以外的任何东西时“高级终端功能不可用”

问题描述 投票:0回答:0

我一直在尝试为 PaperMC 服务器制作包装器以更改对内部事件的处理,但有一个小问题 - 如果我不设置

stdin: 'inherit'
服务器会抛出此错误或类似错误

xxxx-xx-xx xx:xx:xx,xxx Log4j2-AsyncAppenderEventDispatcher-1-Async WARN Advanced terminal features are not available in this environment

这意味着警告和错误的控制台颜色将不起作用(这对于调试 Minecraft 服务器至关重要),以及一些杂项错误,例如命令输入“>”符号。

这是我的包装纸:

const cp = require('child_process'),
    ch = require('chalk'),
    rl = require('readline').createInterface(process.stdin, process.stdout),
    l = (...m) => console.log(ch`[{redBright WRAPPER}] ${m.join('\n')}`);
let server = cp.spawn('java', ['-Xms12G', '-Xmx12G', '-jar', 'server.jar'], { stdio: ['pipe', 'inherit', 'inherit', 'ipc'] });
rl.on('line', input => {
    if (input == '<example>') {
        // ...
    }
    else {
        server.stdin.write(`${input}\n`);
    }
});

我正在运行 JRE 20。 我应该处理什么

stdin
事件来解决这个问题?

node.js console minecraft child-process stdio
© www.soinside.com 2019 - 2024. All rights reserved.