Buggy code:
public class DeathMatch extends GameMode implements CommandHandler { private static final Map < Integer , String > spreeAnnouncements = new HashMap < > ( ) ; private static final Map < Integer , String > comboAnnouncements = new HashMap < > ( ) ; private static final String FIRST_BLOOD_PATH = "Interface//Sound//Announcer//FirstBlood.wav" ; private static final Logger logger = Logger . getLogger ( DeathMatch . class . getName ( ) ) ; private WorldManager worldManager ; private AppStateManager stateManager ; private SyncManager syncManager ; private int spawnLocationIndex = 0 ; private Nifty nifty ; private int killLimit = 25 ; private final HashMap < Integer , DeathMatchPlayerTracker > trackers = new HashMap < > ( ) ; private Element heroSelectionLayer ; private HashMap < Integer , Boolean > canPickHeroMap = new HashMap < > ( ) ; private boolean firstBloodHappened ; private AudioQueue audioQueue = new AudioQueue ( ) ; @ Override public void initialize ( Application app ) { } @ Override public void startGame ( ) { } @ Override public void update ( float tpf ) { } @ Override public void playerJoined ( int playerId ) { } private void playerChoseHero ( final int playerId , final String heroName ) { } private Vector3f getNewSpawnLocation ( ) { } @ Override public void playerDied ( int playerId , int killersPlayerId ) { <START_BUG> boolean deathByEnvironment = playerId < 0 ; <END_BUG> DeathMatchPlayerTracker dead = trackers . get ( playerId ) ; int endedSpree = dead . getKillingSpree ( ) ; dead . death ( 6.0F , deathByEnvironment ) ; canPickHeroMap . put ( playerId , Boolean . TRUE ) ; Sender sender = stateManager . getState ( ServerSender . class ) ; int killingSpree = 0 ; int combo = 0 ; if ( ! deathByEnvironment ) { DeathMatchPlayerTracker killer = trackers . get ( killersPlayerId ) ; killer . addKill ( ) ; killingSpree = killer . getKillingSpree ( ) ; combo = killer . getCombo ( ) ; } sender . addCommand ( new PlayerKillCommand ( playerId , killersPlayerId , killingSpree , combo , endedSpree ) ) ; int kills = CharacterInteraction . getCurrentRoundStats ( ) . getKills ( killersPlayerId ) ; firstBloodHappened = true ; if ( kills >= ( killLimit ) ) { sender . addCommand ( new TopicOnlyCommand ( Topic . GAME_ENDED ) ) ; } } private void clientPlayerDied ( int playerId , int killersId , int killingSpree , int combo , int endedSpree ) { } private void killedMessage ( String playerName , String killerName , int endedSpree ) { } private void firstBloodMessage ( int killersId ) { } private void killingSpreeMessage ( String playerName , int spree ) { } private void comboMessage ( String playerName , int combo ) { } private String getPlayerName ( int id ) { } private void handleOwnDeath ( ) { } @ Override public void readGuaranteed ( Object source , Command guaranteed ) { } private void serverReadGuaranteed ( HostedConnection source , Command command ) { } private void clientReadGuaranteed ( Command command ) { } @ Override public void readUnreliable ( Object source , Command unreliable ) { } public void setNifty ( Nifty nifty ) { } @ Override public void cleanup ( ) { } private void clientHandleTopicOnlyCommand ( TopicOnlyCommand command ) { } private void serverHandleTopicOnlyCommand ( HostedConnection source , TopicOnlyCommand command ) { } @ Override public void gameEnded ( ) { } private void preloadAnnouncer ( ) { } private void playAnnouncerSound ( final String path ) { } No newline ; at end ; of file ; }

Fix:
boolean deathByEnvironment = killersPlayerId < 0 ;