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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    143
    Имя в Minecraft:
    Leymooooooooooo

Share This Page