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

  • Автор темы Автор темы chief
  • Дата начала Дата начала

chief

Активный участник
Пользователь
Баллы
76
Команда выдает предмет и в чате пишет "Вам выдан 1 IRON_SWORD".
Можно ли сделать, чтобы плагин отправлял не имя материала, а код слова, которое клиент переведет в его языковой файле.
Не хочется название каждого предмета в конфиг записывать. Подумал, что как-то можно отправлять какие-то данные, или что-то такое
 
Команда выдает предмет и в чате пишет "Вам выдан 1 IRON_SWORD".
Можно ли сделать, чтобы плагин отправлял не имя материала, а код слова, которое клиент переведет в его языковой файле.
Не хочется название каждого предмета в конфиг записывать. Подумал, что как-то можно отправлять какие-то данные, или что-то такое
.replace("IRON_SWORD", "Железный меч");
или
 
Команда выдает предмет и в чате пишет "Вам выдан 1 IRON_SWORD".
Можно ли сделать, чтобы плагин отправлял не имя материала, а код слова, которое клиент переведет в его языковой файле.
Не хочется название каждого предмета в конфиг записывать. Подумал, что как-то можно отправлять какие-то данные, или что-то такое
Используя JSON, можно отправить "translate":"имя_объекта", "minecraft.iron_sword" или "item.iron_sword", или нечто похожее, по крайней мере имя для перевода вам придётся искать самим или подождать. Minecraft на клиенте тогда переведёт его сам.
 
.replace("IRON_SWORD", "Железный меч");
Предметов есть больше сотни. Я мучаюсь с конфига
Используя JSON, можно отправить "translate":"имя_объекта", "minecraft.iron_sword" или "item.iron_sword", или нечто похожее, по крайней мере имя для перевода вам придётся искать самим или подождать. Minecraft на клиенте тогда переведёт его сам.
В этом случае все равно придется писать много строк в конфиг но это уже гораздо лучше. Спасибо

Наверное, я пожалею, что взялся за программирование :cute:
 
Предметов есть больше сотни. Я мучаюсь с конфига

В этом случае все равно придется писать много строк в конфиг но это уже гораздо лучше. Спасибо

Наверное, я пожалею, что взялся за программирование :cute:
Проверил. "translate":"item.swordIron.name", берётся из lang файлов ресурспака или самого minecraft'а. Можно использовать любое имя из тех, что там есть. Чтобы получить имя магией NMS, можно воспользоваться методом getName(), после добавить ".name" от net.minecraft.Item.
Java:
String getTranslatableName(ItemStack is)
{
    net.minecraft.server.ItemStack r = CraftItemStack.asNMSCopy(is);
    return r.getItem().getName()+".name";
}
Верно для 1.10, возможно на более ранних версиях так же работает.
 
Проверил. "translate":"item.swordIron.name", берётся из lang файлов ресурспака или самого minecraft'а. Можно использовать любое имя из тех, что там есть. Чтобы получить имя магией NMS, можно воспользоваться методом getName(), после добавить ".name" от net.minecraft.Item.
Java:
String getTranslatableName(ItemStack is)
{
    net.minecraft.server.ItemStack r = CraftItemStack.asNMSCopy(is);
    return r.getItem().getName()+".name";
}
Верно для 1.10, возможно на более ранних версиях так же работает.
Можете отправить весь код? Принцип понимаю но повторить без полного кода не смогу
Я не понимаю, что это такое "net.minecraft.server.ItemStack"
Я с ума схожу. Блин...
 
Можете отправить весь код? Принцип понимаю но повторить без полного кода не смогу
Я не понимаю, что это такое "net.minecraft.server.ItemStack"
Я с ума схожу. Блин...
Собственно код был написан в окошке ответа... Я знаю, что он будет работать, потому и отправил.
"net.minecraft.server.ItemStack" -- NMS'ный ItemStack. Можно и в одну строчку, но так будет ещё непонятнее...
Java:
String getTranslatableName(ItemStack is)
{
    return CraftItemStack.asNMSCopy(is).getItem().getName()+".name";
}
...
Player p = ...
...
p.sendRawMessage("{\"translate\":\""+getTranslatableName(p.getInventory().getItemInMainHand())+"\"}");
 
Собственно код был написан в окошке ответа... Я знаю, что он будет работать, потому и отправил.
"net.minecraft.server.ItemStack" -- NMS'ный ItemStack. Можно и в одну строчку, но так будет ещё непонятнее...
Java:
String getTranslatableName(ItemStack is)
{
    return CraftItemStack.asNMSCopy(is).getItem().getName()+".name";
}
...
Player p = ...
...
p.sendRawMessage("{\"translate\":\""+getTranslatableName(p.getInventory().getItemInMainHand())+"\"}");
Понял и сделал. Я вам очень благодарен
ненавижу майнкрафт
Код:
tile.stone.stone.name=Stone
tile.stone.granite.name=Granite
 
Назад
Верх