Вопрос Проверка на уникальный блок

Версия Minecraft
1.16.X

ConderFix

Разработчик
Пользователь
Сообщения
62
Всем привет. У кого какие есть идеи, чтобы проверить что блок уникальный? Например, навесить на него NBT, NamespacedKey и т.д. Пытался навесить на блок (материал: DIAMOND_BLOCK) NamespacedKey - не получилось, NBT тоже не получилось. Была идея создать отдельную мапу, где я буду хранить Location, String и сохранять в мапу в отдельный файл, но этот метод мне не подходит. Может есть какая-то отдельная библиотека, чтобы весить NamespacedKey на блок? не подходит, так как через него невозможно проверить блок на уникальность, когда блок ставят раздатчиком.
 
?
Объединено

У класса Block нету метода getPersistentDataContainer
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Последнее редактирование:
Может все-таки использовать либу CustomBlockData и просто отдельно обрабатывать момент, когда блок ставится раздатчиком?
слушать BlockDispenseEvent, определить, куда именно блок будет установлен, и уже после этого повесить нужные данные

Вот пример:
Java:
@EventHandler             
public void onDispense(BlockDispenseEvent e) {
    if (!(e.getBlock().getState() instanceof Dispenser disp)) return;
    Block target = e.getBlock().getRelative(((Dispenser) e.getBlock().getState()).getFacing());

    Bukkit.getScheduler().runTask(plugin, () -> markBlock(target));
}

private void markBlock(Block b) {
    try (CustomBlockData data = new CustomBlockData(b, plugin)) {
        if (data.has("dasdsad", PersistentDataType.BYTE)) {
            return;
        }

        data.set("dasdsad", PersistentDataType.BYTE, (byte) 1);
    }
}
 
Последнее редактирование:
У кого какие есть идеи, чтобы проверить что блок уникальный? Например, навесить на него NBT
offtop
Держу в курсе, на блок даже физически не возможно навесить NBT

NBT можно навесить только на некоторые TileEntity, которые есть только у некоторых блоков (таких как сундуки)

Да и тили хранятся схожим образом как в мапе, где ключ = XYZ

Была идея создать отдельную мапу, где я буду хранить Location, String и сохранять в мапу в отдельный файл
offtop
У тилей это так - для каждого чанка своя мапа, чтение-запись кастомных данных в нбт чанка - вообще не проблема

Не знаю, что ведроспиготы курили, когда сделали класс Location ... Так что в качестве ключей использовать его не разумно
Когда в подавляющем большинстве случаев достаточно BlockPos{int x, y, z}
Я так вообще с помощью математики практически везде отказался от этого, и вместо 3-х int (XYZ) использую 1 long
 
Последнее редактирование:
Назад
Сверху Снизу