private void fastForwardWorld() {
    _loadingScreen.setVisible(true);
    _hud.setVisible(false);
    _metrics.setVisible(false);
    Display.update();

    int chunksGenerated = 0;

    while (chunksGenerated < 64) {
      getWorldRenderer().generateChunk();
      chunksGenerated++;

      _loadingScreen.updateStatus(
          String.format("Fast forwarding world... %.2f%%! :-)", (chunksGenerated / 64f) * 100f));

      renderUserInterface();
      updateUserInterface();
      Display.update();
    }

    _loadingScreen.setVisible(false);
    _hud.setVisible(true);
    _metrics.setVisible(true);
  }
  public void init() {
    _hud = new UIHeadsUpDisplay();
    _hud.setVisible(true);

    _pauseMenu = new UIPauseMenu();
    _loadingScreen = new UILoadingScreen();
    _statusScreen = new UIStatusScreen();
    _inventoryScreen = new UIInventoryScreen();
    _metrics = new UIMetrics();

    _metrics.setVisible(true);

    _guiScreens.add(_metrics);
    _guiScreens.add(_hud);
    _guiScreens.add(_pauseMenu);
    _guiScreens.add(_loadingScreen);
    _guiScreens.add(_inventoryScreen);
    _guiScreens.add(_statusScreen);

    PojoEntityManager entityManager = new PojoEntityManager();

    entityManager.registerTypeHandler(BlockFamily.class, new BlockFamilyTypeHandler());
    entityManager.registerTypeHandler(Color4f.class, new Color4fTypeHandler());
    entityManager.registerTypeHandler(Quat4f.class, new Quat4fTypeHandler());
    entityManager.registerTypeHandler(
        Sound.class, new SoundTypeHandler(AudioManager.getInstance()));
    entityManager.registerTypeHandler(Vector3f.class, new Vector3fTypeHandler());
    entityManager.registerTypeHandler(Vector2f.class, new Vector2fTypeHandler());
    entityManager.registerTypeHandler(Vector3i.class, new Vector3iTypeHandler());

    // TODO: Use reflection pending mod support
    entityManager.registerComponentClass(ExplosionActionComponent.class);
    entityManager.registerComponentClass(PlaySoundActionComponent.class);
    entityManager.registerComponentClass(TunnelActionComponent.class);
    entityManager.registerComponentClass(AABBCollisionComponent.class);
    entityManager.registerComponentClass(BlockComponent.class);
    entityManager.registerComponentClass(BlockItemComponent.class);
    entityManager.registerComponentClass(BlockParticleEffectComponent.class);
    entityManager.registerComponentClass(CameraComponent.class);
    entityManager.registerComponentClass(CharacterMovementComponent.class);
    entityManager.registerComponentClass(CharacterSoundComponent.class);
    entityManager.registerComponentClass(HealthComponent.class);
    entityManager.registerComponentClass(InventoryComponent.class);
    entityManager.registerComponentClass(ItemComponent.class);
    entityManager.registerComponentClass(LightComponent.class);
    entityManager.registerComponentClass(LocalPlayerComponent.class);
    entityManager.registerComponentClass(LocationComponent.class);
    entityManager.registerComponentClass(MeshComponent.class);
    entityManager.registerComponentClass(PlayerComponent.class);
    entityManager.registerComponentClass(SimpleAIComponent.class);
    entityManager.registerComponentClass(AccessInventoryActionComponent.class);
    _entityManager = entityManager;

    _entityManager.setEventSystem(new PojoEventSystem(_entityManager));
    CoreRegistry.put(EntityManager.class, _entityManager);
    _componentSystemManager = new ComponentSystemManager();
    CoreRegistry.put(ComponentSystemManager.class, _componentSystemManager);

    PrefabManager prefabManager = new PojoPrefabManager();
    CoreRegistry.put(PrefabManager.class, prefabManager);
    entityManager.setPrefabManager(prefabManager);

    loadPrefabs();

    _componentSystemManager.register(new BlockEntityRegistry());
    _componentSystemManager.register(new CharacterMovementSystem());
    _componentSystemManager.register(new SimpleAISystem());
    _componentSystemManager.register(new ItemSystem());
    _componentSystemManager.register(new CharacterSoundSystem());
    _localPlayerSys = new LocalPlayerSystem();
    _componentSystemManager.register(_localPlayerSys);
    _componentSystemManager.register(new FirstPersonRenderer());
    _componentSystemManager.register(new HealthSystem());
    _componentSystemManager.register(new BlockEntitySystem());
    _componentSystemManager.register(new BlockParticleEmitterSystem());
    _componentSystemManager.register(new BlockDamageRenderer());
    _componentSystemManager.register(new InventorySystem());
    _componentSystemManager.register(new MeshRenderer());
    _componentSystemManager.register(new ExplosionAction());
    _componentSystemManager.register(new PlaySoundAction());
    _componentSystemManager.register(new TunnelAction());
    _componentSystemManager.register(new AccessInventoryAction());
  }