我设法得到一个Node.js minecraft bot API(称为mineflayer)。当我最后一次制作我的Minecraft bot时(用C ++,我自己),我遇到了when writing in the console, the server messages would mix with whatever I'm writing的问题。我得到的答案似乎有太复杂/不清楚的解决方案所以我放弃了。
现在我希望Node.js解决了这个问题,但显然没有。 Node.js中有一个简单的解决方案吗?我想要的是这个:
但是现在,我正在编写的命令与输出混合(红色是写入输入,绿色是控制台输出,使用GIMP着色):
我正在使用readline
模块:
var readline = require("readline");
var rl = readline.createInterface({
input: process.stdin,
output: null,
});
rl.on('line', function(line) {
var inp = line.trim();
//Bot internal commands start with ~
if(line[0]=='~') {
command(line.substr(1));
}
else {
//use server chat
bot.chat(line);
}
});
答案 0 :(得分:0)
我从一个简单的功能示例开始,只是为了向您展示一种方法:
var
readline = require("readline"),
ansi = require('ansi');
var rl = readline.createInterface({
input: process.stdin,
output: null
});
ansi.clear();
ansi.row(1);
rl.on('line', function(line) {
ansi.row(2);
ansi.clearLine();
ansi.print(line);
ansi.row(1);
ansi.clearLine();
});
库ansi
是我几个月前用ANSI escape codes操纵终端线的简单测试。要使用它,只需在与上面代码相同的文件夹中运行以下命令:
npm install https://github.com/luciopaiva/ansi.git
您可以直接转到my library's repository来查看我的代码。
代码非常简单,我建议您复制它并适应您的需求。
ansi.clear()
只清除整个终端,然后ansi.row(1)
将光标移动到第一行,您可以在那里输入命令。在我的简单示例中,代码将仅打印到第2行,用户在返回返回键之前键入的内容。然后运行上面的代码,看它是否正常工作,并使其适应一种机制,使消息沿着终端的剩余行滚动。