54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
|
import { createInterface } from 'readline'
|
||
|
import { createClient } from 'minecraft-protocol'
|
||
|
|
||
|
import { $ } from './color'
|
||
|
import { attachForge } from './forge'
|
||
|
|
||
|
let client = createClient({
|
||
|
version: '1.12.2',
|
||
|
host: '192.168.2.5',
|
||
|
port: 25577,
|
||
|
username: process.argv[2] || 'Mr_jtb',
|
||
|
skipValidation: true
|
||
|
})
|
||
|
|
||
|
attachForge(client)
|
||
|
|
||
|
client.on('chat', (packet) => {
|
||
|
// Listen for chat messages and echo them back.
|
||
|
var jsonMsg = JSON.parse(packet.message);
|
||
|
console.log($(jsonMsg))
|
||
|
})
|
||
|
|
||
|
client.on('state', (newState, oldState) => {
|
||
|
console.log('Client Change State', oldState, 'to', newState)
|
||
|
let targetServer = process.argv[3]
|
||
|
if (newState == "play" && targetServer) {
|
||
|
setTimeout(() => {
|
||
|
client.write('chat', {
|
||
|
message: '/server ' + targetServer
|
||
|
})
|
||
|
}, 3000)
|
||
|
}
|
||
|
})
|
||
|
|
||
|
const rl = createInterface({
|
||
|
input: process.stdin,
|
||
|
output: process.stdout,
|
||
|
terminal: false
|
||
|
})
|
||
|
|
||
|
rl.on('line', function(line) {
|
||
|
if (line === '') {
|
||
|
return
|
||
|
} else if (line === '/quit') {
|
||
|
console.info('Disconnected')
|
||
|
client.end("")
|
||
|
return
|
||
|
} else if (line === '/end') {
|
||
|
console.info('Forcibly ended client')
|
||
|
process.exit(0)
|
||
|
}
|
||
|
client.write('chat', { message: line })
|
||
|
})
|