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

  • Автор темы Автор темы BeLkA
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

BeLkA

Старожил
Пользователь
Баллы
153
Здравствуйте! Недавно нашел способ, как сделать меняющийся 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);
 
((Player)Inv)

На этот бред ругается.
 
Я это давно понял. Просто не знаю, чем заменить.

Ок, недоглядел.

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

Заменить на нормального игрока, которого, скорее всего, можно получить из этого инвентаря с помощью определённого метода.
Соответсвующий метод имеется.
.getViewers()?
 
3 способа уже попробовал. Из серии "Ошибки любого сорта"
У инвентаря есть Owner - это как минимум, и вполне может оказаться, что там находится тот игрок, что тебе нужен.

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


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

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


В чем проблема в шедуллер запихнуть переменную с игроком, ведь ты от куда-то брал этот сам инвентарь.
Неа. Не в ивенте. Owner = null
 
У инвентаря, если я не путаю были ещё "Смотрящие" getViewers()
 
BeLkA, так он возвращает не игроков, а список игроков. Т.е. игроки - это элементы этого списка.
Нужно пробежаться по списку и выполнить для всех игроков, то чего Вы там с ними собираетесь делать.
 
Я ведь вам написал, что делать.
Тоже не удалось, извини.
BeLkA, так он возвращает не игроков, а список игроков. Т.е. игроки - это элементы этого списка.
Нужно пробежаться по списку и выполнить для всех игроков, то чего Вы там с ними собираетесь делать.
Я попробую сделать. Спасибо за совет
И за чем апдейтить инвентарь игроков, если это общий инвентарь?
Lore сам не изменится.
Тема закрыта. Все оказалось проще, чем я думал.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх