Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions Minecraft.Server.FourKit/FourKit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ public static Inventory.Inventory createInventory(InventoryType type, string tit
/// <param name="name">Name of the plugin to check.</param>
/// <returns>Plugin if it exists, otherwise null</returns>
public static ServerPlugin? getPlugin(string name) {
var loadedPlugins = Minecraft.Server.FourKit.FourKitHost.getLoadedPlugins().Where(x => x.name == name);
var loadedPlugins = FourKitHost.getLoadedPlugins().Where(x => x.name == name);

if (loadedPlugins.Count() > 1) ServerLog.Warn("fourkit", $"More than one instance of a(n) '{name}' plugin.");
return loadedPlugins.FirstOrDefault();
Expand All @@ -375,5 +375,17 @@ public static Inventory.Inventory createInventory(InventoryType type, string tit
/// Gets a list of all currently loaded plugins.
/// </summary>
/// <returns>The array of plugins.</returns>
public static ServerPlugin[] getPlugins() => Minecraft.Server.FourKit.FourKitHost.getLoadedPlugins().ToArray(); // returns an array for better compatibility for bukkit->fourkit
public static ServerPlugin[] getPlugins() => FourKitHost.getLoadedPlugins().ToArray(); // returns an array for better compatibility for bukkit->fourkit

/// <summary>
/// Enables the specified plugin.
/// </summary>
/// <param name="plugin">Plugin to enable.</param>
public static void enablePlugin(ServerPlugin plugin) => FourKitHost.s_loader?.EnablePlugin(plugin);

/// <summary>
/// Disables the specified plugin.
/// </summary>
/// <param name="plugin">Plugin to disable.</param>
public static void disablePlugin(ServerPlugin plugin) => FourKitHost.s_loader?.DisablePlugin(plugin);
}
4 changes: 2 additions & 2 deletions Minecraft.Server.FourKit/FourKitHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ namespace Minecraft.Server.FourKit;

public static partial class FourKitHost
{
private static PluginLoader? s_loader;
internal static PluginLoader? s_loader;

public static IReadOnlyList<Minecraft.Server.FourKit.Plugin.ServerPlugin> getLoadedPlugins() => s_loader?.Plugins ?? [];
public static IReadOnlyList<Plugin.ServerPlugin> getLoadedPlugins() => s_loader?.Plugins ?? [];

[UnmanagedCallersOnly]
public static void Initialize()
Expand Down
63 changes: 37 additions & 26 deletions Minecraft.Server.FourKit/PluginLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,41 +119,52 @@ public void EnableAll()
{
foreach (var plugin in _plugins)
{
try
{
InvokePluginMethod(plugin, "onEnable", "OnEnable");
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Info("fourkit", $"Enabled: {pName}");

FourKit.FireEvent(new PluginEnableEvent(plugin));
}
catch (Exception ex)
{
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Error("fourkit", $"Error enabling {pName}: {ex.Message}");
}
EnablePlugin(plugin);
}
}

public void DisableAll()
{
for (int i = _plugins.Count - 1; i >= 0; i--)
foreach (var plugin in _plugins)
{
try
{
InvokePluginMethod(_plugins[i], "onDisable", "OnDisable");
string pName = GetPluginString(_plugins[i], "name", "getName", "GetName", _plugins[i].GetType().Name);
ServerLog.Info("fourkit", $"Disabled: {pName}");
DisablePlugin(plugin);
}
}

FourKit.FireEvent(new PluginDisableEvent(_plugins[i]));
}
catch (Exception ex)
{
string pName = GetPluginString(_plugins[i], "name", "getName", "GetName", _plugins[i].GetType().Name);
ServerLog.Error("fourkit", $"Error disabling {pName}: {ex.Message}");
}
public void EnablePlugin(ServerPlugin plugin)
{
try
{
InvokePluginMethod(plugin, "onEnable", "OnEnable");
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Info("fourkit", $"Enabled: {pName}");

FourKit.FireEvent(new PluginEnableEvent(plugin));
}
catch (Exception ex)
{
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Error("fourkit", $"Error enabling {pName}: {ex.Message}");
}
}

public void DisablePlugin(ServerPlugin plugin)
{
try
{
InvokePluginMethod(plugin, "onDisable", "OnDisable");
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Info("fourkit", $"Disabled: {pName}");

FourKit.FireEvent(new PluginDisableEvent(plugin));
}
catch (Exception ex)
{
string pName = GetPluginString(plugin, "name", "getName", "GetName", plugin.GetType().Name);
ServerLog.Error("fourkit", $"Error disabling {pName}: {ex.Message}");
}
}

private static void InvokePluginMethod(ServerPlugin plugin, string camelName, string pascalName)
{
Type type = plugin.GetType();
Expand Down
Loading