mirror of
https://github.com/barkeser2002/node-minecraft-data.git
synced 2026-09-25 10:46:18 +03:00
142 lines
6.7 KiB
JavaScript
142 lines
6.7 KiB
JavaScript
var mcDataToNode=require("./lib/loader");
|
|
var indexer=require("./lib/indexer.js");
|
|
var protocolVersions=require('./minecraft-data/data/common/protocolVersions');
|
|
var versionsByMinecraftVersion=indexer.buildIndexFromArray(protocolVersions,"minecraftVersion");
|
|
var preNettyVersionsByProtocolVersion=indexer.buildIndexFromArrayNonUnique(protocolVersions.filter(function(e){return !e.usesNetty}),"version");
|
|
var postNettyVersionsByProtocolVersion=indexer.buildIndexFromArrayNonUnique(protocolVersions.filter(function(e){return e.usesNetty}),"version");
|
|
|
|
var cache={}; // prevent reindexing when requiring multiple time the same version
|
|
|
|
module.exports = function(mcVersion,preNetty)
|
|
{
|
|
preNetty=preNetty || false;
|
|
var majorVersion=toMajor(mcVersion,preNetty);
|
|
if(majorVersion==null)
|
|
return null;
|
|
if(cache[majorVersion])
|
|
return cache[majorVersion];
|
|
var mcData=data[majorVersion];
|
|
if(mcData==null)
|
|
return null;
|
|
var nmcData=mcDataToNode(mcData);
|
|
cache[majorVersion]=nmcData;
|
|
return nmcData;
|
|
};
|
|
|
|
function toMajor(mcVersion,preNetty)
|
|
{
|
|
if(data[mcVersion])
|
|
return mcVersion;
|
|
if(versionsByMinecraftVersion[mcVersion])
|
|
return versionsByMinecraftVersion[mcVersion].majorVersion;
|
|
if(preNetty && preNettyVersionsByProtocolVersion[mcVersion])
|
|
return toMajor(preNettyVersionsByProtocolVersion[mcVersion][0].minecraftVersion);
|
|
if(!preNetty && postNettyVersionsByProtocolVersion[mcVersion])
|
|
return toMajor(postNettyVersionsByProtocolVersion[mcVersion][0].minecraftVersion);
|
|
}
|
|
|
|
module.exports.versions=protocolVersions;
|
|
module.exports.versionsByMinecraftVersion=versionsByMinecraftVersion;
|
|
module.exports.preNettyVersionsByProtocolVersion=preNettyVersionsByProtocolVersion;
|
|
module.exports.postNettyVersionsByProtocolVersion=postNettyVersionsByProtocolVersion;
|
|
|
|
var schemas={
|
|
biomes: require('./minecraft-data/schemas/biomes_schema'),
|
|
blocks:require('./minecraft-data/schemas/blocks_schema'),
|
|
effects: require('./minecraft-data/schemas/effects_schema'),
|
|
entities: require('./minecraft-data/schemas/entities_schema'),
|
|
instruments: require('./minecraft-data/schemas/instruments_schema'),
|
|
items: require('./minecraft-data/schemas/items_schema'),
|
|
materials: require('./minecraft-data/schemas/materials_schema'),
|
|
protocol: require('./minecraft-data/schemas/protocol_schema'),
|
|
protocolVersions: require('./minecraft-data/schemas/protocolVersions_schema'),
|
|
recipes: require('./minecraft-data/schemas/recipes_schema'),
|
|
version: require('./minecraft-data/schemas/version_schema'),
|
|
windows: require('./minecraft-data/schemas/windows_schema')
|
|
};
|
|
module.exports.schemas=schemas;
|
|
|
|
var data={
|
|
"0.30c":{
|
|
protocol: require('./minecraft-data/data/0.30c/protocol'),
|
|
version: require('./minecraft-data/data/0.30c/version')
|
|
},
|
|
"1.7":{
|
|
blocks:require('./minecraft-data/data/1.7/blocks'),
|
|
biomes: require('./minecraft-data/data/1.7/biomes'),
|
|
effects: require('./minecraft-data/data/1.7/effects'),
|
|
items: require('./minecraft-data/data/1.7/items'),
|
|
recipes: require('./minecraft-data/data/1.8/recipes'), // TODO: 1.7 recipes
|
|
instruments: require('./minecraft-data/data/1.7/instruments'),
|
|
materials: require('./minecraft-data/data/1.7/materials'),
|
|
entities: require('./minecraft-data/data/1.7/entities'),
|
|
protocol: require('./minecraft-data/data/1.7/protocol'),
|
|
windows: require('./minecraft-data/data/1.7/windows'),
|
|
version: require('./minecraft-data/data/1.7/version')
|
|
},
|
|
"1.8":{
|
|
blocks:require('./minecraft-data/data/1.8/blocks'),
|
|
biomes: require('./minecraft-data/data/1.8/biomes'),
|
|
effects: require('./minecraft-data/data/1.8/effects'),
|
|
items: require('./minecraft-data/data/1.8/items'),
|
|
recipes: require('./minecraft-data/data/1.8/recipes'),
|
|
instruments: require('./minecraft-data/data/1.8/instruments'),
|
|
materials: require('./minecraft-data/data/1.8/materials'),
|
|
entities: require('./minecraft-data/data/1.8/entities'),
|
|
protocol: require('./minecraft-data/data/1.8/protocol'),
|
|
windows: require('./minecraft-data/data/1.8/windows'),
|
|
version: require('./minecraft-data/data/1.8/version')
|
|
},
|
|
"15w40b":{
|
|
blocks:require('./minecraft-data/data/1.9/blocks'),
|
|
biomes: require('./minecraft-data/data/1.9/biomes'),
|
|
effects: require('./minecraft-data/data/1.9/effects'),
|
|
items: require('./minecraft-data/data/1.9/items'),
|
|
recipes: require('./minecraft-data/data/1.9/recipes'),
|
|
instruments: require('./minecraft-data/data/1.9/instruments'),
|
|
materials: require('./minecraft-data/data/1.9/materials'),
|
|
entities: require('./minecraft-data/data/1.9/entities'),
|
|
protocol: require('./minecraft-data/data/15w40b/protocol'),
|
|
windows: require('./minecraft-data/data/1.9/windows'),
|
|
version: require('./minecraft-data/data/15w40b/version')
|
|
},
|
|
"1.9":{
|
|
blocks:require('./minecraft-data/data/1.9/blocks'),
|
|
biomes: require('./minecraft-data/data/1.9/biomes'),
|
|
effects: require('./minecraft-data/data/1.9/effects'),
|
|
items: require('./minecraft-data/data/1.9/items'),
|
|
recipes: require('./minecraft-data/data/1.9/recipes'),
|
|
instruments: require('./minecraft-data/data/1.9/instruments'),
|
|
materials: require('./minecraft-data/data/1.9/materials'),
|
|
entities: require('./minecraft-data/data/1.9/entities'),
|
|
protocol: require('./minecraft-data/data/1.9/protocol'),
|
|
windows: require('./minecraft-data/data/1.9/windows'),
|
|
version: require('./minecraft-data/data/1.9/version')
|
|
},
|
|
"1.9.1-pre2":{
|
|
blocks:require('./minecraft-data/data/1.9/blocks'),
|
|
biomes: require('./minecraft-data/data/1.9/biomes'),
|
|
effects: require('./minecraft-data/data/1.9/effects'),
|
|
items: require('./minecraft-data/data/1.9/items'),
|
|
recipes: require('./minecraft-data/data/1.9/recipes'),
|
|
instruments: require('./minecraft-data/data/1.9/instruments'),
|
|
materials: require('./minecraft-data/data/1.9/materials'),
|
|
entities: require('./minecraft-data/data/1.9/entities'),
|
|
protocol: require('./minecraft-data/data/1.9.1-pre2/protocol'),
|
|
windows: require('./minecraft-data/data/1.9/windows'),
|
|
version: require('./minecraft-data/data/1.9.1-pre2/version')
|
|
},
|
|
"1.9.2":{
|
|
blocks:require('./minecraft-data/data/1.9/blocks'),
|
|
biomes: require('./minecraft-data/data/1.9/biomes'),
|
|
effects: require('./minecraft-data/data/1.9/effects'),
|
|
items: require('./minecraft-data/data/1.9/items'),
|
|
recipes: require('./minecraft-data/data/1.9/recipes'),
|
|
instruments: require('./minecraft-data/data/1.9/instruments'),
|
|
materials: require('./minecraft-data/data/1.9/materials'),
|
|
entities: require('./minecraft-data/data/1.9/entities'),
|
|
protocol: require('./minecraft-data/data/1.9.2/protocol'),
|
|
windows: require('./minecraft-data/data/1.9/windows'),
|
|
version: require('./minecraft-data/data/1.9.2/version')
|
|
}
|
|
}; |