Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем oleg57zls, 23 авг 2016.

  1. Автор темы
    oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Здравствуйте, у меня такой вопрос:
    Можно ли блоку, при установке вписывать кастомный nbt тег (Как предмету)? Если да, то каким образом это можно сделать? Гуглил, но ничего толкового не нашел.
    Мне нужно, чтобы при установке в креативе блоку записывался nbt тег, который я смогу проверить при разрушении этого блока.
     
  2. Хостинг MineCraft
    <
  3. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    NbtCompound root = NbtFactory.readBlockState(BLOCK);
    if (root.containsKey("asd") {
    NbtCompound asd = root.getCompound("asd);
    }
    root.put("asd", "random text156789");
    root.remove("asd");

    нужен ProtocolLib[DOUBLEPOST=1471951307,1471951108][/DOUBLEPOST]
    Код:
        @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) {}
        }
     
  4. Автор темы
    oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Спасибо, попробую.[DOUBLEPOST=1471993417][/DOUBLEPOST]
    В if(!root.containsKey("mytag")){ бьет NPE, он там может быть только в root, хотя IDE не показывает ошибок.[DOUBLEPOST=1471993829][/DOUBLEPOST]А, понял. Эта реализация работает только с блоками, у которых есть TileEntity. Например с сундуком будет работать, а с рудой нет. Мне нужен функционал со всеми блоками.
     
  5. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Хм. Потом поищу другую реализацию.[DOUBLEPOST=1472007605,1472005299][/DOUBLEPOST]Ну как я понял, только к TileEntity можно ставить нбт.
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Если бы такое было возможно, плагины аля CreativeControl писались бы в три метода, один из которых onEnable.
     
  7. Автор темы
    oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Ну хорошо, спасибо.[DOUBLEPOST=1472029051,1472028758][/DOUBLEPOST]А что быстрее использовать, sql базу или yml файл?
     
  8. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Риторический вопрос.
     
  9. GoodCoder

    GoodCoder Активный участник Пользователь

    Баллы:
    76
    Нет. Единственное свойство у простых блоков - metadata, но кол-во значений ограничего 16. NBT есть только у ItemStack, TileEntity (механизмы) и Entity (мобы, игроки).
     
  10. Автор темы
    oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Я в плане производительности.
     

Поделиться этой страницей