1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Проверить, было ли изменено имя предмета

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

Статус темы:
Закрыта.
  1. Автор темы
    Best_pr0stk

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

    Баллы:
    78
    Имя в Minecraft:
    Best_pr0stik
    Здравствуйте. Можно ли проверить, было ли изменено имя предмета, допустим, в наковальне?
     
  2. DiamondDen

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

    Баллы:
    76
    Skype:
    danil_20034
    Имя в Minecraft:
    DiamondDen
  3. Автор темы
    Best_pr0stk

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

    Баллы:
    78
    Имя в Minecraft:
    Best_pr0stik
    Код в студию!
     
  4. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Берёшь имя предмета - кладёшь в хешмапу типа <ItemStack, String>. Сравниваешь значения из хешмапы со значениями в инвентаре (или где там). Если имя отличается - название было изменено.
    От него только быдлокод идёт :(
     
  5. Автор темы
    Best_pr0stk

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

    Баллы:
    78
    Имя в Minecraft:
    Best_pr0stik
    Кхм, а если имя одинаковое? Допустим:
    Было: "Алмазная кирка"
    Стало: "Алмазная кирка"
    То тоже будет работать?
     
  6. DiamondDen

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

    Баллы:
    76
    Skype:
    danil_20034
    Имя в Minecraft:
    DiamondDen
    Ок ща
    Код:
            ItemStack item = e.getItem();
            net.minecraft.server.v1_10_R1.ItemStack stack = CraftItemStack.asNMSCopy(item);
            NBTTagCompound tag = stack.getTag();
            boolean name = false;
            if (tag != null)
                name = !tag.getCompound("display").getString("Name").equals("");
            System.out.println(name);
    
    Если у предмета нету имени то пишется false если есть то true
     
    Последнее редактирование: 12 июл 2016
  7. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
     
  8. DiamondDen

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

    Баллы:
    76
    Skype:
    danil_20034
    Имя в Minecraft:
    DiamondDen
  9. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ты по булевой задаёшь булеву. А можно обойтись инвертированием.
     
  10. DiamondDen

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

    Баллы:
    76
    Skype:
    danil_20034
    Имя в Minecraft:
    DiamondDen
    А ой сори просто до этого там было
    Код:
    System.out.println(tag.getCompound("display").getString("Name").equals("") ? "NO" : "YES";)
     
  11. alexandrage

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

    Баллы:
    173
    К чему такие состыли, в ведроапи есть же дисплейнейм. getItemMeta().getDisplayName()
     
  12. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Код:
    bool isNameChanged(ItemStack is)
    {
        return is.hasItemMeta()&&is.getItemMeta().hasDisplayName();
    }
     
  13. Автор темы
    Best_pr0stk

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

    Баллы:
    78
    Имя в Minecraft:
    Best_pr0stik
    Всем спасибо. Закрыто.
     
Статус темы:
Закрыта.

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