add \n and >256 length support for chat

This commit is contained in:
ChomeNS 2022-12-05 14:55:54 +07:00
parent e0d29d0d9e
commit 9986dd31ed
4 changed files with 33 additions and 17 deletions

View file

@ -16,7 +16,10 @@ module.exports = {
version: '1.18.2' version: '1.18.2'
}, },
console: true, console: true,
useChat: false, chat: {
useChat: false,
messageLength: 100
},
core: { core: {
layers: 3, layers: 3,
refillInterval: 1000 * 60, refillInterval: 1000 * 60,

View file

@ -5,21 +5,33 @@
const { containsIllegalCharacters } = require('../util/containsIllegalCharacters') const { containsIllegalCharacters } = require('../util/containsIllegalCharacters')
const { chatPacketListener, parsePlayerMessages } = require('../util/chat') const { chatPacketListener, parsePlayerMessages } = require('../util/chat')
function inject (bot) { function inject (bot, dcclient, config) {
bot.chatQueue = [] bot.chatQueue = []
const _chatQueue = []
const chatQueue = setInterval(function () { const _chatQueueInterval = setInterval(() => {
if (bot.chatQueue[0] || bot.chatQueue[0] === '') { if (bot.chatQueue.length !== 0) {
try { if (containsIllegalCharacters(bot.chatQueue[0])) {
if (containsIllegalCharacters(bot.chatQueue[0])) {
bot.chatQueue.shift()
return
};
bot.write('chat', { message: bot.chatQueue[0] })
bot.chatQueue.shift() bot.chatQueue.shift()
} catch (e) { return
bot.console.error(e) };
} // totallynotskidded™ from mineflayer/lib/plugins/chat.js
bot.chatQueue[0].split('\n').forEach((subMessage) => {
if (!subMessage) return
let smallMsg
for (let i = 0; i < subMessage.length; i += config.chat.messageLength) {
smallMsg = subMessage.substring(i, i + config.chat.messageLength)
_chatQueue.push(smallMsg)
}
})
bot.chatQueue.shift()
}
}, 0)
const chatQueueInterval = setInterval(function () {
if (_chatQueue.length !== 0) {
bot.write('chat', { message: _chatQueue[0] })
_chatQueue.shift()
} }
}, 450) }, 450)
@ -28,7 +40,8 @@ function inject (bot) {
} }
bot.on('end', () => { bot.on('end', () => {
clearInterval(chatQueue) clearInterval(chatQueueInterval)
clearInterval(_chatQueueInterval)
}) })
const ChatMessage = require('prismarine-chat')(bot.version) const ChatMessage = require('prismarine-chat')(bot.version)

View file

@ -14,7 +14,7 @@ function inject (bot, dcclient, config) {
}, },
run (command) { run (command) {
try { try {
if (config.useChat && if (config.chat.useChat &&
command.startsWith('minecraft:tellraw @a ') && command.startsWith('minecraft:tellraw @a ') &&
!command.includes('Console') && !command.includes('Console') &&
!command.includes('Discord') !command.includes('Discord')

View file

@ -5,7 +5,7 @@
* @return {boolean} allowed * @return {boolean} allowed
*/ */
function isAllowedCharacter (character) { function isAllowedCharacter (character) {
return character !== '\xa7' && character >= ' ' && character !== '\x7f' return character !== '\xa7' && character !== '\x7f'
} }
/** /**
* mc chat check if contains illegal chars. * mc chat check if contains illegal chars.
@ -16,4 +16,4 @@ function containsIllegalCharacters (string) {
for (let i = 0; i < string.length; i++) if (!isAllowedCharacter(string[i])) return true for (let i = 0; i < string.length; i++) if (!isAllowedCharacter(string[i])) return true
} }
module.exports = { containsIllegalCharacters } module.exports = { containsIllegalCharacters, isAllowedCharacter }