Im currently getting an error which im pretty baffled about:
Error with player 8, username
java.lang.NullPointerException
at client.process(client.java:15943)
at PlayerHandler.process(PlayerHandler.java:270)
at process.run(process.java:23)
at java.lang.Thread.run(Thread.java:619)
This then causes all users to be disconnected and the server to null crash.
at client.process(client.java:15943):
Code:
if(System.currentTimeMillis() - lastArrow > 1500 && arrow2){
lastArrow = System.currentTimeMillis();
arrow2 = false;
if(AttackingOn > 0 && isInWilderness(absX, absY, 1) == true && getClient(AttackingOn).isInWilderness(getClient(AttackingOn).absX, getClient(AttackingOn).absY, 1) == true){
client AttackingOn2 = (client) server.playerHandler.players[AttackingOn];
if(AttackingOn2 != null){
hitDiff = misc.random(maxRangeHit());
PlayerHandler.players[AttackingOn].hitDiff = hitDiff;
PlayerHandler.players[AttackingOn].updateRequired = true;
PlayerHandler.players[AttackingOn].appearanceUpdateRequired = true;
PlayerHandler.players[AttackingOn].hitUpdateRequired = true;
PlayerHandler.players[AttackingOn].dealDamage(hitDiff);
PlayerHandler.players[AttackingOn].offTimer = System.currentTimeMillis();
PlayerHandler.players[AttackingOn].hitID = playerId;
PlayerHandler.players[AttackingOn].KilledBy[playerId] += hitDiff;
}
}
if(attacknpc > 0){
server.npcHandler.npcs[attacknpc].hitDiff = npcRangeDamage();
server.npcHandler.npcs[attacknpc].updateRequired = true;
server.npcHandler.npcs[attacknpc].hitUpdateRequired = true;
server.npcHandler.npcs[attacknpc].hit = true;
}
}
Thats the whole function from that error line.
Code:
for (int i = 0; i < maxPlayers; i++) {
try {
if (players[i] == null/* || !players[i].isActive */)
continue;
if (!players[i].disconnected && !players[i].isActive) {
if (players[i].violations > 20) {
System.out.println("Disconnecting bugged player "
+ players[i].playerName);
removePlayer(players[i]);
players[i] = null;
continue;
} else {
players[i].violations++;
continue;
}
}
if (players[i].disconnected)
continue;
players[ i ].preProcessing();
players[ i ].process();
try {
while(players[ i ].packetProcess());
} catch (Exception e){
}
players[ i ].postProcessing();
players[i].getNextPlayerMovement();
if (players[i].disconnected) {
client p = (client) players[i];
if (p.inTrade) {
client p2 = (client) players[p.trade_reqId];
p.declineTrade();
}
// messageToAll = players[i].playerName+" has logged
// out";
removePlayer(players[i]);
players[i] = null;
}
} catch (Exception e) {
if (players[i].playerName != null)
misc.println("Error with player " + i + ", "+ players[i].playerName);
players[i].disconnected = true;
e.printStackTrace();
}
}
Playerhandler code
Now im guessing it is a problem with playerhandler aswell seeing as if there was any other problems with either process or any other of the player functions, the way its removing the player is causing the server to boot all users and it to crash.
Any help with this would be great?