Index: binary-improvements/assembly-patcher/Assembly-Patcher.userprefs
===================================================================
--- binary-improvements/assembly-patcher/Assembly-Patcher.userprefs	(revision 83)
+++ binary-improvements/assembly-patcher/Assembly-Patcher.userprefs	(revision 84)
@@ -3,7 +3,18 @@
   <MonoDevelop.Ide.Workbench ActiveDocument="Main.cs">
     <Files>
-      <File FileName="Main.cs" Line="48" Column="3" />
+      <File FileName="Main.cs" Line="29" Column="54" />
       <File FileName="AssemblyInfo.cs" Line="21" Column="1" />
     </Files>
+    <Pads>
+      <Pad Id="ProjectPad">
+        <State expanded="True">
+          <Node name="Assembly-Patcher" expanded="True">
+            <Node name="References" expanded="True">
+              <Node name="/home/ci/Schreibtisch/7dtd-svn/binary-improvements/7dtd-server-fixes/bin/Release/7dtd-server-fixes.dll" selected="True" />
+            </Node>
+          </Node>
+        </State>
+      </Pad>
+    </Pads>
   </MonoDevelop.Ide.Workbench>
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
Index: binary-improvements/assembly-patcher/Main.cs
===================================================================
--- binary-improvements/assembly-patcher/Main.cs	(revision 83)
+++ binary-improvements/assembly-patcher/Main.cs	(revision 84)
@@ -14,6 +14,19 @@
 			connectLogPatch (module);
 			executionLogPatch( module);
+			publicCommandPermissionsPatch (module);
 			module.Write ("Assembly-CSharp.dll");
 			Console.WriteLine ("Done");
+		}
+
+		private static void publicCommandPermissionsPatch (ModuleDefinition module)
+		{
+			TypeDefinition type = module.GetType ("AdminTools");
+
+			if (isPatched (type)) {
+				return;
+			}
+
+			markTypePatched (module, type);
+			replaceMethod (type, "GetAllowedCommandsList", true, 1, typeof(AdminToolsStuff).GetMethod ("GetAllowedCommandsList"));
 		}
 
@@ -51,8 +64,8 @@
 
 			markTypePatched (module, type);
-			replaceMethod (type, ".ctor", 1, typeof(AllocsNetTelnetServer).GetMethod ("init"));
-			replaceMethod (type, "Disconnect", 0, typeof(AllocsNetTelnetServer).GetMethod ("Disconnect"));
-			replaceMethod (type, "SetConsole", 1, typeof(AllocsNetTelnetServer).GetMethod ("SetConsole"));
-			replaceMethod (type, "WriteToClient", 1, typeof(AllocsNetTelnetServer).GetMethod ("WriteToClient"));
+			replaceMethod (type, ".ctor", false, 1, typeof(AllocsNetTelnetServer).GetMethod ("init"));
+			replaceMethod (type, "Disconnect", false, 0, typeof(AllocsNetTelnetServer).GetMethod ("Disconnect"));
+			replaceMethod (type, "SetConsole", false, 1, typeof(AllocsNetTelnetServer).GetMethod ("SetConsole"));
+			replaceMethod (type, "WriteToClient", false, 1, typeof(AllocsNetTelnetServer).GetMethod ("WriteToClient"));
 		}
 
@@ -92,5 +105,5 @@
 		}
 
-		private static void replaceMethod (TypeDefinition type, string methodName, int opCount, MethodBase targetMethod)
+		private static void replaceMethod (TypeDefinition type, string methodName, bool addThisRef, int opCount, MethodBase targetMethod)
 		{
 			foreach (MethodDefinition method in type.Methods) {
@@ -100,4 +113,6 @@
 					var call = il.Create (OpCodes.Call, method.Module.Import (targetMethod));
 					var i = 0;
+					if (addThisRef)
+						il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, 0));
 					for (int op = 0; op < opCount; op++) {
 						il.InsertBefore (method.Body.Instructions [i++], il.Create (OpCodes.Ldarg, op + 1));
