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:
parent
1f7e94e5db
commit
f8ea6c01f4
22 changed files with 39 additions and 52032 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue