Помогите NBT Tag для блока

oleg57zls

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Blayzer
Здравствуйте, у меня такой вопрос:
Можно ли блоку, при установке вписывать кастомный nbt тег (Как предмету)? Если да, то каким образом это можно сделать? Гуглил, но ничего толкового не нашел.
Мне нужно, чтобы при установке в креативе блоку записывался nbt тег, который я смогу проверить при разрушении этого блока.
 
NbtCompound root = NbtFactory.readBlockState(BLOCK);
if (root.containsKey("asd") {
NbtCompound asd = root.getCompound("asd);
}
root.put("asd", "random text156789");
root.remove("asd");

нужен ProtocolLib
Java:
    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
    public void onPlace(BlockPlaceEvent event) {
        try {
            NbtCompound root = NbtFactory.readBlockState(event.getBlock());
            if (!root.containsKey("mytag")) {
                root.put("mytag", "помоему можно оставить пустым.");
            }
        } catch (Exception e) {}
    }
 
NbtCompound root = NbtFactory.readBlockState(BLOCK);
if (root.containsKey("asd") {
NbtCompound asd = root.getCompound("asd);
}
root.put("asd", "random text156789");
root.remove("asd");

нужен ProtocolLib
Java:
    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
    public void onPlace(BlockPlaceEvent event) {
        try {
            NbtCompound root = NbtFactory.readBlockState(event.getBlock());
            if (!root.containsKey("mytag")) {
                root.put("mytag", "помоему можно оставить пустым.");
            }
        } catch (Exception e) {}
    }
Спасибо, попробую.
NbtCompound root = NbtFactory.readBlockState(BLOCK);
if (root.containsKey("asd") {
NbtCompound asd = root.getCompound("asd);
}
root.put("asd", "random text156789");
root.remove("asd");

нужен ProtocolLib
Java:
    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
    public void onPlace(BlockPlaceEvent event) {
        try {
            NbtCompound root = NbtFactory.readBlockState(event.getBlock());
            if (!root.containsKey("mytag")) {
                root.put("mytag", "помоему можно оставить пустым.");
            }
        } catch (Exception e) {}
    }
В if(!root.containsKey("mytag")){ бьет NPE, он там может быть только в root, хотя IDE не показывает ошибок.
А, понял. Эта реализация работает только с блоками, у которых есть TileEntity. Например с сундуком будет работать, а с рудой нет. Мне нужен функционал со всеми блоками.
 
Спасибо, попробую.

В if(!root.containsKey("mytag")){ бьет NPE, он там может быть только в root, хотя IDE не показывает ошибок.
А, понял. Эта реализация работает только с блоками, у которых есть TileEntity. Например с сундуком будет работать, а с рудой нет. Мне нужен функционал со всеми блоками.
Хм. Потом поищу другую реализацию.
Ну как я понял, только к TileEntity можно ставить нбт.
 
Здравствуйте, у меня такой вопрос:
Можно ли блоку, при установке вписывать кастомный nbt тег (Как предмету)? Если да, то каким образом это можно сделать? Гуглил, но ничего толкового не нашел.
Мне нужно, чтобы при установке в креативе блоку записывался nbt тег, который я смогу проверить при разрушении этого блока.
Если бы такое было возможно, плагины аля CreativeControl писались бы в три метода, один из которых onEnable.
 
Назад
Верх