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

.

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

Статус темы:
Закрыта.
  1. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    .
     
    Последнее редактирование: 27 янв 2020
  2. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    getBlock().getState()?
     
  3. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Да вроде подойдет...
    Но возникла другая проблема...
    У этого сундука который я получил в Chest имя должно быть &aКейс
    но когда я делаю так
    Код:
    chest.getInventory().getName()
    то метод возвращает не "&aКейс" а "container.chest" Как вернуть именно имя сундука?
     
  4. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Вот, что я нашёл на англоведре
    Код:
    CraftChest chest = (CraftChest) block.getState(); //block has to be a chest
          
    try
    {
        Field inventoryField = chest.getClass().getDeclaredField("chest"); //This get's the CraftChest variable 'chest' which is the TileEntityChest that is stored within it
        inventoryField.setAccessible(true); //Allows you to access that field since it's declared as private
        TileEntityChest teChest = ((TileEntityChest) inventoryField.get(chest)); //obtains the field and casts it to a TileEntityChest
        teChest.a("Name Goes Here"); //The a(String) method sets the title of the chest
    }
    catch (Exception e) //This has to be here as the getDeclaredField(String) throws an exception if the input doesn't exist in the given class
    {
         e.printStackTrace();
    }
    
     
  5. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Сначала я ничего не понял,
    потом тоже ничего не понял,
    потом подумал что это устанавливает что-то, а не получает что-то...
    Да и это что-то слишком заумно.... Чтоб просто получить имя сундучка..
     
  6. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    У меня всегда имя сундука возвращало :/
     
  7. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Эм... Ну тогда я вообще ничего не понял...
     
  8. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    лучше бы понял) ничего особо сложного нет. просто у сундука тайлэнтити, видимо, приватная, этот код дает к ней доступ, достает ее и берет оттуда имя. только неужели нет нормального способа получить энтити сундука?)
     
  9. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Эээ... Ага...
    Пожалуй сделаю умное лицо, пусть все подумают что я хоть что-то понял..
     
  10. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А ты это имя то выставлял чтобы потом его получить то?
     
  11. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Ну в принципе выставлял... Если я правильно Вас понял, я кейс сундук с именем получаю командой, и мне прилетает сундук с установленным именем...
    Код:
                } else if (cmd.getName().equalsIgnoreCase("getCase")) {
                    if (player.hasPermission("opencase.getcase")) {
                        if (args.length == 0) {
                            ItemStack item = new ItemStack(Material.CHEST);
                            ItemMeta meta = item.getItemMeta();
                            meta.setDisplayName(chestCase);
                            ArrayList<String> lore = new ArrayList<String>();
                            lore.add(chestCaseLore);
                            meta.setLore(lore);
                            meta.addEnchant(Enchantment.DURABILITY, 1, true);
                            item.setItemMeta(meta);
                            player.getInventory().setItemInHand(item);
                            return true;
    

    Код:
        protected String chestCase = ChatColor.translateAlternateColorCodes('&', "&aКейс");
        protected String chestCaseLore = ChatColor.translateAlternateColorCodes('&', "&a&lОружейный кейс");
    

    Ну и в самом майне видно что у него имя есть...
     
  12. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну так ты ставишь displayName, а пытаешься получить Name...
     
  13. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Ыыы... Это не одно и тоже?...
    Метода setName я не нашел...
    Ну и метода getDisplayName я не нашел также...
     
  14. MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Сундук.getMetadata().getDisplayName()
     
  15. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Возможно, но...
    Лично у меня метод есть только такой: Chest.getMetadata(String s) и что указывать в качестве параметра s?
    И этот метод возвращает List<MetadataValue>...
    UP щтоле..
    UP! Так как мне можно правильно получить имя сундука?!
    Так можете ответить?
    Я нашел только это:
    https://hub.spigotmc.org/javadocs/b...etadatable.html#getMetadata(java.lang.String)
    Но это не подходит, метод воpвращает List<MetadataValue>...
    И в качестве параметра требует String...
    UP
     
  16. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    displayName - это название предмета в инвентаре
    попробуй:
    Код:
    Chest ch = (Chest)block.getState();
    ch.getBlockInventory().getTitle();
    //или
    ch.getBlockInventory().getName();
    
     
  17. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Второе возвращает "container.chest" первое попробую..
    И getTitle() и getName() возвращает "container.chest"...

    Ну кааак мне получить DisplayName()?:cry::cry::cry::cry:
     
  18. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Омг, ты шутишь что-ли?
    Сидеть несколько дней над такой херней когда в первой строке гугла есть ответ... Мде..
     
  19. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    С русским запросом, или по английски?
     
  20. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Конечно по-английски.
     
Статус темы:
Закрыта.

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