refactor(api)make Register/Unregister static, hide Instance
This commit is contained in:
@@ -23,7 +23,7 @@ namespace CommandHook;
|
||||
/// </remarks>
|
||||
public class CommandHookModSystem : ModSystem
|
||||
{
|
||||
public static CommandHookModSystem? Instance;
|
||||
internal static CommandHookModSystem? Instance;
|
||||
|
||||
private readonly List<ICommandHookListener> listeners = new();
|
||||
|
||||
@@ -54,6 +54,7 @@ public class CommandHookModSystem : ModSystem
|
||||
|
||||
/// <summary>
|
||||
/// Registers a listener for the commands it returns from <see cref="ICommandHookListener.Commands"/>.
|
||||
/// No-ops silently if CommandHook hasn't finished server-side startup yet.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Calling this again for a <see cref="ICommandHookListener.ModId"/> that is already
|
||||
@@ -63,8 +64,11 @@ public class CommandHookModSystem : ModSystem
|
||||
/// list, this just calls <see cref="Unregister"/> instead.
|
||||
/// </remarks>
|
||||
/// <param name="listener">The listener to register or update.</param>
|
||||
public void Register(ICommandHookListener listener)
|
||||
public static void Register(ICommandHookListener listener)
|
||||
{
|
||||
if (Instance == null)
|
||||
return;
|
||||
|
||||
var commands = listener.Commands;
|
||||
|
||||
if (commands == null || commands.Count == 0)
|
||||
@@ -73,6 +77,7 @@ public class CommandHookModSystem : ModSystem
|
||||
return;
|
||||
}
|
||||
|
||||
var listeners = Instance.listeners;
|
||||
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
||||
|
||||
bool changed = false;
|
||||
@@ -88,7 +93,7 @@ public class CommandHookModSystem : ModSystem
|
||||
}
|
||||
|
||||
if (changed)
|
||||
Rebuild();
|
||||
Instance.Rebuild();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -96,15 +101,19 @@ public class CommandHookModSystem : ModSystem
|
||||
/// that was never registered, this is a no-op in that case.
|
||||
/// </summary>
|
||||
/// <param name="listener">The listener to remove, matched by <see cref="ICommandHookListener.ModId"/>.</param>
|
||||
public void Unregister(ICommandHookListener listener)
|
||||
public static void Unregister(ICommandHookListener listener)
|
||||
{
|
||||
if (Instance == null)
|
||||
return;
|
||||
|
||||
var listeners = Instance.listeners;
|
||||
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
||||
|
||||
if (index < 0)
|
||||
return;
|
||||
|
||||
listeners.RemoveAt(index);
|
||||
Rebuild();
|
||||
Instance.Rebuild();
|
||||
}
|
||||
|
||||
// Rebuilds the dispatch table from listeners. Runs unconditionally and
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"authors": [
|
||||
"anth64"
|
||||
],
|
||||
"version": "2.0.0",
|
||||
"version": "2.1.0",
|
||||
"side": "Server",
|
||||
"dependencies": {
|
||||
"game": "1.22.3"
|
||||
|
||||
Reference in New Issue
Block a user