Помогите PlayerJoinEvent и PlayerQuitEvent

  • Автор темы Автор темы AlexMor
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

AlexMor

Активный участник
Пользователь
Баллы
76
Здравствуйте у меня такая проблема, редактирую WorldClaim под себя, подключил класс Listener и создал @EventHandler с приоритетом HAGEST , теперь такая ошибка когда игрок заходит\выходит, что посоветуете?))
Код:
[17:58:11] [User Authenticator #1/INFO]: UUID of player AlexMor is 4fad6fdc-144b-3bfa-a615-93d1591cdd11
[17:58:12] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to WorldClaim v2.1
org.bukkit.event.EventException
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.PlayerList.onPlayerJoin(PlayerList.java:333) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.PlayerList.a(PlayerList.java:159) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.LoginListener.b(LoginListener.java:144) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.LoginListener.E_(LoginListener.java:54) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.NetworkManager.a(NetworkManager.java:233) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.ServerConnection.c(ServerConnection.java:140) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:827) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [spigot.jar:git-Spigot-570526c-c1b529e]
   at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
Caused by: java.lang.NullPointerException
   at me.chris.WorldClaim.TaxClass.JoinPlayer(TaxClass.java:21) ~[?:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
   at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   ... 14 more
[17:58:12] [Server thread/INFO]: AlexMor[/127.0.0.1:57923] logged in with entity id 200 at ([world]96.40399782724535, 76.0, 244.74375860090456)
[17:58:18] [Server thread/INFO]: AlexMor lost connection: Disconnected
[17:58:18] [Server thread/ERROR]: Could not pass event PlayerQuitEvent to WorldClaim v2.1
org.bukkit.event.EventException
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-570526c-c1b529e]
   at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.PlayerList.disconnect(PlayerList.java:385) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1068) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.NetworkManager.handleDisconnection(NetworkManager.java:318) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.ServerConnection.c(ServerConnection.java:174) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:827) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [spigot.jar:git-Spigot-570526c-c1b529e]
   at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [spigot.jar:git-Spigot-570526c-c1b529e]
   at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
Caused by: java.lang.NullPointerException
   at me.chris.WorldClaim.TaxClass.QuitPlayer(TaxClass.java:74) ~[?:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
   at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-570526c-c1b529e]
   ... 12 more
[17:58:18] [Server thread/INFO]: AlexMor left the game
 
Присмотрись к 21 и 74 строкам класса TaxClass.
 
Строка 21 (класс joinPlayer)
taxMetod(p);
Строка 74 (класс taxMetod)
if(Vars.taxRate.containsKey(p)){

ошибок нет, что делать?
 
Vars это класс переменных, taxRate это HashMap
Код:
  public static HashMap<Player, Long>  taxRate;

taxMetod это метод который вычисляет налоги за чанки который были запревачены через WorldClaim и снимает эту сумму через определенное время (TimeRate) со счета игрока , вот весь метод:
Код:
  public long credit;
public void taxMetod (Player p){
     long currentTime = new Date().getTime();
     long TimeRate = Vars.config.getLong("TimeRate");
     if(Vars.taxRate.containsKey(p)){
       long lastUse = Vars.taxRate.get(p);

       
       if ((currentTime - lastUse) > TimeRate){
         String falseMessage = Vars.config.getString("falseMessage");
           String trueMessage = Vars.config.getString("trueMessage");
           long currentMoney = (long) Vars.eco.getBalance(p);
           long ch = HelperMethods.calculateChunks(p);
           @SuppressWarnings("deprecation")
           String[] group = PermissionsEx.getUser(p).getGroupNames();
           String taxperchunk = (String) "tax"+group[0] ;
           this.credit = (long) ( ch * Vars.config.getLong(taxperchunk));
           long currentTimeNew = new Date().getTime();
           Vars.taxRate.put(p, currentTimeNew);
           if(currentMoney < credit){
             p.sendMessage(falseMessage);
           
           } else {
             p.sendMessage(trueMessage);
             int timehour = 0;
             int timeminute = (int) ((TimeRate / 1000) /60 );
             if (timeminute > 60){
               do
               {
                 timeminute -= 60;
                 timehour++;
               }
               while (timeminute >= 60);
             }
             p.sendMessage("Оплаченная сумма: "+ credit);
             p.sendMessage("Следуйщая авто-оплата через "+timehour+"часов и "+timeminute+"минут.");
             Vars.eco.withdrawPlayer(p, credit);
           }
         }
         
           
       } else {
         Vars.taxRate.put(p, currentTime);
       }
   }

метод joinPlayer вызывает taxMetod вот код:
Код:
  @EventHandler (priority = EventPriority.HIGHEST)
   public void joinPlayer (PlayerJoinEvent pj){
     Player p = pj.getPlayer();
     taxMetod(p);
   }

методы joinPlayer и taxMetod находятся в одном классе TaxClass
 
а... все понял спасибо))
а... все понял спасибо))
хотя нет, не понял, значит ошибка выходит потому что taxRate == null? как исправить? никак не пойму
 
а... все понял спасибо))


хотя нет, не понял, значит ошибка выходит потому что taxRate == null? как исправить? никак не пойму
У тебя нигде не задаётся значение Vars.taxRate (а значит это поле со значением null). Если учитывать, что это static-content, то ты можешь просто прописать:
Код:
public static HashMap<Player, Long> taxRate = new HashMap<Player, Long>();
Либо же отдельным static-блоком:
Код:
public static HashMap<Player, Long> taxRate;
static {
    taxRate = new HashMap<Player, Long>();
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх