Use minecraft-data for protocol data (#126)

* use minecraft-data protocol data

* use minecraft-data for extra data

* Update .npmignore

* update skin data

* fix example

* remove .gitattr

* fix mcdata skin import, disable install script
This commit is contained in:
extremeheat 2021-09-25 16:57:29 -04:00 committed by GitHub
commit f8ea6c01f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 39 additions and 52032 deletions

View file

@ -15,7 +15,7 @@ function createClient (options) {
client.ping().then(data => {
const advert = advertisement.fromServerName(data)
console.log(`Connecting to server ${advert.motd} (${advert.name}), version ${advert.version}`)
client.version = options.version ?? advert.version
client.options.version = options.version ?? advert.version
connect(client)
}, client)
}

View file

@ -1,15 +1,10 @@
const fs = require('fs')
const JWT = require('jsonwebtoken')
const DataProvider = require('../../data/provider')
const { nextUUID } = require('../datatypes/util')
const { PUBLIC_KEY } = require('./constants')
const algorithm = 'ES384'
module.exports = (client, server, options) => {
const dp = DataProvider(options.protocolVersion)
const skinTex = fs.readFileSync(dp.getPath('steveSkin.bin')).toString('base64')
const skinGeom = fs.readFileSync(dp.getPath('steveGeometry.json')).toString('base64')
const skinData = JSON.parse(fs.readFileSync(dp.getPath('steve.json'), 'utf-8'))
const skinData = require('minecraft-data')('bedrock_' + options.version).defaultSkin
client.createClientChain = (mojangKey, offline) => {
const privateKey = client.ecdhKeyPair.privateKey
@ -60,8 +55,6 @@ module.exports = (client, server, options) => {
SelfSignedId: nextUUID(),
ServerAddress: `${options.host}:${options.port}`,
SkinData: skinTex,
SkinGeometryData: skinGeom,
ThirdPartyName: client.profile.name,
ThirdPartyNameOnly: false,

View file

@ -1,15 +1,11 @@
const mcData = require('minecraft-data')
// Minimum supported version (< will be kicked)
const MIN_VERSION = '1.16.201'
// Currently supported verson
// Currently supported verson. Note, clients with newer versions can still connect as long as data is in minecraft-data
const CURRENT_VERSION = '1.17.10'
const Versions = {
'1.17.10': 448,
'1.17.0': 440,
'1.16.220': 431,
'1.16.210': 428,
'1.16.201': 422
}
const Versions = Object.fromEntries(mcData.versions.bedrock.filter(e => e.releaseType === 'release').map(e => [e.minecraftVersion, e.version]))
const defaultOptions = {
// https://minecraft.gamepedia.com/Protocol_version#Bedrock_Edition_2

View file

@ -27,10 +27,13 @@ class Parser extends FullPacketParser {
// Compiles the ProtoDef schema at runtime
function createProtocol (version) {
const protocol = require(join(__dirname, `../../data/${version}/protocol.json`)).types
// Try and load from .js if available
try { require(`../../data/${version}/size.js`); return getProtocol(version) } catch {}
const protocol = require('minecraft-data')('bedrock_' + version).protocol
const compiler = new ProtoDefCompiler()
compiler.addTypesToCompile(protocol)
compiler.addTypes(require(join(__dirname, '../datatypes/compiler-minecraft')))
compiler.addTypesToCompile(protocol.types)
compiler.addTypes(require('../datatypes/compiler-minecraft'))
compiler.addTypes(require('prismarine-nbt/compiler-zigzag'))
const compiledProto = compiler.compileProtoDefSync()
@ -54,17 +57,18 @@ function getProtocol (version) {
}
function createSerializer (version) {
const proto = getProtocol(version)
const proto = createProtocol(version)
return new Serializer(proto, 'mcpe_packet')
}
function createDeserializer (version) {
const proto = getProtocol(version)
const proto = createProtocol(version)
return new Parser(proto, 'mcpe_packet')
}
module.exports = {
createDeserializer: createDeserializer,
createSerializer: createSerializer,
createProtocol: createProtocol
createDeserializer,
createSerializer,
createProtocol,
getProtocol
}