private void serverTick(boolean doEffects) {
    World entityWorld = MinecraftServer.getServer().getEntityWorld();
    RfToolsDimensionManager dimensionManager =
        RfToolsDimensionManager.getDimensionManager(entityWorld);

    if (!dimensionManager.getDimensions().isEmpty()) {
      DimensionStorage dimensionStorage = DimensionStorage.getDimensionStorage(entityWorld);

      for (Map.Entry<Integer, DimensionDescriptor> entry :
          dimensionManager.getDimensions().entrySet()) {
        Integer id = entry.getKey();
        // If there is an activity probe we only drain power if the dimension is loaded (a player is
        // there or a chunkloader)
        DimensionInformation information = dimensionManager.getDimensionInformation(id);
        WorldServer world = DimensionManager.getWorld(id);

        // Power handling.
        if (world != null || information.getProbeCounter() == 0) {
          handlePower(doEffects, dimensionStorage, entry, id, information);
        }

        // Special effect handling.
        if (world != null && !world.playerEntities.isEmpty()) {
          handleRandomEffects(world, information);
        }
      }

      dimensionStorage.save(entityWorld);
    }
  }