Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Studenikin

Старожил
Пользователь
Баллы
123
Имя в 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
код, который ее вызывает:
Java:
      @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);
       }
 
Но вот такой, код при вводе команды "tag" не вызывает никаких ошибок:
Java:
      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;
      }
 
мне кажется, что в onJoin еще нельзя вызывать SimpleCoinsAPI.getCoins()
попробуй выполнить этот код, например через 1 сек после входа.
 
  1. Vault
  2. Через 2 тика
Vault​
Создать глобальную переменную в главном классе:
Java:
public Economy econ;

Прописать в onEnable():
Java:
setupEconomy();

В конце создать новую функцию:
Java:
   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 добавьте следующую зависимость:
YAML:
softdepend: [Vault]
И перезагрузите файл в вашей среде.

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

Scheduler​
Java:
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
   @Override
   public void run() { /* Ваши действия */ }
}, 2L);
 

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

Назад
Верх