Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // simple-proxy.js
- var mc = require('minecraft-protocol')
- var states = mc.states
- var options = {
- proxy: {
- port: '25565'
- },
- target: {
- host: 'mc.example.com',
- port: '25565'
- },
- login: {
- username: '',
- password: ''
- },
- version: '1.9'
- }
- var proxyOptions = {
- 'online-mode': false,
- port: options.proxy.port,
- keepAlive: false,
- version: options.version
- }
- var proxy = mc.createServer(proxyOptions)
- proxy.on('login', (client) => {
- var addr = client.socket.remoteAddress
- var endedClient = false
- var endedTargetClient = false
- console.log(`Client connected from ${addr}`)
- client.on('end', () => {
- endedClient = true
- console.log(`Connection closed by ${addr}`)
- if (!endedTargetClient) targetClient.end('End')
- })
- client.on('error', (err) => {
- endedClient = true
- console.log(`Connection error by ${addr}`)
- console.log(err.stack)
- if (!endedTargetClient) targetClient.end('Error')
- })
- var targetOptions = {
- host: options.target.host,
- port: options.target.port,
- username: options.login.username,
- password: options.login.password || false,
- keepAlive: false,
- version: options.version
- }
- var targetClient = mc.createClient(targetOptions)
- client.on('packet', (data, meta) => {
- if(targetClient.state == states.PLAY && meta.state == states.PLAY && !endedTargetClient) targetClient.write(meta.name, data)
- })
- targetClient.on('packet', (data, meta) => {
- if(meta.state == states.PLAY && client.state == states.PLAY && !endedClient) {
- client.write(meta.name, data)
- if (meta.name === 'set_compression') client.compressionThreshold = data.threshold
- }
- })
- targetClient.on('end', () => {
- endedTargetClient = true
- console.log(`Connection closed by server for ${addr}`)
- if(!endedClient) client.end('End')
- })
- targetClient.on('error', (err) => {
- endedTargetClient = true
- console.log(`Connection error by server ${addr}`)
- console.log(err.stack)
- if (!endedClient) client.end('Error')
- })
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement