in g_syscalls.h
qboolean trap_EntityContact( vec3_t mins, vec3_t maxs, edict_t *ent );

in g_public.h (in game_import_t)
qboolean	(*EntityContact)( vec3_t mins, vec3_t maxs, edict_t *ent );

in g_syscalls.c
qboolean trap_EntityContact( vec3_t mins, vec3_t maxs, edict_t *ent ) {
	return gi.EntityContact( mins, maxs, ent );
}
in sv_world.c
qboolean SV_EntityContact( vec3_t mins, vec3_t maxs, edict_t *ent ) 
{
	struct cmodel_s *cmodel;
	trace_t  trace;

	if (!mins)
		mins = vec3_origin;
	if (!maxs)
		maxs = vec3_origin;

	cmodel = SV_HullForTrigger (ent);

	CM_TransformedBoxTrace (&trace, vec3_origin, vec3_origin,
	mins, maxs, cmodel, MASK_ALL,
	ent->s.origin, ent->s.angles);

	if (trace.allsolid )
		return qtrue;

	if (trace.startsolid)
		return qtrue;

	if (ent->r.contents == CONTENTS_TRIGGER && ent->s.istrigger)
		return qtrue;

	return qfalse;

}

in sv_game.c
import.EntityContact = SV_EntityContact;

in server.h
qboolean SV_EntityContact( vec3_t mins, vec3_t maxs, edict_t *ent );