Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0dcd599cf | ||
|
|
a130042206 |
@@ -25,7 +25,7 @@ public static class ChatCommandApiPatch
|
||||
return true;
|
||||
|
||||
var sender = args.Caller.Player as IServerPlayer;
|
||||
var data = new CommandData(sender, "/" + commandName);
|
||||
var data = new CommandData(sender, commandName, "/" + commandName);
|
||||
|
||||
if (system.FireBefore(commandName, ref data))
|
||||
{
|
||||
|
||||
@@ -19,11 +19,11 @@ public struct CommandData
|
||||
set => flags = value ? (byte)(flags | FlagCancel) : (byte)(flags & ~FlagCancel);
|
||||
}
|
||||
|
||||
public CommandData(IServerPlayer? sender, string fullCommand)
|
||||
public CommandData(IServerPlayer? sender, string commandName, string fullCommand)
|
||||
{
|
||||
Sender = sender;
|
||||
FullCommand = fullCommand.Length > 0 ? fullCommand.Trim() : string.Empty;
|
||||
CommandName = FullCommand.Length > 1 ? FullCommand[1..].Split(' ')[0] : string.Empty;
|
||||
CommandName = commandName;
|
||||
FullCommand = fullCommand;
|
||||
flags = sender != null ? FlagIsPlayerCommand : (byte)0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,8 +109,8 @@ public class CommandHookModSystem : ModSystem
|
||||
}
|
||||
|
||||
foreach (var wildcard in wildcards)
|
||||
foreach (var mods in builder.Values)
|
||||
mods[wildcard.ModId] = wildcard.Registration;
|
||||
foreach (var mods in builder.Values)
|
||||
mods[wildcard.ModId] = wildcard.Registration;
|
||||
|
||||
var pruned = new Dictionary<string, FrozenDictionary<string, CommandRegistration>>(
|
||||
builder.Count
|
||||
@@ -125,8 +125,14 @@ public class CommandHookModSystem : ModSystem
|
||||
internal bool FireBefore(string commandName, ref CommandData data)
|
||||
{
|
||||
if (registrations.TryGetValue(commandName, out var mods))
|
||||
{
|
||||
foreach (var (_, reg) in mods)
|
||||
{
|
||||
reg.Before?.Invoke(ref data);
|
||||
if (data.Cancel)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return data.Cancel;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
"modid": "commandhook",
|
||||
"name": "CommandHook",
|
||||
"description": "Exposes server command events for other mods to hook into.",
|
||||
"authors": ["anth64"],
|
||||
"authors": [
|
||||
"anth64"
|
||||
],
|
||||
"version": "0.1.0",
|
||||
"side": "Server",
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user