Thread: ground item from firemaking crashes server

Results 1 to 4 of 4
  1. #1 ground item from firemaking crashes server 
    Registered Member
    Join Date
    Nov 2013
    Posts
    107
    Thanks given
    22
    Thanks received
    0
    Rep Power
    11
    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 . . .
    No clue why it happened, a player was firemaking and boom...
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    May 2013
    Posts
    1,169
    Thanks given
    28
    Thanks received
    133
    Rep Power
    53
    Post those lines
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    Nov 2013
    Posts
    107
    Thanks given
    22
    Thanks received
    0
    Rep Power
    11
    Quote Originally Posted by True Faith View Post
    Post those lines
    itemassistant.java
    Code:
    	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();
    		}
    	}
    line 2695 is in red

    itemhandler.java
    Code:
    	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);
    			}
    		}
    	}
    line 172 is in red
    Reply With Quote  
     

  4. #4  
    Registered Member
    TheChosenOne's Avatar
    Join Date
    Jan 2013
    Posts
    967
    Thanks given
    47
    Thanks received
    161
    Rep Power
    366
    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.
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 2
    Last Post: 04-18-2012, 02:41 PM
  2. Replies: 37
    Last Post: 12-14-2011, 11:10 PM
  3. [pi]max items while dying crashes server
    By kopjekoffiee in forum Help
    Replies: 5
    Last Post: 02-06-2011, 09:24 PM
  4. 614 pickup items from ground.
    By _Sweden in forum Help
    Replies: 1
    Last Post: 08-21-2010, 02:48 AM
  5. adding items from server to client
    By Kedd in forum Help
    Replies: 3
    Last Post: 12-20-2009, 12:30 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •