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

Помогите Не работает код надеть голову на игрока

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

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

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    Почему не работает код? Хочу надеть голову на игрока, но не получается
    Код:
    @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent event){
            if(event.getMessage().equalsIgnoreCase("SetSkull")){
                ItemStack skull = new ItemStack(Material.SKULL, 1, (byte)3);
                SkullMeta sm = (SkullMeta) skull.getItemMeta();
                sm.setOwner("Notch");
                event.getPlayer().getEquipment().setHelmet(skull);
            }               
        }
    
     
  2. Хостинг MineCraft
    <
  3. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Что конкретно не получается?

    В коде я вижу у тебя по крайней мере одну ошибку.
    Ты изменил SkullMeta черепа, но так и не присвоил её.
    После setOwner'а:
    Код:
    skull.setItemMeta(sm);
     
  4. Автор темы
    l_Slime_l

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    У меня почему-то выдаёт ошибку в консоли
     
  5. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Не хочешь продемонстрировать ошибку?
     
  6. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby
    Screenshot_6.png Измени на getInventory() и skull.setItemMeta(sm);
     
  7. Автор темы
    l_Slime_l

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    Какая зарплата? За помощь новичку?[DOUBLEPOST=1498668272,1498668162][/DOUBLEPOST]
    я не могу в консоли скопировать[DOUBLEPOST=1498668322][/DOUBLEPOST]
    Всё равно не работает(
     
  8. Grazy

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

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Ты прав этот раздел предозначен для помощи новичкам, но ты даже ниже уровня новичка, на много.
    [​IMG]
    В логах скопируй!!!
     
    Последнее редактирование: 28 июн 2017
  9. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    А заскринить никак?
    Если никак — LightShot в помощь.
     
  10. Автор темы
    l_Slime_l

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    [19:44:47] [Async Chat Thread - #2/ERROR]: Could not pass event AsyncPlayerChatEvent to EMOJI v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.PlayerConnection.chat(PlayerConnection.java:1276) [spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1214) [spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot.jar:git-Spigot-3fb9445-6e3cec8]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_11_R1.inventory.CraftMetaItem cannot be cast to org.bukkit.inventory.meta.SkullMeta
    at emoji.main.Emoji.onPlayerChat(Emoji.java:15) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-3fb9445-6e3cec8]
    ... 11 more
     
  11. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Класс Emoji, строка 15. Метод onPlayerChat. Не может перевести CraftMetaItem на SkullMeta.
     
  12. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby

    Сообщения игрока может быть нулл. Сделай ретурн в этом случаи и простестни еще раз. Но я не уверен
     
  13. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Здесь ClassCastException. Не NullPointer.
     
  14. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby
    скинь полный лог и классы[DOUBLEPOST=1498668930,1498668814][/DOUBLEPOST]

    Вместо байт шорт напиши
     
  15. Автор темы
    l_Slime_l

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    Дело в 15 строке, вот код
    Код:
    package emoji.main;
    
    import org.bukkit.Material;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.SkullMeta;
    
    public class Emoji implements Listener{
        @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent event){
            if(event.getMessage().equalsIgnoreCase("SetSkull")){
                ItemStack skull = new ItemStack(Material.SKULL, 1, (byte)3);
                SkullMeta sm = (SkullMeta) skull.getItemMeta();
                sm.setOwner("Notch");
                skull.setItemMeta(sm);
                event.getPlayer().getInventory().setHelmet(skull);
            }               
        }
    }
     
  16. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby
    ****ь, за****ся отгадывать, да еще и без IDE. Вот ВК https://vk.com/ey12c. Напиши, скину нормальный код.
     
  17. Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Кажется, тебе нужно создавать ItemStack с Material.SKULL_ITEM. Тогда, по идее, всё должно работать нормально.
     
  18. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    когда ты мастер по стектрейсам
     
  19. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Код:
    ItemStack getSkull(OfflinePlayer owner) {
        ItemStack it = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
        SkullMeta m = (SkullMeta) it.getItemMeta();
    
        m.setOwner(owner.getName());
    
        it.setItemMeta(m);
        return it;
    }
     
  20. Автор темы
    l_Slime_l

    l_Slime_l Новичок Пользователь

    Баллы:
    11
    Спасибо!
     
Статус темы:
Закрыта.

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