Startup script:
onEvent('item.registry', event => {
event.create("dust_zinc").displayName("Zinc Grit").texture("kubejs:item/metal_dust_zinc")
})
Server script:
// Shamelessly copied from stackoverflow
function getMatches(string, regex, index) {
index || (index = 1)
let matches = []
let match
while (match = regex.exec(string)) {
matches.push(match[index])
}
return matches
}
onEvent("recipes", event => {
Ingredient.of("#create:crushed_ores").stacks.forEach(itemStack => {
console.info("ITEMSTACK: " + itemStack)
itemStack.getTags().forEach(tag => {
console.info("TAG: " + tag)
let matches = getMatches(tag, /^create:crushed_ores\/(.+)$/g)
if (matches.length) {
console.info("MATCHES: " + matches[0])
if (Item.of(`#forge:dusts/${matches[0]}`).isEmpty()) {
console.info(`ERROR: #forge:dusts/${matches[0]} does not exist or is empty`)
return
}
event.recipes.immersiveengineeringCrusher(Item.of(`#forge:dusts/${matches[0]}`), Ingredient.of(`#create:crushed_ores/${matches[0]}`))
event.recipes.immersiveengineeringArcFurnace([Item.of(`#forge:ingots/${matches[0]}`)], Ingredient.of(`#create:crushed_ores/${matches[0]}`))
}
})
})
})
onEvent("item.tags", event => {
event.get("forge:dusts").add("kubejs:dust_zinc")
event.get("forge:dusts/zinc").add("kubejs:dust_zinc")
event.get("create:crushed_ores").getObjectIds().forEach(objectId => {
console.info("OBJECTID: " + objectId)
let matches = getMatches(objectId, /^create:crushed_(.+)_ore$/g)
if (matches.length) {
console.info("MATCHES: " + matches[0])
event.get(`create:crushed_ores/${matches[0]}`).add(`create:crushed_${matches[0]}_ore`)
}
})
})
The getTags() function seems to return nothing on world load. Why come?