#adding tags if an item has a tag array loop

8 messages · Page 1 of 1 (latest)

merry elm
#

so im trying to add the tag kubejs:weapons/metal to any item that has kubejs:weapons and tfc:metal_item/${metal} but its not working correctly it seems.

ServerEvents.tags('item', event => {
    global.weapon_metals = [
        'bismuth_bronze', 
        'black_bronze', 
        'bronze', 
        'copper', 
        'wrought_iron', 
        'steel', 
        'black_steel', 
        'blue_steel', 
        'red_steel',
    ]
    for (let metal of global.weapon_metals) {
        event.add("tfc:metal_item/"+metal, new RegExp(`^knightsofterrafirma:${metal}_.*`))
    }

    for (let [weapon, DieAmount, AttackDie] of global.attack_die_weapons) {
        event.add("kubejs:weapons", weapon)
    }

    let weapons_tags = Ingredient.of("#kubejs:weapons").itemIds.map(id => Item.of(id))

    for (let weapon of weapons_tags) {
        for (let metal of global.weapon_metals) {
            if(weapon.hasTag(`tfc:metal_item/${metal}`))
            event.add("kubejs:weapons/metal", weapon)
        }
        
    }
})
pine pewterBOT
#

Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!

merry elm
#

kubejs:weapons is working

merry elm
#

also tried with a differnt format and it still doesnt work. also the console.log is not outputting it seems.

const allWeapons = Ingredient.of("#kubejs:weapons").itemIds.map(id => Item.of(id))
    allWeapons.forEach(weapon => {
        console.log(weapon)
        global.weapon_metals.forEach(metals => {
            console.log(metals)
            if(weapon.hasTag(`tfc:metal_item/${metals}`))
                event.add("kubejs:weapons/metal", weapon)
        })
    })
#

nvm it is logging

#

it seems to break on reload!?!?!?

#

it seems to only log if the reload fails but it still doesnt work lol

merry elm
#

well i got it working with this huge block of code.

const weaponIdsRaw = Ingredient.of("#kubejs:weapons").itemIds
    let weaponIds = []
    for (let i = 0; i < weaponIdsRaw.length; i++) {
        weaponIds.push(weaponIdsRaw[i])
    }
    for (let metal of global.weapon_metals) {
        let metalIdsRaw = Ingredient.of(`#tfc:metal_item/${metal}`).itemIds
        let metalIds = []
        for (let i = 0; i < metalIdsRaw.length; i++) {
            metalIds.push(metalIdsRaw[i])
        }
        let intersection = weaponIds.filter(id => metalIds.indexOf(id) !== -1)
        intersection.forEach(id => event.add("kubejs:weapons/metal", id))
        intersection.forEach(id => event.add(`kubejs:weapons/metal/${metal}`, id))
    }