// Evento que é chamado quando o jogador clica com o botão direito em um item
ItemEvents.rightClicked(event => {
    let { player, item } = event;
    console.log(`Evento de clique direito detectado por ${player.name.string}.`);

    // Verifica se o item é uma mochila 'sophisticatedbackpacks:backpack'
    if (item.id === 'sophisticatedbackpacks:backpack') {
        console.log('O item clicado é uma mochila.');

        let nbt = item.nbt;

        // Verifica se o NBT existe
        if (nbt) {
            console.log('NBT da mochila:', JSON.stringify(nbt));

            // Verifica se a mochila contém 'renderInfo'
            if (nbt.contains('renderInfo')) {
                console.log('A mochila contém a tag "renderInfo".');
                let renderInfo = nbt.getCompound('renderInfo');

                // Verifica se 'renderInfo' contém 'upgradeItems'
                if (renderInfo.contains('upgradeItems')) {
                    console.log('A tag "renderInfo" contém "upgradeItems".');
                    let upgradeItems = renderInfo.getList('upgradeItems', 10); // 10 é o tipo NBT para compostos
                    console.log(`Número de upgrades na mochila: ${upgradeItems.size()}`);

                    // Itera sobre cada upgrade na mochila
                    for (let i = 0; i < upgradeItems.size(); i++) {
                        console.log(`Verificando upgrade ${i + 1} de ${upgradeItems.size()}.`);
                        let upgradeItem = upgradeItems.getCompound(i);

                        // Verifica se o upgrade é um 'sophisticatedbackpacks:tank_upgrade'
                        let upgradeId = upgradeItem.getString('id');
                        console.log(`ID do upgrade: ${upgradeId}`);

                        if (upgradeId === 'sophisticatedbackpacks:tank_upgrade') {
                            console.log('Upgrade é um "tank_upgrade".');

                            // Verifica se o upgrade possui a tag 'tag' com 'contents'
                            if (upgradeItem.contains('tag') && upgradeItem.getCompound('tag').contains('contents')) {
                                let contents = upgradeItem.getCompound('tag').getCompound('contents');
                                console.log('Conteúdo do tank_upgrade acessado.');

                                // Verifica se 'contents' contém 'Amount' e 'FluidName'
                                if (contents.contains('Amount') && contents.contains('FluidName')) {
                                    let amount = contents.getInt('Amount');
                                    let fluidName = contents.getString('FluidName');

                                    // Envia uma mensagem ao jogador com as informações
                                    player.tell(`O upgrade de tanque da mochila contém ${amount} mB de '${fluidName}'.`);
                                    console.log(`Jogador ${player.name.string} verificou o tank_upgrade: ${amount} mB de '${fluidName}'.`);

                                    // Diminui a quantidade de água em 500 mB
                                    let newAmount = amount - 500;
                                    if (newAmount < 0) newAmount = 0;

                                    // Atualiza o Amount no NBT
                                    contents.putInt('Amount', newAmount);
                                    console.log(`Quantidade de água no tank_upgrade atualizada para ${newAmount} mB.`);

                                    // Atualiza o NBT do upgrade
                                    upgradeItem.getCompound('tag').put('contents', contents);
                                    upgradeItems.set(i, upgradeItem);
                                    renderInfo.put('upgradeItems', upgradeItems);
                                    nbt.put('renderInfo', renderInfo);
                                    item.setNbt(nbt);

                                    // Informa o jogador sobre a nova quantidade
                                    player.tell(`Nova quantidade de água no tank_upgrade: ${newAmount} mB.`);
                                    console.log(`Jogador ${player.name.string} recebeu nova quantidade: ${newAmount} mB de '${fluidName}'.`);
                                } else {
                                    player.tell('O upgrade de tanque não contém informações de fluido.');
                                    console.log('O "contents" do tank_upgrade não contém "Amount" ou "FluidName".');
                                }
                            } else {
                                player.tell('O upgrade de tanque não possui conteúdo de fluido.');
                                console.log('O tank_upgrade não contém "tag" ou "contents".');
                            }
                        } else {
                            console.log('Upgrade não é um "tank_upgrade".');
                        }
                    }
                } else {
                    console.log('A tag "renderInfo" não contém "upgradeItems".');
                    player.tell('A mochila não contém upgrades.');
                }
            } else {
                console.log('A mochila não contém a tag "renderInfo".');
                player.tell('A mochila não possui informações de renderização.');
            }
        } else {
            console.log('A mochila não contém dados NBT.');
            player.tell('A mochila não possui dados adicionais.');
        }
    } else {
        console.log('O item clicado não é uma mochila.');
    }
});
