Ich versuch mal ein bisschen zu helfen den Code übersichtlicher zu machen

Das break ist toter Code - Die for Schleife startet gar nicht, wenn b.getNPCs() leer ist - Die Überprüfungen,ob Sie leer sind am Anfang und hier sind also nicht nötig. - Könntest du übrigens auch mit getNPCs().isEmpty() überprüfen (Auch bei den NPCs oben)