Use correct disconnect sequence at all times, fixes #119 and events not firing at stop

This commit is contained in:
md_5 2013-02-18 19:24:40 +11:00
parent c44dc7931a
commit 297c8e2c8b

View File

@ -154,22 +154,24 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
downBridge.start(); downBridge.start();
} catch ( KickException ex ) } catch ( KickException ex )
{ {
destroySelf( ex.getMessage() ); disconnect( ex.getMessage() );
} catch ( Exception ex ) } catch ( Exception ex )
{ {
destroySelf( "Could not connect to server - " + Util.exception( ex ) ); disconnect( "Could not connect to server - " + Util.exception( ex ) );
} }
} }
private synchronized void destroySelf(String reason) @Override
public void disconnect(String reason)
{ {
if ( clientConnected ) if ( clientConnected )
{ {
PlayerDisconnectEvent event = new PlayerDisconnectEvent( this ); PlayerDisconnectEvent event = new PlayerDisconnectEvent( this );
ProxyServer.getInstance().getPluginManager().callEvent( event ); ProxyServer.getInstance().getPluginManager().callEvent( event );
ProxyServer.getInstance().getTabListHandler().onDisconnect( this );
ProxyServer.getInstance().getPlayers().remove( this ); ProxyServer.getInstance().getPlayers().remove( this );
disconnect( reason ); super.disconnect( reason );
if ( server != null ) if ( server != null )
{ {
server.getInfo().removePlayer( this ); server.getInfo().removePlayer( this );
@ -181,13 +183,6 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
} }
} }
@Override
public void disconnect(String reason)
{
ProxyServer.getInstance().getTabListHandler().onDisconnect( this );
super.disconnect( reason );
}
@Override @Override
public void sendMessage(String message) public void sendMessage(String message)
{ {
@ -340,10 +335,10 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
} }
} catch ( IOException ex ) } catch ( IOException ex )
{ {
destroySelf( "Reached end of stream" ); disconnect( "Reached end of stream" );
} catch ( Exception ex ) } catch ( Exception ex )
{ {
destroySelf( Util.exception( ex ) ); disconnect( Util.exception( ex ) );
} }
} }
} }
@ -543,7 +538,7 @@ public class UserConnection extends GenericConnection implements ProxiedPlayer
} }
} catch ( Exception ex ) } catch ( Exception ex )
{ {
destroySelf( Util.exception( ex ) ); disconnect( Util.exception( ex ) );
} }
} }
} }