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

Статус
Закрыто для дальнейших ответов.

l_Slime_l

Активный участник
Пользователь
Баллы
76
Почему не работает код? Хочу надеть голову на игрока, но не получается
Код:
@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);
        }               
    }
 
Что конкретно не получается?

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

В коде я вижу у тебя по крайней мере одну ошибку.
Ты изменил SkullMeta черепа, но так и не присвоил её.
После setOwner'а:
Java:
skull.setItemMeta(sm);
У меня почему-то выдаёт ошибку в консоли
 
Screenshot_6.png Измени на getInventory() и skull.setItemMeta(sm);
 
Зарплата нормальная ?
Какая зарплата? За помощь новичку?
Не хочешь продемонстрировать ошибку?
я не могу в консоли скопировать
Посмотреть вложение 46828 Измени на getInventory() и skull.setItemMeta(sm);
Всё равно не работает(
 
Ты прав этот раздел предозначен для помощи новичкам, но ты даже ниже уровня новичка, на много.
Какая зарплата? За помощь новичку?

я не могу в консоли скопировать

Всё равно не работает(
DxRAWxS.png

В логах скопируй!!!
 
Последнее редактирование:
А заскринить никак?
Если никак — LightShot в помощь.
[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.*********ventory.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
 
Класс Emoji, строка 15. Метод onPlayerChat. Не может перевести CraftMetaItem на SkullMeta.
 
[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.*********ventory.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


Сообщения игрока может быть нулл. Сделай ретурн в этом случаи и простестни еще раз. Но я не уверен
 
скинь полный лог и классы
Почему не работает код? Хочу надеть голову на игрока, но не получается
Код:
@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);
        }              
    }


Вместо байт шорт напиши
 
скинь полный лог и классы



Вместо байт шорт напиши
Дело в 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.*********ventory.ItemStack;
import org.*********ventory.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);
        }               
    }
}
 
Дело в 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.*********ventory.ItemStack;
import org.*********ventory.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);
        }              
    }
}
****ь, за****ся отгадывать, да еще и без IDE. Вот ВК https://vk.com/ey12c. Напиши, скину нормальный код.
 
Кажется, тебе нужно создавать ItemStack с Material.SKULL_ITEM. Тогда, по идее, всё должно работать нормально.
 
Java:
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;
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх