diff --git a/src/d_clisrv.h b/src/d_clisrv.h
index 5bd5e5d980bf20b9e1353ceb28daa342d1327c64..408d0f8ddd5f821c7c87d3c23e1fab7a71f60bc9 100644
--- a/src/d_clisrv.h
+++ b/src/d_clisrv.h
@@ -27,7 +27,7 @@ This version is independent of the mod name, and standard
 version and subversion. It should only account for the
 basic fields of the packet, and change infrequently.
 */
-#define PACKETVERSION 1
+#define PACKETVERSION 2
 
 // Network play related stuff.
 // There is a data struct that stores network
@@ -366,7 +366,6 @@ typedef struct
 	UINT8 cheatsenabled;
 	UINT8 isdedicated;
 	UINT8 fileneedednum;
-	SINT8 adminplayer;
 	tic_t time;
 	tic_t leveltime;
 	char servername[MAXSERVERNAME];
diff --git a/src/lua_script.c b/src/lua_script.c
index eb1afaf09ffc3fb9f6abc8305098be7908669456..2538fb7115271d32e5440851e601d20561328a7e 100644
--- a/src/lua_script.c
+++ b/src/lua_script.c
@@ -274,12 +274,6 @@ int LUA_PushGlobals(lua_State *L, const char *word)
 			return 0;
 		LUA_PushUserdata(L, &players[serverplayer], META_PLAYER);
 		return 1;
-	} else if (fastcmp(word,"admin")) { // BACKWARDS COMPATIBILITY HACK: This was replaced with IsPlayerAdmin(), but some 2.1 Lua scripts still use the admin variable. It now points to the first admin player in the array.
-		LUA_Deprecated(L, "admin", "IsPlayerAdmin(player)");
-		if (!playeringame[adminplayers[0]] || IsPlayerAdmin(serverplayer))
-			return 0;
-		LUA_PushUserdata(L, &players[adminplayers[0]], META_PLAYER);
-		return 1;
 	} else if (fastcmp(word,"emeralds")) {
 		lua_pushinteger(L, emeralds);
 		return 1;