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

Помогите Ошибка с PlayerJoin Event

Тема в разделе "Разработка плагинов для новичков", создана пользователем Studenikin, 9 мар 2015.

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

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    При входе игрока появляется такая ошибка:
    Код:
    [18:08:12] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to cubecoins v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.PlayerList.c(PlayerList.java:265) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.PlayerList.a(PlayerList.java:152) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.LoginListener.c(LoginListener.java:119) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.LoginListener.a(LoginListener.java:44) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:189) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    Caused by: java.lang.NullPointerException
        at ru.stuvanya.cubecoins.Main.onJoin(Main.java:30) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_55]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_55]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_55]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
        ... 14 more
    код, который ее вызывает:
    Код:
          @EventHandler
           public void onJoin(PlayerJoinEvent event) {
                  Player player = event.getPlayer();
                  Integer i;
                  String s, suff;
                  i = SimpleCoinsAPI.getCoins(player);
                  s = Integer.toString(i);
                  suff = ("§a[" + s + "§a$]");
                  player.sendMessage("Тест");
                  NametagAPI.setSuffix(player.getName(), suff);
           }
     
  2. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Но вот такой, код при вводе команды "tag" не вызывает никаких ошибок:
    Код:
          public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
              if (cmd.getName().equalsIgnoreCase("tag")) {
                  Player player = (Player) sender;
                  Integer i;
                  String s, suff;
                  i = SimpleCoinsAPI.getCoins(player);
                  s = Integer.toString(i);
                  suff = ("§a[" + s + "§a$]");
                  player.sendMessage("Тест");
                  NametagAPI.setSuffix(player.getName(), suff);
              }
            return true;
          }
     
  3. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    покажи на 30-ю строку
     
  4. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    i = SimpleCoinsAPI.getCoins(player);
    странно, что при вызове этого же кода командой, все работает корректно
    upload_2015-3-9_20-30-4.png
    @Plasticable поможешь?
     
  5. Serrrgio

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

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    мне кажется, что в onJoin еще нельзя вызывать SimpleCoinsAPI.getCoins()
    попробуй выполнить этот код, например через 1 сек после входа.
     
  6. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    а как сделать это?
     
  7. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Шедулер
     
  8. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    а попдробнее, как?
    или может можно использовать другой эвент, который происходит после захода игрока?
     
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
  10. Bars

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

    Баллы:
    173
    1. Vault
    2. Через 2 тика
    Vault
    Создать глобальную переменную в главном классе:
    Код:
    public Economy econ;
    Прописать в onEnable():
    Код:
    setupEconomy();
    В конце создать новую функцию:
    Код:
       private void setupEconomy() {
         RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
         if (economyProvider != null) {
            econ = economyProvider.getProvider();
            getLogger().info("Economy found, hooked");
         }
       }
    В plugin.yml добавьте следующую зависимость:
    Код:
    softdepend: [Vault]
    И перезагрузите файл в вашей среде.

    Получить баланс:
    Код:
    int balance = 0;
    if (plugin.econ != null) balance = (int) plugin.econ.getBalance(getPlayer().getName());
    Функция deprecated, однако не обращайте на это внимания, а просто сделайте, что вам предлагает среда разработки (Add suppress warning: deprecated, как-то так). Зато 100% рабочая, поэтому оставил

    Scheduler
    Код:
    Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
       @Override
       public void run() { /* Ваши действия */ }
    }, 2L);
     
  11. Автор темы
    Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    спасибо
     
  12. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Есть ещё такой PlayerLoginEvent, более поздний по времени вызова.
     
  13. Bars

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

    Баллы:
    173
    Может более ранний??
     
  14. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Да да, более ранний, не знаю, что мне в голову ударило :)
    • AsyncPlayerPreLoginEvent
    • PlayerLoginEvent
    • PlayerJoinEvent
     

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