Just doing a general collision check against all collidable objects is not really useful, you need to go further.
Bullets should not hit other bullets, only actors like ships, tanks or whatever you have in your game.
Furthermore, bullets should not hit all actors, only enemy actors.
This all depends on the realism you want for your game of course, but most collision implementations I've seen in games depends on groups of entities colliding with each other, e.g. bullets collide with actors. Then you can add further collision check like bullets only hit actors if they don't belong to the same team or player.
You're doing a grid based collision check, that's all fine and dandy. Where you have **** you need to execute a list of your more fine grained collision checkers that you've added to your system.
e.g.:
Code:
collisionSystem.addGroupToGroupCollisionHandler(Groups.Bullets, Groups.Actors, new CollisionHandler() {
@Override
public void check(Entity bullet, Entity actor) {
if(teamManager.getTeam(bullet) != teamManager.getTeam(actor)) {
// You decide what to do with bullet, most likely just: bullet.delete();
// And you'll most likely just decrease health of actor here,
// or add a new component to entity specifying some action to
// be processed by another system.
}
}
});