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

[Решено] Получение Minecraft-имен предметов

Тема в разделе "Разработка плагинов для новичков", создана пользователем imDaniX, 6 июл 2017.

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

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

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    Здрасте!

    Появилась нужда в куске кода, который бы позволял взять не Bukkit-имя предмета, а Minecraft-имя.
    К примеру, у Bukkit предмет "порох" называется "sulphur", а в Minecraft'е - "gunpowder".
    Или же "жаренная свинина" - в Bukkit "grilled_pork", в MC "cooked_porkchop".

    Так вот, мне нужен именно MC-вариант названий этих предметов :0

    Заранее спасибо~

    UPD: Решено
    Код:
    public String IStoName(ItemStack itemStack) {
        net.minecraft.server.v1_11_R1.ItemStack nmsIS = CraftItemStack.asNMSCopy(itemStack);
        net.minecraft.server.v1_11_R1.Item nmsItem=nmsIS.getItem();
        return nmsItem.getName().replaceFirst("(item|tile)\\.","");}
     
    Последнее редактирование: 6 июл 2017
  2. Хостинг MineCraft
    <
  3. gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Названия можно получить из регистра предметов, ссылка на который есть в классе Item. Добраться до него можно через NMS.
     
  4. Автор темы
    imDaniX

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

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    О, спасибо, сам бы никогда не додумался.
    Кому нужно, оставлю тут пример своего кода

    Код:
    public String IStoName(ItemStack itemStack) {
        net.minecraft.server.v1_11_R1.ItemStack nmsIS = CraftItemStack.asNMSCopy(itemStack);
        net.minecraft.server.v1_11_R1.Item nmsItem=nmsIS.getItem();
        return nmsItem.getName();}
     
  5. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Если что, с получением баннеров могут быть проблемы.
     
  6. Автор темы
    imDaniX

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

    Баллы:
    66
    Имя в Minecraft:
    imDaniX
    Хм, и правда, в моем случае возникают проблемки. Спасибо, что упомянули.
    Для себя решил таким боком
    Код:
    public String IStoName(ItemStack iStack) {
        if(itemStack.equals(Material.BANNER)) {
            String color=CraftItemStack.asNMSCopy(iStack).getName().replaceFirst("\\s\\w+$", "").toLowerCase();
            return "item.banner."+color+".name";}
        return CraftItemStack.asNMSCopy(iStack).getItem().getName()+".name";
    }
    Впрочем, это неважно для изначальной задачи.
     

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