1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Отправитель снежка

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

  1. Автор темы
    Akultist

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

    Баллы:
    46
    Как узнать кто запустил снежок?
     
  2. Автор темы
    Akultist

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

    Баллы:
    46
    Хм, странно, раньше не работало, ну ладно.. У меня ещё один вопрос есть, он не по теме но вторую тему не охотно создавать. Почему выскакивает ошибка что типа у снежка нету customname хотя я задаю его?

    P.S: там где создаю:
    Код:
    Snowball ball = p.launchProjectile(Snowball.class);
    ball.setCustomName("§c§l" + getName());
    ball.setCustomNameVisible(true);
    там где проверяю:
    Код:
    if (snowball.getCustomName().equalsIgnoreCase("§c§l" + new SnowballSkill().getName()))
    {
        //TODO
    }
    
     
  3. Автор темы
    Akultist

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

    Баллы:
    46
    Вы меня не поняли, я задал вопрос почему? Если я так сделаю то ничего не произойдет так как он не видет его customname хотя я его задаю.
     
  4. Автор темы
    Akultist

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

    Баллы:
    46
    Код:
    @Override
        public void execute(Player p)
        {
            boolean check = check(p);
            if (!check) return;
    
            Snowball ball = p.launchProjectile(Snowball.class);
            ball.setCustomName("§c§l" + getName());
            ball.setCustomNameVisible(true);
        }
    Код:
    @Override
        public String getName()
        {
            return "Кошачий мячик";
        }
    Код:
    @EventHandler
        public void onProjectileLaunch(ProjectileLaunchEvent e)
        {
            if (e.getEntity().getType() == EntityType.SNOWBALL)
            {
                Snowball snowball = (Snowball) e.getEntity();
                if (snowball.getCustomName() != null
                        && snowball.getCustomName().equalsIgnoreCase("§c§l" + new SnowballSkill().getName()))
                {
                    Player p = (Player) snowball.getShooter();
                    playersSnowball.put(p, snowball);
                    new BukkitRunnable()
                    {
    
                        @Override
                        public void run()
                        {
                            if (playersSnowball.containsKey(p))
                            {
                                Location loc = snowball.getLocation();
                                loc.getWorld().spawnParticle(Particle.DRIP_LAVA, loc, 200);
                                loc.getWorld().spawnParticle(Particle.DRIP_WATER, loc, 200);
                                loc.getWorld().spawnParticle(Particle.CLOUD, loc, 200);
                            } else {
                                this.cancel();
                            }
                        }
    
                    }.runTaskTimer(mini, 0, 1);
                }
            }
        }
    P.S - я не знаю ивента который выполняется во время полёта мячика. Поэтому сделал через BukkitRunnable. SnowballSkill - класс который наследуется от abstract класса
     
  5. Автор темы
    Akultist

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

    Баллы:
    46
    Но когда он летит, все нормально, имя задается!
     
  6. Автор темы
    Akultist

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

    Баллы:
    46
    Код:
    org.bukkit.event.EventException: null
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callProjectileLaunchEvent(CraftEventFactory.java:791) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.World.addEntity(World.java:1047) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.WorldServer.addEntity(WorldServer.java:1112) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.World.addEntity(World.java:1013) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.entity.CraftLivingEntity.launchProjectile(CraftLivingEntity.java:379) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.entity.CraftLivingEntity.launchProjectile(CraftLivingEntity.java:302) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at com.minigames.artuf.skill.SnowballSkill.execute(SnowballSkill.java:33) [MiniGame.jar:?]
            at com.minigames.artuf.listener.Click.onPlayerInteract(Click.java:119) [MiniGame.jar:?]
            at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
            at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
            at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
            at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:235) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:202) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:198) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:989) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:26) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514) [?:?]
            at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
            at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Spigot.jar:git-Spigot-3d850ec-809c399]
            at java.lang.Thread.run(Thread.java:844) [?:?]
    Caused by: java.lang.NullPointerException
            at com.minigames.artuf.listener.Drop.onProjectileLaunch(Drop.java:84) ~[?:?]
            at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
            at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
            at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
            at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[Spigot.jar:git-Spigot-3d850ec-809c399]
            ... 34 more
    Это без проверки. С проверкой ничего не происходит.
     
  7. Автор темы
    Akultist

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

    Баллы:
    46
    и? Оно и без этого ошибку выбивает (без runnable)
     
  8. Автор темы
    Akultist

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

    Баллы:
    46
    Можно, но когда снежок приземляется я игрока из мапы удаляю и раннейбл уничтожается.
     
  9. Автор темы
    Akultist

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

    Баллы:
    46
    Строка 84 это та самая проверка
     
  10. Автор темы
    Akultist

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

    Баллы:
    46
    Спасибо за ответы)
     
  11. Автор темы
    Akultist

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

    Баллы:
    46
    А вообще по идеи она выскакивает из-за того что шар сначала спавнится, а потом уже имя задается ему. Поэтому и ошибка.. (Мои предположение, но я подожду ответов)
     

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