Вопрос Скопировать все данные с блока и перенести их в предмет

KNOVME

Пользователь
Сообщения
11
У меня есть вот такой вот код, если игрок, ломает блок головы, у которого есть тег trophy_block, тогда нужно скопировать все данные с блока, тоесть абсолютно все, названия лор и т.д ,и перенести их в предмет который уже выпадет при ломании, как такое сделать я в душе не чаюD:

Java:
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Block b = event.getBlock();
        BlockState blockState = b.getState();
        if (blockState instanceof Skull) {
            Skull skull = (Skull) blockState;
            PersistentDataContainer container = skull.getPersistentDataContainer();
            if (container.has(new NamespacedKey(plugin, "trophy_block"), PersistentDataType.BYTE)) {
                ItemStack droppedItem = new ItemStack(Material.PLAYER_HEAD);
                
                b.getWorld().dropItemNaturally(b.getLocation(), droppedItem);
            }
        }
    }
}
 
Решение
При загрузке плагина создаешь ItemStack, изменяешь ему имя, лор, метадату и держишь его в памяти как переменную, в нужный момент этот ItemStack клонируешь и выдаешь игроку
Блок не может хранить лор, имя и тому подобное, как вариант храни всю информацию о предмете или сам предмет в памяти плагина и либо накладывай на предмет эту информацию, либо выдавай предмет из памяти, если хранишь ItemStack
 
При загрузке плагина создаешь ItemStack, изменяешь ему имя, лор, метадату и держишь его в памяти как переменную, в нужный момент этот ItemStack клонируешь и выдаешь игроку
 
При загрузке плагина создаешь ItemStack, изменяешь ему имя, лор, метадату и держишь его в памяти как переменную, в нужный момент этот ItemStack клонируешь и выдаешь игроку
да спасибо, сделал класс, где я загрузил ItemStack предмета, и возвращал через класс переменную, и потом мог использовать предмет головы в других своих файлах, задавать мету, а также выдать при ломании блока, спасибо, ты наставил меня на правильную мысль)
 
Назад
Сверху Снизу