def METHOD_NAME(func):
    """Wrap a plugin load method to provide logging and ensure it is loaded only once."""
    @wraps(func)
    def wrapper(self, *args, **kwargs):
        if not getattr(self, '_loaded', False):
            # This block is executed on the first call to the function.
            # The return value of the call is saved an attribute on the wrapper
            # for future invocations.
            self._return = func(self, *args, **kwargs)
            self._loaded = True
            _pluginLoadOrder.append(self.name)
            logprint.success('Loaded plugin "%s"' % self.name)
        return self._return
    return wrapper