Получить имя предмета

Версия Minecraft
1.12.2
API
Bukkit

sk9zist :l

Исправился
981
18
157
Как получить локализованное имя предмета? Пример как "Яблоко" или "Гнилая плоть" чтоб вывести русскими буквами как этот предмет показываеться в игре.
Пробовал методы:
Java:
getLocalizedName();
Java:
getDisplayName();

Но оба возвращают null. То есть в строке пишет null, вместо имени предмета.
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
@MaximPixel
приди.

А можно:
1) чтобы небыло знака "_"
2) чтобы было не большими буквами
3) чтобы было на Русском языке.

тоесть мне нужно отображать в чате предмет так, какое у него название при наведени на него
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
Аааа, опять не работаеет!!

Повторю вопрос: Нужно получить русское имя у предмета чтобы было вместо apple или item.Apple вот это "Яблоко" в чате выводилось
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Чо ты хочешь? То что я скинул и выводит отображаемое имя предмета в зависимости от языка.
Ты походу делаешь это на сервере, а у сервера всегда английский язык и тебе выводит на англ.
 

sk9zist :l

Исправился
981
18
157
То что я скинул и выводит отображаемое имя предмета в зависимости от языка.
Спасибо за объяснение, ато я не понял вообще, как оно работает

Ты походу делаешь это на сервере
Я это на bakkit делаю, а там несколько сложновато повторить твой код в коде, а ещё метода getDisplayName() потом нету
 

sk9zist :l

Исправился
981
18
157
А, хоспаде, не привык что тут вопросы по баккиту бывают.
Панимаю
.getItemMeta().getDisplayName
В шапке сказал, что пробовал методы getDisplayName и getLocalozedName()
Но getDisplayName вернет нул, если предмет не был переименован в наковальне
А вот насчёт getLocalizedName я уже задумался, разве он не должен возвращать локализованное название? (Он возвращает нул)
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
Плюнул на это дело, и сделал просто вот так, если надо кому вот:
Java:
public String getNormalName(Material materialIn) {
    if(materialIn == null) return null;
    String s1 = materialIn.toString().replace("_", " ").toLowerCase(), s2 = "";
    s2 = s2 + s1.substring(0, 1).toUpperCase();
    for (int i = 1; i < s1.length(); i++) {
        if (" ".equals(s1.substring(i-1, i)))
            s2 = s2 + s1.substring(i, i+1).toUpperCase();
        else
            s2 = s2 + s1.substring(i, i+1); }
    
    return s2;
}
screenshot.123.jpg
 

sk9zist :l

Исправился
981
18
157
Ага, оно же там на англ и большими буквами, забыл?)

использовать TranslatableComponent вместе с либой Language Utils
TranslateableComponent*
А так, была уже такая идея, читал об этом. Его и без либы можно использовать, просто я не стал в этом разбираться

Уже решил, ответ #15
 
7,099
324
1,510

sk9zist :l

Исправился
981
18
157
Смирился с тем, что имена на англ?
Нет.. Просто у меня на сервере все предметы будут переименованы в свои названия. (Пример "Стальной меч" вместо "Алмазный меч" или diamond sword) Я проверяю что getDisplayName равно нул, и если не равно - то беру его. А если предмет пока не переименован, чтобы небыло совсем страшно - сделал так.
 
Сверху