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

Помогите Отправить в чат название предмета

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

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

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

    Баллы:
    76
    Команда выдает предмет и в чате пишет "Вам выдан 1 IRON_SWORD".
    Можно ли сделать, чтобы плагин отправлял не имя материала, а код слова, которое клиент переведет в его языковой файле.
    Не хочется название каждого предмета в конфиг записывать. Подумал, что как-то можно отправлять какие-то данные, или что-то такое
     
  2. Хостинг MineCraft
    <
  3. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    .replace("IRON_SWORD", "Железный меч");[DOUBLEPOST=1470331953,1470331618][/DOUBLEPOST]или
     
  4. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Используя JSON, можно отправить "translate":"имя_объекта", "minecraft.iron_sword" или "item.iron_sword", или нечто похожее, по крайней мере имя для перевода вам придётся искать самим или подождать. Minecraft на клиенте тогда переведёт его сам.
     
  5. Автор темы
    chief

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

    Баллы:
    76
    Предметов есть больше сотни. Я мучаюсь с конфига[DOUBLEPOST=1470332485,1470332207][/DOUBLEPOST]
    В этом случае все равно придется писать много строк в конфиг но это уже гораздо лучше. Спасибо

    Наверное, я пожалею, что взялся за программирование :cute:
     
  6. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Проверил. "translate":"item.swordIron.name", берётся из lang файлов ресурспака или самого minecraft'а. Можно использовать любое имя из тех, что там есть. Чтобы получить имя магией NMS, можно воспользоваться методом getName(), после добавить ".name" от net.minecraft.Item.[DOUBLEPOST=1470332903][/DOUBLEPOST]
    Код:
    String getTranslatableName(ItemStack is)
    {
        net.minecraft.server.ItemStack r = CraftItemStack.asNMSCopy(is);
        return r.getItem().getName()+".name";
    }
    
    Верно для 1.10, возможно на более ранних версиях так же работает.
     
  7. Автор темы
    chief

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

    Баллы:
    76
    Можете отправить весь код? Принцип понимаю но повторить без полного кода не смогу[DOUBLEPOST=1470333521,1470333274][/DOUBLEPOST]Я не понимаю, что это такое "net.minecraft.server.ItemStack"
    Я с ума схожу. Блин...
     
  8. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Собственно код был написан в окошке ответа... Я знаю, что он будет работать, потому и отправил.
    "net.minecraft.server.ItemStack" -- NMS'ный ItemStack. Можно и в одну строчку, но так будет ещё непонятнее...
    Код:
    String getTranslatableName(ItemStack is)
    {
        return CraftItemStack.asNMSCopy(is).getItem().getName()+".name";
    }
    ...
    Player p = ...
    ...
    p.sendRawMessage("{\"translate\":\""+getTranslatableName(p.getInventory().getItemInMainHand())+"\"}");
    
     
  9. Автор темы
    chief

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

    Баллы:
    76
    Понял и сделал. Я вам очень благодарен[DOUBLEPOST=1470334674,1470334635][/DOUBLEPOST]ненавижу майнкрафт
    Код:
    tile.stone.stone.name=Stone
    tile.stone.granite.name=Granite
    
     
  10. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo

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