+ // Only usable on the server, and NOT thread-safe. It is usable from the
+ // environment thread.
+ virtual IRollbackManager *getRollbackManager() { return NULL; }
+
+ // Shorthands
+ IItemDefManager *idef() { return getItemDefManager(); }
+ const NodeDefManager *ndef() { return getNodeDefManager(); }
+ ICraftDefManager *cdef() { return getCraftDefManager(); }
+ IRollbackManager *rollback() { return getRollbackManager(); }
+
+ virtual const std::vector<ModSpec> &getMods() const = 0;
+ virtual const ModSpec *getModSpec(const std::string &modname) const = 0;
+ virtual std::string getWorldPath() const { return ""; }
+ virtual std::string getModStoragePath() const = 0;
+ virtual bool registerModStorage(ModMetadata *storage) = 0;
+ virtual void unregisterModStorage(const std::string &name) = 0;
+
+ virtual bool joinModChannel(const std::string &channel) = 0;
+ virtual bool leaveModChannel(const std::string &channel) = 0;
+ virtual bool sendModChannelMessage(
+ const std::string &channel, const std::string &message) = 0;
+ virtual ModChannel *getModChannel(const std::string &channel) = 0;
+};