Skip to content

Commit 7abb724

Browse files
authored
fix: Command events fix (#444)
command fixes
1 parent 478df81 commit 7abb724

File tree

2 files changed

+54
-53
lines changed

2 files changed

+54
-53
lines changed

EXILED/Exiled.Events/Patches/Events/Player/SendingValidGameConsoleCommand.cs

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
4545
LocalBuilder ev = generator.DeclareLocal(typeof(SendingValidCommandEventArgs));
4646

4747
int offset = 2;
48-
int index = newInstructions.FindIndex(instruction => instruction.Calls(Method(typeof(ClientCommandHandler), nameof(ClientCommandHandler.TryGetCommand)))) + offset;
48+
int index = newInstructions.FindIndex(instruction => instruction.Calls(Method(typeof(CommandHandler), nameof(CommandHandler.TryGetCommand)))) + offset;
4949
Label contlabel = generator.DefineLabel();
5050

5151
offset = -6;
@@ -57,110 +57,111 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
5757

5858
newInstructions.InsertRange(
5959
index,
60-
new CodeInstruction[]
60+
new[]
6161
{
6262
// this
63-
new CodeInstruction(OpCodes.Ldarg_0),
63+
new(OpCodes.Ldarg_0),
6464

6565
// this._hub
66-
new CodeInstruction(OpCodes.Ldfld, Field(typeof(QueryProcessor), nameof(QueryProcessor._hub))),
66+
new(OpCodes.Ldfld, Field(typeof(QueryProcessor), nameof(QueryProcessor._hub))),
6767

6868
// Player.Get(Hub)
69-
new CodeInstruction(OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new Type[] { typeof(ReferenceHub) })),
69+
new(OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new[] { typeof(ReferenceHub) })),
7070

7171
// command
72-
new (OpCodes.Ldloc_S, 1),
72+
new (OpCodes.Ldloc_S, 4),
7373

7474
// commandtype client
75-
new CodeInstruction(OpCodes.Ldc_I4_2),
75+
new(OpCodes.Ldc_I4_2),
7676

7777
// query
78-
new CodeInstruction(OpCodes.Ldarg_1),
78+
new(OpCodes.Ldarg_1),
7979

8080
// response
81-
new CodeInstruction(OpCodes.Ldloc_S, 3),
81+
new(OpCodes.Ldloc_S, 6),
8282

8383
// new SendingValidCommandEventArgs
84-
new CodeInstruction(OpCodes.Newobj, GetDeclaredConstructors(typeof(SendingValidCommandEventArgs))[0]),
85-
new CodeInstruction(OpCodes.Dup),
86-
new CodeInstruction(OpCodes.Stloc_S, ev.LocalIndex),
84+
new(OpCodes.Newobj, GetDeclaredConstructors(typeof(SendingValidCommandEventArgs))[0]),
85+
new(OpCodes.Dup),
86+
new(OpCodes.Stloc_S, ev.LocalIndex),
8787

8888
// OnSendingValidCommad(ev)
89-
new CodeInstruction(OpCodes.Call, Method(typeof(Handlers.Player), nameof(Handlers.Player.OnSendingValidCommand))),
89+
new(OpCodes.Call, Method(typeof(Handlers.Player), nameof(Handlers.Player.OnSendingValidCommand))),
9090

9191
// if ev.IsAllowed cont
92-
new CodeInstruction(OpCodes.Ldloc_S, ev.LocalIndex),
93-
new CodeInstruction(OpCodes.Callvirt, PropertyGetter(typeof(SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.IsAllowed))),
94-
new CodeInstruction(OpCodes.Brtrue_S, contlabel),
92+
new(OpCodes.Ldloc_S, ev.LocalIndex),
93+
new(OpCodes.Callvirt, PropertyGetter(typeof(SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.IsAllowed))),
94+
new(OpCodes.Brtrue_S, contlabel),
9595

9696
// if ev.Response.IsNullOrEmpty rets
97-
new CodeInstruction(OpCodes.Ldloc_S, ev.LocalIndex),
98-
new CodeInstruction(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
99-
new CodeInstruction(OpCodes.Call, Method(typeof(string), nameof(string.IsNullOrEmpty))),
100-
new CodeInstruction(OpCodes.Brtrue_S, setproperresp),
97+
new(OpCodes.Ldloc_S, ev.LocalIndex),
98+
new(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
99+
new(OpCodes.Call, Method(typeof(string), nameof(string.IsNullOrEmpty))),
100+
new(OpCodes.Brtrue_S, setproperresp),
101101

102102
// response = ev.Response
103-
new CodeInstruction(OpCodes.Ldloc_S, ev.LocalIndex),
104-
new CodeInstruction(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
105-
new CodeInstruction(OpCodes.Stloc_S, 3),
103+
new(OpCodes.Ldloc_S, ev.LocalIndex),
104+
new(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
105+
new(OpCodes.Stloc_S, 6),
106106

107107
// goto sendreply
108-
new CodeInstruction(OpCodes.Br, sendreply),
108+
new(OpCodes.Br, sendreply),
109109

110110
// response = "The Command Execution Was Prevented By Plugin."
111111
new CodeInstruction(OpCodes.Ldstr, "The Command Execution Was Prevented By Plugin.").WithLabels(setproperresp),
112-
new CodeInstruction(OpCodes.Stloc_S, 3),
113-
new CodeInstruction(OpCodes.Br, sendreply),
112+
new(OpCodes.Stloc_S, 6),
113+
new(OpCodes.Br, sendreply),
114114
});
115115

116-
offset = -3;
117-
index = newInstructions.FindIndex(instruction => instruction.opcode == OpCodes.Ldstr && (string)instruction.operand == "magenta") + offset;
116+
offset = 2;
117+
index = newInstructions.FindIndex(instruction => instruction.Calls(Method(typeof(Misc), nameof(Misc.CloseAllRichTextTags)))) + offset;
118118
Label skip = generator.DefineLabel();
119119
newInstructions[index].WithLabels(skip);
120120
newInstructions.InsertRange(
121121
index,
122122
new CodeInstruction[]
123123
{
124124
// if ev.Response.IsNullOrEmpty skip
125-
new CodeInstruction(OpCodes.Ldloc_S, ev.LocalIndex),
126-
new CodeInstruction(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
127-
new CodeInstruction(OpCodes.Call, Method(typeof(string), nameof(string.IsNullOrEmpty))),
128-
new CodeInstruction(OpCodes.Brtrue_S, skip),
125+
new(OpCodes.Ldloc_S, ev.LocalIndex),
126+
new(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
127+
new(OpCodes.Call, Method(typeof(string), nameof(string.IsNullOrEmpty))),
128+
new(OpCodes.Brtrue_S, skip),
129129

130130
// response = ev.Response
131-
new CodeInstruction(OpCodes.Ldloc_S, ev.LocalIndex),
132-
new CodeInstruction(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
133-
new CodeInstruction(OpCodes.Stloc_S, 3),
131+
new(OpCodes.Ldloc_S, ev.LocalIndex),
132+
new(OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
133+
new(OpCodes.Stloc_S, 6),
134134
});
135-
offset = 0;
135+
136+
offset = 1;
136137
index = newInstructions.FindIndex(instrction => instrction.Calls(Method(typeof(GameConsoleTransmission), nameof(GameConsoleTransmission.SendToClient)))) + offset;
137138
newInstructions.InsertRange(
138139
index,
139140
new CodeInstruction[]
140141
{
141142
// this
142-
new CodeInstruction(OpCodes.Ldarg_0),
143+
new(OpCodes.Ldarg_0),
143144

144145
// this._hub
145-
new CodeInstruction(OpCodes.Ldfld, Field(typeof(QueryProcessor), nameof(QueryProcessor._hub))),
146+
new(OpCodes.Ldfld, Field(typeof(QueryProcessor), nameof(QueryProcessor._hub))),
146147

147148
// Player.Get(Hub)
148-
new CodeInstruction(OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new Type[] { typeof(ReferenceHub) })),
149+
new(OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new Type[] { typeof(ReferenceHub) })),
149150

150151
// command
151-
new CodeInstruction(OpCodes.Ldloc_1),
152+
new(OpCodes.Ldloc_1),
152153

153154
// commandtype CLIENT
154-
new CodeInstruction(OpCodes.Ldc_I4_2),
155+
new(OpCodes.Ldc_I4_2),
155156

156157
// query
157-
new CodeInstruction(OpCodes.Ldarg_1),
158+
new(OpCodes.Ldarg_1),
158159

159160
// response
160-
new CodeInstruction(OpCodes.Ldloc_S, 3),
161+
new(OpCodes.Ldloc_S, 6),
161162

162163
// result
163-
new (OpCodes.Ldloc_S, 2),
164+
new (OpCodes.Ldloc_S, 7),
164165

165166
// new SentValidCommandEventArgs
166167
new (OpCodes.Newobj, GetDeclaredConstructors(typeof(SentValidCommandEventArgs))[0]),

EXILED/Exiled.Events/Patches/Events/Player/SendingValidRACommand.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
6464
new (OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new Type[] { typeof(CommandSender) })),
6565

6666
// command
67-
new (OpCodes.Ldloc_1),
67+
new (OpCodes.Ldloc_2),
6868

6969
// commandtype
7070
new (OpCodes.Ldc_I4_4),
@@ -73,7 +73,7 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
7373
new (OpCodes.Ldarg_0),
7474

7575
// response
76-
new (OpCodes.Ldloc_S, 6),
76+
new (OpCodes.Ldloc_S, 9),
7777

7878
// new SendingValidCommandEventArgs
7979
new (OpCodes.Newobj, GetDeclaredConstructors(typeof(SendingValidCommandEventArgs))[0]),
@@ -97,14 +97,14 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
9797
// response = ev.Response
9898
new (OpCodes.Ldloc_S, ev.LocalIndex),
9999
new (OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
100-
new (OpCodes.Stloc_S, 6),
100+
new (OpCodes.Stloc_S, 9),
101101

102102
// goto sendreply
103103
new (OpCodes.Br, sendreply),
104104

105105
// response = "The Command Execution Was Prevented By Plugin."
106106
new CodeInstruction(OpCodes.Ldstr, "The Command Execution Was Prevented By Plugin.").WithLabels(setptroperresp),
107-
new (OpCodes.Stloc_S, 6),
107+
new (OpCodes.Stloc_S, 9),
108108
new (OpCodes.Br, sendreply),
109109
});
110110
offset = -4;
@@ -124,10 +124,10 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
124124
// response = ev.Response
125125
new (OpCodes.Ldloc_S, ev.LocalIndex),
126126
new (OpCodes.Callvirt, PropertyGetter(typeof (SendingValidCommandEventArgs), nameof(SendingValidCommandEventArgs.Response))),
127-
new (OpCodes.Stloc_S, 6),
127+
new (OpCodes.Stloc_S, 9),
128128
});
129129

130-
offset = 0;
130+
offset = 1;
131131
index = newInstructions.FindIndex(instrction => instrction.Calls(Method(typeof(CommandSender), nameof(CommandSender.RaReply)))) + offset;
132132
newInstructions.InsertRange(
133133
index,
@@ -140,7 +140,7 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
140140
new (OpCodes.Call, Method(typeof(Player), nameof(Player.Get), new Type[] { typeof(CommandSender) })),
141141

142142
// command
143-
new (OpCodes.Ldloc_1),
143+
new (OpCodes.Ldloc_2),
144144

145145
// commandtype
146146
new (OpCodes.Ldc_I4_4),
@@ -149,10 +149,10 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
149149
new (OpCodes.Ldarg_0),
150150

151151
// response
152-
new (OpCodes.Ldloc_S, 6),
152+
new (OpCodes.Ldloc_S, 9),
153153

154154
// result
155-
new (OpCodes.Ldloc_S, 5),
155+
new (OpCodes.Ldloc_S, 8),
156156

157157
// new SentValidCommandEventArgs
158158
new (OpCodes.Newobj, GetDeclaredConstructors(typeof(SentValidCommandEventArgs))[0]),

0 commit comments

Comments
 (0)