Помогите Возможно ли отправить текст с локализацией.

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
Допустим у меня есть предмет меча.
И у этого предмета нету названия, я хочу отправить игрока строчку с именем этого предмета как на обычном предмете и желательно чтобы если у игрока был англ то ему отпровлялся англ текст а если русский то русский.
Также и с завариваниями, в обычном BukkitAPI мы оперируем значениями по типу ARROW_DAMAGE но у клиента это название может отличатся и тд.
 
Как я понял тут тоже все в ручную указывать нужно(Все переводы), либо я не правильно понял как им пользоваться.
Просто я видел как человек при помощи командных блоков выводил локализованную надпись о входе игрока. Тоесть должен быть какойто способ отправить игроку данные а клиент сам локализует их как ему нужно.
 
Вручную только в ресурспак вписать, если текст не из ванильного списка.
Какраз таки из ванильного, мне нужно просто достать все данные о предмете и вывести из кудато так как будто игрок смотрит на предмет. На этом предмете может быть имя или может и не быть также и с зачарованиями.
Как это можно сделать?
 
Какраз таки из ванильного, мне нужно просто достать все данные о предмете и вывести из кудато так как будто игрок смотрит на предмет. На этом предмете может быть имя или может и не быть также и с зачарованиями.
Как это можно сделать?
Ну тогда тебе ресурспак не нужен, просто ключ отправить в транслейт компаненте. У стака есть гетер на этот ключ getTranslationKey()
 
Ну тогда тебе ресурспак не нужен, просто ключ отправить в транслейт компаненте.
А где взять этот ключ в предмете или зачаровании? и как Правильно отправить TranslatableComponent?
Я пытался так но отправило просто block.minecraft.iron_ore
sender.sendMessage(new TranslatableComponent("block.minecraft.iron_ore").getTranslate());
 
А где взять этот ключ в предмете или зачаровании? и как Правильно отправить TranslatableComponent?
Я пытался так но отправило просто block.minecraft.iron_ore
sender.sendMessage(new TranslatableComponent("block.minecraft.iron_ore").getTranslate());
Отправило так, потому что getTranslate не нужен. getTranslate тебе и возвращает ключ который ты указал.
https://docs.phoenix616.dev/bungee-...hat/TranslatableComponent.html#getTranslate--
 
Ну тогда тебе ресурспак не нужен, просто ключ отправить в транслейт компаненте. У стака есть гетер на этот ключ getTranslationKey()
На версии 1 18 1 Spigot ни у ItemStack ни у Material Такиго метода не вижу
 
Ключ материала раньше получили через Material.getKey(), сейчас он вроде устарел, но пользоваться можно.
 
Ну может потому, что это papermc апи?

Я нашел другой способ как можно провернуть подобное
PHP:
new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(ItemJson).create()))
Вроде как нормально работает но у меня какието проблемы с получением Json от предмета.
На GitHub я нашел класс который конвертирует item в Json https://gist.github.com/DevSrSouza/aa2f39fb2299dfe72b49b52fa46d9a73
Вроде бы он нормально работает но при попытке
PHP:
BaseComponent[] baseComponents = new ComponentBuilder("предмет")
        .event(
        new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(JsonItemStack.toJson(item)).create())).create();
e.getPlayer().sendMessage(baseComponents);
Мне выводит просто воздух
upload_2022-1-28_15-20-38.png
На скрине также выдно Json который он мне дает.
Вот вопрос теперь в следующем, как правильно сделать HoverEvent.Action.SHOW_ITEM?
 
Я нашел другой способ как можно провернуть подобное
PHP:
new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(ItemJson).create()))
Вроде как нормально работает но у меня какието проблемы с получением Json от предмета.
На GitHub я нашел класс который конвертирует item в Json https://gist.github.com/DevSrSouza/aa2f39fb2299dfe72b49b52fa46d9a73
Вроде бы он нормально работает но при попытке
PHP:
BaseComponent[] baseComponents = new ComponentBuilder("предмет")
        .event(
        new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(JsonItemStack.toJson(item)).create())).create();
e.getPlayer().sendMessage(baseComponents);
Мне выводит просто воздух
Посмотреть вложение 61674
На скрине также выдно Json который он мне дает.
Вот вопрос теперь в следующем, как правильно сделать HoverEvent.Action.SHOW_ITEM?
Вечно вы все по еврейски пытаетесь делать :D
e.getPlayer().sendMessage(Component.translatable(stack.getTranslationKey()).hoverEvent(stack));
98ad8cd9d6.jpg
 
Чего вы так боитесь использовать papermc вместо spigot? Там это все одной строчкой решается и без ваших костылей на nms с рефлексией.
Adventure api охрененная вещь.
 
Чего вы так боитесь использовать papermc вместо spigot? Там это все одной строчкой решается и без ваших костылей на nms с рефлексией.
Adventure api охрененная вещь.
Для публичных плагинов не катит использовать апи пейпера.
На спигот такие плагины выкладывать нельзя.
Правда недавно у пейпера появился адекватный раздел ресурсов, наконец-то можно туда публиковать
 
На спигот такие плагины выкладывать нельзя
Видел пару плагинов, которые предупреждают, что некоторые фичи доступны только с бумаги.

Не вижу смысла ограничиваться спиготом, когда бумага так удобна популярна.
 
Назад
Верх