Получение зачарованной книжки

Версия Minecraft
1.12.2
API
Forge
183
8
16
Есть айтемстак с предметом. Нужно если на нём есть зачарования, дать игроку книжку с этим зачарованием. Вопрос: как это сделать?
 
183
8
16
сделал так:
Java:
if (heldItem.isItemEnchanted()) {
    ItemStack enchantedBook = new ItemStack(Items.ENCHANTED_BOOK);
    enchantedBook.setTagCompound(heldItem.getTagCompound().getCompoundTag("ench").copy());
    player.inventory.addItemStackToInventory(enchantedBook);
}
в итоге была зачарованная на удачу 3 кирка, стала зачарованная ни на что книга.2021-02-14_20.01.10.png
 
183
8
16
Сделав так:
Java:
if (heldItem.isItemEnchanted()) {
    ItemStack enchantedBook = new ItemStack(Items.ENCHANTED_BOOK);
    assert heldItem.getTagCompound() != null;
    enchantedBook.setTagCompound(new NBTTagCompound());
    assert enchantedBook.getTagCompound() != null;
    enchantedBook.getTagCompound().getCompoundTag("StoredEnchantments").merge(heldItem.getTagCompound().getCompoundTag("ench").copy());
    player.inventory.addItemStackToInventory(enchantedBook);
}
я не получил нулл, но получил не менее интересный результат:
2021-02-15_19.04.47.png

как вообще может отображаться 0 тегов?
 
Последнее редактирование:
183
8
16
Кому нужно, решил так (решение очень простое, но рабочее):
Java:
if (heldItem.isItemEnchanted()) {
    ItemStack enchantedBook = new ItemStack(Items.ENCHANTED_BOOK);
    EnchantmentHelper.setEnchantments(EnchantmentHelper.getEnchantments(heldItem), enchantedBook);
    player.inventory.addItemStackToInventory(enchantedBook);
}
Огромная благодарность @tox1cozZ за все его подсказки и ответы!
 
183
8
16
Что правильным ответом отметить? Моё сообщение или это:
Слушай, если не получается, сделай по-простому: достань из стака все зачарования и с помощью метода addEnchantment в книге добавь их.
 
Сверху