LookAtMySuitBot/js/node_modules/minecraft-data/lib/indexes.js

62 lines
2.6 KiB
JavaScript
Raw Normal View History

2023-12-24 20:08:39 -05:00
const indexer = require('./indexer.js')
module.exports = function (mcData) {
if (mcData.blocks?.length) {
if (!('minStateId' in mcData.blocks[0]) || !('defaultState' in mcData.blocks[0])) {
for (const block of mcData.blocks) {
block.minStateId = block.id << 4
block.maxStateId = block.minStateId + 15
block.defaultState = block.minStateId
}
}
}
return {
biomesById: indexer.buildIndexFromArray(mcData.biomes, 'id'),
biomesByName: indexer.buildIndexFromArray(mcData.biomes, 'name'),
blocksById: indexer.buildIndexFromArray(mcData.blocks, 'id'),
blocksByName: indexer.buildIndexFromArray(mcData.blocks, 'name'),
blocksByStateId: indexer.buildIndexFromArrayWithRanges(mcData.blocks, 'minStateId', 'maxStateId'),
enchantmentsById: indexer.buildIndexFromArray(mcData.enchantments, 'id'),
enchantmentsByName: indexer.buildIndexFromArray(mcData.enchantments, 'name'),
entitiesByName: indexer.buildIndexFromArray(mcData.entities, 'name'),
entitiesById: indexer.buildIndexFromArray(mcData.entities, 'id'),
mobsById: mcData.entities === undefined
? undefined
: indexer.buildIndexFromArray(mcData.entities.filter(e => e.type === 'mob'), 'id'),
objectsById: mcData.entities === undefined
? undefined
: indexer.buildIndexFromArray(mcData.entities.filter(e => e.type === 'object'), 'id'),
instrumentsById: indexer.buildIndexFromArray(mcData.instruments, 'id'),
itemsById: indexer.buildIndexFromArray(mcData.items, 'id'),
itemsByName: indexer.buildIndexFromArray(mcData.items, 'name'),
foodsById: indexer.buildIndexFromArray(mcData.foods, 'id'),
foodsByName: indexer.buildIndexFromArray(mcData.foods, 'name'),
windowsById: indexer.buildIndexFromArray(mcData.windows, 'id'),
windowsByName: indexer.buildIndexFromArray(mcData.windows, 'name'),
effectsById: indexer.buildIndexFromArray(mcData.effects, 'id'),
effectsByName: indexer.buildIndexFromArray(mcData.effects, 'name'),
particlesById: indexer.buildIndexFromArray(mcData.particles, 'id'),
particlesByName: indexer.buildIndexFromArray(mcData.particles, 'name'),
blockLootByName: indexer.buildIndexFromArray(mcData.blockLoot, 'block'),
entityLootByName: indexer.buildIndexFromArray(mcData.entityLoot, 'entity'),
mapIconsById: indexer.buildIndexFromArray(mcData.mapIcons, 'id'),
mapIconsByName: indexer.buildIndexFromArray(mcData.mapIcons, 'name'),
attributesByName: indexer.buildIndexFromArray(mcData.attributes, 'name'),
attributesByResource: indexer.buildIndexFromArray(mcData.attributes, 'resource')
}
}