refactor(api)make Register/Unregister static, hide Instance

This commit is contained in:
2026-06-28 15:33:58 +02:00
parent a2ea0c4174
commit f57a16f5cc
2 changed files with 15 additions and 6 deletions
+14 -5
View File
@@ -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
+1 -1
View File
@@ -6,7 +6,7 @@
"authors": [
"anth64"
],
"version": "2.0.0",
"version": "2.1.0",
"side": "Server",
"dependencies": {
"game": "1.22.3"