Post those lines
|
No clue why it happened, a player was firemaking and boom...Code:[1/5/14 7:53 PM]: java.lang.NullPointerException [1/5/14 7:53 PM]: at server.model.items.ItemAssistant.createGroundItem(Ite mAssistant.java:2695) [1/5/14 7:53 PM]: at server.world.ItemHandler.createGroundItem(ItemHandler .java:172) [1/5/14 7:53 PM]: at server.model.players.skills.Firemaking$1.stop(Firemak ing.java:95) [1/5/14 7:53 PM]: at server.event.CycleEventContainer.stop(CycleEventConta iner.java:74) [1/5/14 7:53 PM]: at server.model.players.skills.Firemaking$1.execute(Fire making.java:85) [1/5/14 7:53 PM]: at server.event.CycleEventContainer.execute(CycleEventCo ntainer.java:66) [1/5/14 7:53 PM]: at server.event.CycleEventHandler.process(CycleEventHand ler.java:76) [1/5/14 7:53 PM]: at server.Server.main(Server.java:196) [1/5/14 7:53 PM]: A fatal exception has been thrown! Press any key to continue . . .
Post those lines
itemassistant.java
line 2695 is in redCode:public void createGroundItem(int itemID, int itemX, int itemY, int itemAmount) { synchronized(c) { c.getOutStream().createFrame(85); c.getOutStream().writeByteC((itemY - 8 * c.mapRegionY)); c.getOutStream().writeByteC((itemX - 8 * c.mapRegionX)); c.getOutStream().createFrame(44); c.getOutStream().writeWordBigEndianA(itemID); c.getOutStream().writeWord(itemAmount); c.getOutStream().writeByte(0); c.flushOutStream(); } }
itemhandler.java
line 172 is in redCode:public int[][] brokenBarrows = {{4708,4860},{4710,4866},{4712,4872},{4714,4878},{4716,4884}, {4720,4896},{4718,4890},{4720,4896},{4722,4902},{4732,4932},{4734,4938},{4736,4944},{4738,4950}, {4724,4908},{4726,4914},{4728,4920},{4730,4926},{4745,4956},{4747,4926},{4749,4968},{4751,4994}, {4753,4980},{4755,4986},{4757,4992},{4759,4998}}; public void createGroundItem(Client c, int itemId, int itemX, int itemY, int itemAmount, int playerId) { if(itemId > 0) { if (itemId >= 2412 && itemId <= 2414) { c.sendMessage("The cape vanishes as it touches the ground."); return; } if (itemId > 4705 && itemId < 4760) { for (int j = 0; j < brokenBarrows.length; j++) { if (brokenBarrows[j][0] == itemId) { itemId = brokenBarrows[j][1]; break; } } } if (!server.model.items.Item.itemStackable[itemId] && itemAmount > 0) { for (int j = 0; j < itemAmount; j++) { c.getItems().createGroundItem(itemId, itemX, itemY, 1); GroundItem item = new GroundItem(itemId, itemX, itemY, 1, c.playerId, HIDE_TICKS, Server.playerHandler.players[playerId].playerName); addItem(item); } } else { c.getItems().createGroundItem(itemId, itemX, itemY, itemAmount); GroundItem item = new GroundItem(itemId, itemX, itemY, itemAmount, c.playerId, HIDE_TICKS, Server.playerHandler.players[playerId].playerName); addItem(item); } } }
This probably happens because the player has logged out at least once since the fire had started.
When the fire stops, the server attempts to send ashes to the player that started the fire. But since the player has already logged out once, the client object (even when he has logged in again) has no outStream anymore.
The sollution I advice, is to check if the client (client, not player) is still online, before creating the grounditem.
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |