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

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

Discussion in 'Разработка плагинов для новичков' started by oleg57zls, Aug 23, 2016.

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

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

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

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

    Trophy Points:
    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]
    Code:
        @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 Старожил Пользователь

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

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

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

    Dereku Старожил

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

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

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

    Dereku Старожил

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

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

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

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

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

Share This Page