Skip to content

Commit

Permalink
refactor: move plugin loading and enabling codes to PluginManager
Browse files Browse the repository at this point in the history
  • Loading branch information
wu-vincent committed Mar 3, 2024
1 parent ca262c9 commit 8788793
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 24 deletions.
1 change: 1 addition & 0 deletions include/endstone/detail/plugin/plugin_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class EndstonePluginManager : public PluginManager {
bool isPluginEnabled(Plugin *plugin) const override;
std::vector<Plugin *> loadPlugins(const std::string &directory) override;
void enablePlugin(Plugin &plugin) const override;
void enablePlugins() const override;
void disablePlugin(Plugin &plugin) const override;
void disablePlugins() const override;
void clearPlugins() override;
Expand Down
1 change: 1 addition & 0 deletions include/endstone/plugin/plugin_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class PluginManager {
[[nodiscard]] virtual bool isPluginEnabled(Plugin *plugin) const = 0;
[[nodiscard]] virtual std::vector<Plugin *> loadPlugins(const std::string &directory) = 0;
virtual void enablePlugin(Plugin &plugin) const = 0;
virtual void enablePlugins() const = 0;
virtual void disablePlugin(Plugin &plugin) const = 0;
virtual void disablePlugins() const = 0;
virtual void clearPlugins() = 0;
Expand Down
12 changes: 12 additions & 0 deletions src/endstone_core/plugin/plugin_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ std::vector<Plugin *> EndstonePluginManager::loadPlugins(const std::string &dire
}
}

for (const auto &plugin : loaded_plugins) {
plugin->getLogger().info("Loading {}", plugin->getDescription().getFullName());
plugin->onLoad();
}

return loaded_plugins;
}

Expand All @@ -103,6 +108,13 @@ void EndstonePluginManager::enablePlugin(Plugin &plugin) const
}
}

void EndstonePluginManager::enablePlugins() const
{
for (const auto &plugin : plugins_) {
enablePlugin(*plugin);
}
}

void EndstonePluginManager::disablePlugin(Plugin &plugin) const
{
if (plugin.isEnabled()) {
Expand Down
13 changes: 2 additions & 11 deletions src/endstone_core/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,7 @@ void EndstoneServer::loadPlugins()
auto plugin_dir = fs::current_path() / "plugins";

if (exists(plugin_dir)) {
auto plugins = plugin_manager_->loadPlugins(plugin_dir.string());
for (const auto &plugin : plugins) {
plugin->getLogger().info("Loading {}", plugin->getDescription().getFullName());
plugin->onLoad();
}
plugin_manager_->loadPlugins(plugin_dir.string());
}
else {
create_directories(plugin_dir);
Expand All @@ -55,12 +51,7 @@ void EndstoneServer::loadPlugins()

void EndstoneServer::enablePlugins() const
{
auto plugins = plugin_manager_->getPlugins();
for (const auto &plugin : plugins) {
if (!plugin->isEnabled()) {
enablePlugin(*plugin);
}
}
plugin_manager_->enablePlugins();
}

void EndstoneServer::enablePlugin(Plugin &plugin) const
Expand Down
17 changes: 4 additions & 13 deletions test_package/src/test_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,12 @@ class TestServer : public Server {
void loadPlugins()
{
auto plugin_dir = fs::current_path() / "plugins";
auto plugins = plugin_manager_->loadPlugins(plugin_dir.string());
for (const auto &plugin : plugins) {
plugin->getLogger().info("Loading {}", plugin->getDescription().getFullName());
plugin->onLoad();
}
plugin_manager_->loadPlugins(plugin_dir.string());
}

void enablePlugins() const
{
auto plugins = plugin_manager_->getPlugins();
for (const auto &plugin : plugins) {
if (!plugin->isEnabled()) {
plugin_manager_->enablePlugin(*plugin);
}
}
plugin_manager_->enablePlugins();
}

void disablePlugins() const
Expand All @@ -78,12 +69,12 @@ class TestServer : public Server {

[[nodiscard]] std::string_view getVersion() const override
{
return "test";
return "test(endstone)";
}

[[nodiscard]] std::string getMinecraftVersion() const override
{
return "test";
return "test(minecraft)";
}

private:
Expand Down

0 comments on commit 8788793

Please sign in to comment.