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

Помогите Как получить название "Булыжник" из материала

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Jenka20091
    Есть ли метод который из Material.COBBLESTONE делает "Булыжник"?
     
  2. alexandrage

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

    Баллы:
    173
    Тебе нужен stack.getType().getTranslationKey() и TranslatableComponent для перевода клиентом.
     
    Последнее редактирование: 4 май 2021
  3. Автор темы
    adodvstudios

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

    Баллы:
    76
    Имя в Minecraft:
    Jenka20091
    Как пользоваться NamespacedKey?
     
  4. Автор темы
    adodvstudios

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

    Баллы:
    76
    Имя в Minecraft:
    Jenka20091
    Screenshot_64.png
    Версия 1.12.2
     
  5. alexandrage

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

    Баллы:
    173
    Ну тогда только обновляться. Не получится автоперевод на язык клиента.
     
  6. deadanykey

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

    Баллы:
    96
    String material_name = material.name().toLowerCase();
    String name = LocaleLanguage.a().a((material.isBlock() ? "block" : "item") + ".minecraft." + material_name);
    if (name.startsWith((material.isBlock() ? "block" : "item") + ".minecraft.")) {
    name = "n/a";
    }

    Справедливо для Paper 1.16.3 и 1.16.5
     
  7. Автор темы
    adodvstudios

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

    Баллы:
    76
    Имя в Minecraft:
    Jenka20091
    1.12.2
     
  8. alexandrage

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

    Баллы:
    173
    А нет все же вот так надо stack.getType().getTranslationKey() это возвращает ключ транслейта.
     
  9. Автор темы
    adodvstudios

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

    Баллы:
    76
    Имя в Minecraft:
    Jenka20091
  10. deadanykey

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

    Баллы:
    96
    Я на 1.12.2 не проверял. Не исключаю, что взлетит. Но это не точно.
     
  11. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Получить перевод ты просто так не сможешь. Однако, можно получить ключ для перевода через нмс и отправить его клиенту используя Chat Component API. Совсем немного подправил код, который был в том посте, но по аналогии с баннером тебе нужно решить другие цветные предметы и блоки.
     
  12. alexandrage

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

    Баллы:
    173
    Вот тестовый рабочий пример. Как созреешь для обновления в нормальную версию. Будет работать везде где можно передавать компонент.
    Код:
        @EventHandler
        public void on(PlayerInteractEvent e) {
            ItemStack stack = new ItemStack(Material.COBBLESTONE);
            TranslatableComponent tell = new TranslatableComponent();
            tell.setTranslate(stack.getType().getTranslationKey());
            e.getPlayer().sendMessage(tell);
        }
     
  13. alexandrage

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

    Баллы:
    173
    Транслейт компонента в этой версии не было, так что только завидовать молча.
     
  14. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Раз уже все равно на Paper - может через adventure?
    Был, лол.
     
  15. alexandrage

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

    Баллы:
    173
    Уже был да. Ну ладно.
     
  16. MurlikMurlik

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

    Баллы:
    96
    Как вариант, использовать эту либу https://github.com/BoomEaro/LangHelper или принцип по которой она работает, а именно использовать языковый файл с нужным переводом от клиента на сервере, и просто получать нужную строку по нужному ключу. Таким образом можно везде использовать перевод предмета.
     

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