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

Помогите Проблема с .updateInventory()

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

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

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

    Баллы:
    153
    Skype:
    FayStaff
    Здравствуйте! Недавно нашел способ, как сделать меняющийся Lore, подобно HyPixel. Код оправдал мои ожидания, и у меня получилось. А потом... Я заглянул в консоль... Ошибки... И вся проблема в p.updateInventory(), так как я поставил вот так (Inv - созданный инвентарь):
    ((Player)Inv).updateInventory(); Но у меня не получилось, вот ошибка:
    Код:
    [13:38:12 WARN]: [TROLLER] Task #22 for TROLLER v1.0 generated an exception
    java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R1.inventory.CraftInventoryCustom cannot be cast to org.bukkit.entity.Player
        at Main$1.run(Main.java:68) ~[?:?]
        at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:614) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:562) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:469) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [mcpc.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
    
    Так же, код:
    Код:
    getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
                public void run() {
                    if(item == 1) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§fG§2ood Apple",""));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 2) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2G§fo§2od Apple","§6T"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 3) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Go§fo§2d Apple","§6TA"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 4) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Goo§fd §2Apple","§6TAK"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 5) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Good §fA§2pple","§6TAKE"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 6) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Good A§fp§2ple","§6TAKE I"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 7) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Good Ap§fp§2le","§6TAKE IT"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 8) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Good App§fl§2e","§6TAKE IT!"));
                        item++;
                        ((Player)Inv).updateInventory();
                    }
                    if(item == 9) {
                        Inv.setItem(0, i(Material.APPLE,1,(short) 0,"§2Good Appl§fe","§6TAKE IT! :D"));
                        item = 1;
                        ((Player)Inv).updateInventory();
                    }
                }
            },0, 2);
     
  2. Хостинг MineCraft
    <
  3. ptnk

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

    Баллы:
    173
    ((Player)Inv)

    На этот бред ругается.
     
  4. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Я это давно понял. Просто не знаю, чем заменить.
     
  5. ptnk

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

    Баллы:
    173
    Ок, недоглядел.

    Заменить на нормального игрока, которого, скорее всего, можно получить из этого инвентаря с помощью определённого метода.
    Соответсвующий метод имеется.
     
  6. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    .getViewers()?
     
  7. ptnk

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

    Баллы:
    173
    Прояви самостоятельность, погляди то, что возвращается и узнай относится ли это к игроку.
     
  8. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    3 способа уже попробовал. Из серии "Ошибки любого сорта"
     
  9. ptnk

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

    Баллы:
    173
    У инвентаря есть Owner - это как минимум, и вполне может оказаться, что там находится тот игрок, что тебе нужен.

    Если этот код выполняется в event'е, то у некоторых ивентов можно получить самого игрока.


    В чем проблема в шедуллер запихнуть переменную с игроком, ведь ты от куда-то брал этот сам инвентарь.
     
  10. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Неа. Не в ивенте. Owner = null
     
  11. ptnk

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

    Баллы:
    173
    Если это не инвентарь игрока, тогда и этот метод не будет вызываться.
     
  12. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Это общий инвентарь
     
  13. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Были. Но проблема, ArrayList can not be cast to Player P.S fromgate в моей теме! Ура!
     
  14. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Я ведь вам написал, что делать.
     
  15. ptnk

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

    Баллы:
    173
    И за чем апдейтить инвентарь игроков, если это общий инвентарь?
     
    Tarock12 нравится это.
  16. Автор темы
    BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Тоже не удалось, извини.[DOUBLEPOST=1400337601,1400337559][/DOUBLEPOST]
    Я попробую сделать. Спасибо за совет[DOUBLEPOST=1400337670][/DOUBLEPOST]
    Lore сам не изменится.[DOUBLEPOST=1400342817][/DOUBLEPOST]Тема закрыта. Все оказалось проще, чем я думал.
     
Статус темы:
Закрыта.

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