@OP
Try adding cannon == null and rotation == null to the top of rotate method
Also post your player.getPA().object method
Replace your rotate method with this see if it helps
Code:
private void rotate(GlobalObject cannon) {
if(cannon == null || rotation == null)
return;
switch (rotation) {
case NORTH:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 516, 10, -1);
break;
case NORTH_EAST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 517, 10, -1);
break;
case EAST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 518, 10, -1);
break;
case SOUTH_EAST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 519, 10, -1);
break;
case SOUTH:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 520, 10, -1);
break;
case SOUTH_WEST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 521, 10, -1);
break;
case WEST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 514, 10, -1);
break;
case NORTH_WEST:
player.getPA().object(cannon.getPosition().getX(), cannon.getPosition().getY(), 515, 10, -1);
rotation = null;
break;
}
}