Вопрос Как изменить выпадающие из блока предметы?

MarinCod

Пользователь
Сообщения
81
Допустим, есть у меня блок земли. Мне нужно, чтобы из него выпадал предмет, причем с некоторыми nbt тегами.
Как это можно сделать?
 
Решение
Можете пожалуйста подсказать что такое NamespacedKey и PersistentDataType?
Да, конечно.
Java:
ItemStack stack = new ItemStack(Material.GRASS);
ItemMeta meta = stack.getItemMeta();
PersistentDataContainer dataContainer = meta.getPersistentDataContainer();
dataContainer.set(new NamespacedKey(plugin, "exampleKey"), PersistentDataType.DOUBLE, 5.0);
stack.setItemMeta(meta);
Создаёшь ItemStack, добавляешь нужные тебе теги и вызываешь . Всё это делаешь в ивенте , либо же в .
 
Последнее редактирование:
Я помню занимался таким.
1. Отлавливаешь BlockBreakEvent
2. Сверяешь блок
3. Если нужный то отменяешь ивент
4. Устанавливаешь блок воздуха в локации этого блока
5. Дропаешь что нужно
Костыли, но я делал именно так, но лучше попробуй через BlockDropItemEvent.getItems().set();
 
Так, получается мне нужно это:
( key, <T,Z> type, Z value)

Можете пожалуйста подсказать что такое NamespacedKey и PersistentDataType?
Мне бы хватило одного примера применения
 
Можете пожалуйста подсказать что такое NamespacedKey и PersistentDataType?
Да, конечно.
Java:
ItemStack stack = new ItemStack(Material.GRASS);
ItemMeta meta = stack.getItemMeta();
PersistentDataContainer dataContainer = meta.getPersistentDataContainer();
dataContainer.set(new NamespacedKey(plugin, "exampleKey"), PersistentDataType.DOUBLE, 5.0);
stack.setItemMeta(meta);
 
Насколько понимаю, NamespacedKey - это сам тег, например health
dataContainer.set(new NamespacedKey(this, "a"), PersistentDataType.DOUBLE, 5.0);

В "a", по-видимому, нужно прописать как раз таки health. Далее идет тип и значение. В данном случае - 5.0 и тип double.

Всё так?
 
Создаёшь ItemStack, добавляешь нужные тебе теги и вызываешь . Всё это делаешь в ивенте , либо же в .
Можно как то через ExecutableItems реализовать?
 
Назад
Сверху Снизу