Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

.

Статус
Закрыто для дальнейших ответов.
Да вроде подойдет...
Но возникла другая проблема...
У этого сундука который я получил в Chest имя должно быть &aКейс
но когда я делаю так
Код:
chest.getInventory().getName()
то метод возвращает не "&aКейс" а "container.chest" Как вернуть именно имя сундука?
 
Да вроде подойдет...
Но возникла другая проблема...
У этого сундука который я получил в Chest имя должно быть &aКейс
но когда я делаю так
Код:
chest.getInventory().getName()
то метод возвращает не "&aКейс" а "container.chest" Как вернуть именно имя сундука?
Вот, что я нашёл на англоведре
Java:
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();
}
 
Вот, что я нашёл на англоведре
Java:
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();
}
Сначала я ничего не понял,
потом тоже ничего не понял,
потом подумал что это устанавливает что-то, а не получает что-то...
Да и это что-то слишком заумно.... Чтоб просто получить имя сундучка..
 
Да вроде подойдет...
Но возникла другая проблема...
У этого сундука который я получил в Chest имя должно быть &aКейс
но когда я делаю так
Код:
chest.getInventory().getName()
то метод возвращает не "&aКейс" а "container.chest" Как вернуть именно имя сундука?
У меня всегда имя сундука возвращало :/
 
Эм... Ну тогда я вообще ничего не понял...
лучше бы понял) ничего особо сложного нет. просто у сундука тайлэнтити, видимо, приватная, этот код дает к ней доступ, достает ее и берет оттуда имя. только неужели нет нормального способа получить энтити сундука?)
 
лучше бы понял) ничего особо сложного нет. просто у сундука тайлэнтити, видимо, приватная, этот код дает к ней доступ, достает ее и берет оттуда имя. только неужели нет нормального способа получить энтити сундука?)
Эээ... Ага...
Пожалуй сделаю умное лицо, пусть все подумают что я хоть что-то понял..
 
А ты это имя то выставлял чтобы потом его получить то?
 
Ну в принципе выставлял... Если я правильно Вас понял, я кейс сундук с именем получаю командой, и мне прилетает сундук с установленным именем...
Код:
            } 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Оружейный кейс");

Ну и в самом майне видно что у него имя есть...
 
Ну в принципе выставлял... Если я правильно Вас понял, я кейс сундук с именем получаю командой, и мне прилетает сундук с установленным именем...
Код:
            } 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Оружейный кейс");

Ну и в самом майне видно что у него имя есть...
Ну так ты ставишь displayName, а пытаешься получить Name...
 
Сундук.getMetadata().getDisplayName()
Возможно, но...
Лично у меня метод есть только такой: Chest.getMetadata(String s) и что указывать в качестве параметра s?
И этот метод возвращает List<MetadataValue>...
UP щтоле..
UP! Так как мне можно правильно получить имя сундука?!
Сундук.getMetadata().getDisplayName()
Так можете ответить?
Я нашел только это:
https://hub.spigotmc.org/javadocs/b...etadatable.html#getMetadata(java.lang.String)
Но это не подходит, метод воpвращает List<MetadataValue>...
И в качестве параметра требует String...
UP
 
Ыыы... Это не одно и тоже?...
Метода setName я не нашел...
Ну и метода getDisplayName я не нашел также...
displayName - это название предмета в инвентаре
попробуй:
JavaScript:
Chest ch = (Chest)block.getState();
ch.getBlockInventory().getTitle();
//или
ch.getBlockInventory().getName();
 
displayName - это название предмета в инвентаре
попробуй:
JavaScript:
Chest ch = (Chest)block.getState();
ch.getBlockInventory().getTitle();
//или
ch.getBlockInventory().getName();
Второе возвращает "container.chest" первое попробую..
И getTitle() и getName() возвращает "container.chest"...

Ну кааак мне получить DisplayName()?:cry::cry::cry::cry:
 
Второе возвращает "container.chest" первое попробую..
И getTitle() и getName() возвращает "container.chest"...

Ну кааак мне получить DisplayName()?:cry::cry::cry::cry:
Омг, ты шутишь что-ли?
Сидеть несколько дней над такой херней когда в первой строке гугла есть ответ... Мде..
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх